Changeset e9d15d9 in mainline for uspace/drv/char


Ignore:
Timestamp:
2017-08-18T21:15:26Z (9 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
24abb85d
Parents:
1c85bae
Message:

Turn IRQ structures into kernel objects

ipc_irq_subscribe() now returns a capability for the underlying IRQ kernel
object. ipc_irq_unsubscribe() can now be done only with a valid IRQ capability.

Location:
uspace/drv/char
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/char/i8042/i8042.c

    r1c85bae re9d15d9  
    269269        };
    270270       
    271         rc = register_interrupt_handler(ddf_dev, irq_kbd, i8042_irq_handler,
    272             &irq_code);
    273         if (rc != EOK) {
     271        const int irq_kbd_cap = register_interrupt_handler(ddf_dev, irq_kbd,
     272            i8042_irq_handler, &irq_code);
     273        if (irq_kbd_cap < 0) {
     274                rc = irq_kbd_cap;
    274275                ddf_msg(LVL_ERROR, "Failed set handler for kbd: %s.",
    275276                    ddf_dev_get_name(ddf_dev));
     
    277278        }
    278279       
    279         rc = register_interrupt_handler(ddf_dev, irq_mouse, i8042_irq_handler,
    280             &irq_code);
    281         if (rc != EOK) {
     280        const int irq_mouse_cap = register_interrupt_handler(ddf_dev, irq_mouse,
     281            i8042_irq_handler, &irq_code);
     282        if (irq_mouse_cap < 0) {
     283                rc = irq_mouse_cap;
    282284                ddf_msg(LVL_ERROR, "Failed set handler for mouse: %s.",
    283285                    ddf_dev_get_name(ddf_dev));
  • uspace/drv/char/ns8250/ns8250.c

    r1c85bae re9d15d9  
    160160        /** The irq assigned to this device. */
    161161        int irq;
     162        /** IRQ capability */
     163        int irq_cap;
    162164        /** The base i/o address of the devices registers. */
    163165        uintptr_t io_addr;
     
    797799static inline int ns8250_unregister_interrupt_handler(ns8250_t *ns)
    798800{
    799         return unregister_interrupt_handler(ns->dev, ns->irq);
     801        return unregister_interrupt_handler(ns->dev, ns->irq_cap);
    800802}
    801803
     
    849851       
    850852        /* Register interrupt handler. */
    851         if (ns8250_register_interrupt_handler(ns) != EOK) {
     853        ns->irq_cap = ns8250_register_interrupt_handler(ns);
     854        if (ns->irq_cap < 0) {
    852855                ddf_msg(LVL_ERROR, "Failed to register interrupt handler.");
    853856                rc = EADDRNOTAVAIL;
  • uspace/drv/char/pl050/pl050.c

    r1c85bae re9d15d9  
    212212        pl050->regs = regs;
    213213
    214         rc = register_interrupt_handler(pl050->dev, res.irqs.irqs[0],
    215             pl050_interrupt, &pl050_irq_code);
    216         if (rc != EOK) {
     214        const int irq_cap = register_interrupt_handler(pl050->dev,
     215            res.irqs.irqs[0], pl050_interrupt, &pl050_irq_code);
     216        if (irq_cap < 0) {
     217                rc = irq_cap;
    217218                ddf_msg(LVL_ERROR, "Failed registering interrupt handler. (%d)",
    218219                    rc);
Note: See TracChangeset for help on using the changeset viewer.