Changes in kernel/generic/src/ddi/irq.c [0db0df2:455241b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ddi/irq.c
r0db0df2 r455241b 50 50 #include <arch.h> 51 51 52 slab_cache_t *irq_cache = NULL;53 54 52 /** Spinlock protecting the kernel IRQ hash table 55 53 * … … 75 73 static size_t irq_ht_key_hash(const void *); 76 74 static 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 *);75 static bool irq_ht_key_equal(const void *, const ht_link_t *); 78 76 79 77 static const hash_table_ops_t irq_ht_ops = { … … 97 95 last_inr = inrs - 1; 98 96 99 irq_cache = slab_cache_create("irq_t", sizeof(irq_t), 0, NULL, NULL,100 FRAME_ATOMIC);101 assert(irq_cache);102 103 97 hash_table_create(&irq_uspace_hash_table, chains, 0, &irq_ht_ops); 104 98 hash_table_create(&irq_kernel_hash_table, chains, 0, &irq_ht_ops); … … 141 135 { 142 136 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); 145 141 irq_spinlock_lock(&irq->lock, false); 146 142 if (irq->claim(irq) == IRQ_ACCEPT) { … … 151 147 irq_spinlock_unlock(&irq->lock, false); 152 148 } 153 154 149 irq_spinlock_unlock(l, false); 155 150 … … 222 217 223 218 /** 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)219 bool irq_ht_key_equal(const void *key, const ht_link_t *item) 225 220 { 226 221 const inr_t *inr = key;
Note:
See TracChangeset
for help on using the changeset viewer.