Ignore:
File:
1 edited

Legend:

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

    r455241b r0db0df2  
    5050#include <arch.h>
    5151
     52slab_cache_t *irq_cache = NULL;
     53
    5254/** Spinlock protecting the kernel IRQ hash table
    5355 *
     
    7375static size_t irq_ht_key_hash(const void *);
    7476static bool irq_ht_equal(const ht_link_t *, const ht_link_t *);
    75 static bool irq_ht_key_equal(const void *, const ht_link_t *);
     77static bool irq_ht_key_equal(const void *, size_t, const ht_link_t *);
    7678
    7779static const hash_table_ops_t irq_ht_ops = {
     
    9597        last_inr = inrs - 1;
    9698
     99        irq_cache = slab_cache_create("irq_t", sizeof(irq_t), 0, NULL, NULL,
     100            FRAME_ATOMIC);
     101        assert(irq_cache);
     102
    97103        hash_table_create(&irq_uspace_hash_table, chains, 0, &irq_ht_ops);
    98104        hash_table_create(&irq_kernel_hash_table, chains, 0, &irq_ht_ops);
     
    135141{
    136142        irq_spinlock_lock(l, false);
    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);
     143
     144        hash_table_foreach(h, &inr, link, irq_t, irq) {
    141145                irq_spinlock_lock(&irq->lock, false);
    142146                if (irq->claim(irq) == IRQ_ACCEPT) {
     
    147151                irq_spinlock_unlock(&irq->lock, false);
    148152        }
     153
    149154        irq_spinlock_unlock(l, false);
    150155
     
    217222
    218223/** Return true if the key is equal to the item's lookup key. */
    219 bool irq_ht_key_equal(const void *key, const ht_link_t *item)
     224bool irq_ht_key_equal(const void *key, size_t hash, const ht_link_t *item)
    220225{
    221226        const inr_t *inr = key;
Note: See TracChangeset for help on using the changeset viewer.