diff options
Diffstat (limited to 'device/ds_routines.c')
-rw-r--r-- | device/ds_routines.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/device/ds_routines.c b/device/ds_routines.c index 9d399ee..7a5dda5 100644 --- a/device/ds_routines.c +++ b/device/ds_routines.c @@ -325,9 +325,7 @@ experimental_device_intr_register (ipc_port_t master_port, int line, #ifdef MACH_XEN return D_INVALID_OPERATION; #else /* MACH_XEN */ - extern int install_user_intr_handler (unsigned int line, - unsigned long flags, - ipc_port_t dest); + struct intr_entry *entry; io_return_t ret; /* Open must be called on the master device port. */ @@ -338,13 +336,13 @@ experimental_device_intr_register (ipc_port_t master_port, int line, if (line < 0 || line >= 16) return D_INVALID_OPERATION; - ret = insert_intr_entry (line, receive_port); + ret = insert_intr_entry (line, receive_port, &entry); if (ret) return ret; // TODO The original port should be replaced // when the same device driver calls it again, // in order to handle the case that the device driver crashes and restarts. - ret = install_user_intr_handler (line, flags, receive_port); + ret = install_user_intr_handler (line, flags, entry); /* If the port is installed successfully, increase its reference by 1. * Thus, the port won't be destroyed after its task is terminated. */ |