Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ddi/irq.c

    r0db0df2 r455241b  
    5050#include <arch.h>
    5151
    52 slab_cache_t *irq_cache = NULL;
    53 
    5452/** Spinlock protecting the kernel IRQ hash table
    5553 *
     
    7573static size_t irq_ht_key_hash(const void *);
    7674static bool irq_ht_equal(const ht_link_t *, const ht_link_t *);
    77 static bool irq_ht_key_equal(const void *, size_t, const ht_link_t *);
     75static bool irq_ht_key_equal(const void *, const ht_link_t *);
    7876
    7977static const hash_table_ops_t irq_ht_ops = {
     
    9795        last_inr = inrs - 1;
    9896
    99         irq_cache = slab_cache_create("irq_t", sizeof(irq_t), 0, NULL, NULL,
    100             FRAME_ATOMIC);
    101         assert(irq_cache);
    102 
    10397        hash_table_create(&irq_uspace_hash_table, chains, 0, &irq_ht_ops);
    10498        hash_table_create(&irq_kernel_hash_table, chains, 0, &irq_ht_ops);
     
    141135{
    142136        irq_spinlock_lock(l, false);
    143 
    144         hash_table_foreach(h, &inr, link, irq_t, irq) {
     137        ht_link_t *first = hash_table_find(h, &inr);
     138        for (ht_link_t *lnk = first; lnk;
     139            lnk = hash_table_find_next(h, first, lnk)) {
     140                irq_t *irq = hash_table_get_inst(lnk, irq_t, link);
    145141                irq_spinlock_lock(&irq->lock, false);
    146142                if (irq->claim(irq) == IRQ_ACCEPT) {
     
    151147                irq_spinlock_unlock(&irq->lock, false);
    152148        }
    153 
    154149        irq_spinlock_unlock(l, false);
    155150
     
    222217
    223218/** Return true if the key is equal to the item's lookup key. */
    224 bool irq_ht_key_equal(const void *key, size_t hash, const ht_link_t *item)
     219bool irq_ht_key_equal(const void *key, const ht_link_t *item)
    225220{
    226221        const inr_t *inr = key;
Note: See TracChangeset for help on using the changeset viewer.