Changeset 7edfde9 in mainline


Ignore:
Timestamp:
2015-05-13T02:22:50Z (10 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0683992
Parents:
6d81e1e
Message:

fix the device driver regressions in a generic way
therefore the previous fix (revision 2329) can be reverted
the root cause of the regression was a forgotten fallback to default_ucode that disappeared in the refactoring of revision 2170 (mea culpa)

Location:
uspace
Files:
3 edited

Legend:

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

    r6d81e1e r7edfde9  
    175175        bool removed;
    176176} ns8250_t;
    177 
    178 static irq_cmd_t ns8250_irq_cmds[] = {
    179         { .cmd = CMD_ACCEPT }
    180 };
    181 
    182 static irq_code_t ns8250_irq_code = {
    183         .rangecount = 0,
    184         .cmdcount = sizeof(ns8250_irq_cmds) / sizeof(irq_cmd_t),
    185         .cmds = ns8250_irq_cmds
    186 };
    187177
    188178/** Obtain soft-state structure from device node */
     
    793783}
    794784
    795 
    796 
    797785/** Register the interrupt handler for the device.
    798786 *
     
    802790{
    803791        return register_interrupt_handler(ns->dev, ns->irq,
    804             ns8250_interrupt_handler, &ns8250_irq_code);
     792            ns8250_interrupt_handler, NULL);
    805793}
    806794
  • uspace/lib/c/generic/irq.c

    r6d81e1e r7edfde9  
    3535#include <ipc/irq.h>
    3636#include <libc.h>
     37#include <stdlib.h>
     38#include <macros.h>
     39
     40static irq_cmd_t default_cmds[] = {
     41        {
     42                .cmd = CMD_ACCEPT
     43        }
     44};
     45
     46static const irq_code_t default_ucode = {
     47        0,
     48        NULL,
     49        ARRAY_SIZE(default_cmds),
     50        default_cmds
     51};
    3752
    3853/** Subscribe to IRQ notification.
     
    4964    const irq_code_t *ucode)
    5065{
     66        if (ucode == NULL)
     67                ucode = &default_ucode;
     68       
    5169        return __SYSCALL4(SYS_IPC_IRQ_SUBSCRIBE, inr, devno, method,
    5270            (sysarg_t) ucode);
  • uspace/lib/drv/generic/interrupt.c

    r6d81e1e r7edfde9  
    4444#include "private/driver.h"
    4545
    46 static irq_cmd_t default_cmds[] = {
    47         {
    48                 .cmd = CMD_ACCEPT
    49         }
    50 };
    51 
    52 static const irq_code_t default_pseudocode = {
    53         0,
    54         NULL,
    55         ARRAY_SIZE(default_cmds),
    56         default_cmds
    57 };
    58 
    5946int register_interrupt_handler(ddf_dev_t *dev, int irq,
    6047    interrupt_handler_t *handler, const irq_code_t *pseudocode)
Note: See TracChangeset for help on using the changeset viewer.