Ignore:
File:
1 edited

Legend:

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

    r111b9b9 r455241b  
    295295}
    296296
    297 static void irq_destroy(void *arg)
    298 {
    299         irq_t *irq = (irq_t *) arg;
    300 
    301         irq_hash_out(irq);
     297static void irq_destroy(kobject_t *arg)
     298{
     299        irq_kobject_t *kobj = (irq_kobject_t *) arg;
     300
     301        irq_hash_out(&kobj->irq);
    302302
    303303        /* Free up the IRQ code and associated structures. */
    304         code_free(irq->notif_cfg.code);
    305         slab_free(irq_cache, irq);
     304        code_free(kobj->irq.notif_cfg.code);
     305        slab_free(irq_cache, kobj);
    306306}
    307307
     
    350350        }
    351351
    352         irq_t *irq = (irq_t *) slab_alloc(irq_cache, FRAME_ATOMIC);
    353         if (!irq) {
     352        irq_kobject_t *kobj = slab_alloc(irq_cache, FRAME_ATOMIC);
     353        if (!kobj) {
    354354                cap_free(TASK, handle);
    355355                return ENOMEM;
    356356        }
    357357
    358         kobject_t *kobject = kobject_alloc(FRAME_ATOMIC);
    359         if (!kobject) {
    360                 cap_free(TASK, handle);
    361                 slab_free(irq_cache, irq);
    362                 return ENOMEM;
    363         }
     358        kobject_initialize(&kobj->kobject, KOBJECT_TYPE_IRQ);
     359
     360        irq_t *irq = &kobj->irq;
    364361
    365362        irq_initialize(irq);
     
    385382        irq_spinlock_unlock(&irq_uspace_hash_table_lock, true);
    386383
    387         kobject_initialize(kobject, KOBJECT_TYPE_IRQ, irq);
    388         cap_publish(TASK, handle, kobject);
     384        cap_publish(TASK, handle, &kobj->kobject);
    389385
    390386        return EOK;
     
    405401                return ENOENT;
    406402
    407         assert(kobj->irq->notif_cfg.answerbox == box);
    408 
    409         irq_hash_out(kobj->irq);
     403        assert(irq_from_kobject(kobj)->notif_cfg.answerbox == box);
     404
     405        irq_hash_out(irq_from_kobject(kobj));
    410406
    411407        kobject_put(kobj);
Note: See TracChangeset for help on using the changeset viewer.