Changeset 8820544 in mainline for kernel/generic/src/ipc/irq.c


Ignore:
Timestamp:
2014-08-16T00:02:04Z (10 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
35b8bfe, 8cd680c
Parents:
83f29e0
Message:

support for kernel notification multiplexing in the async framework

  • rename SYS_EVENT_* and SYS_IRQ_* syscalls to unify the terminology
  • add SYS_IPC_EVENT_UNSUBSCRIBE
  • remove IRQ handler multiplexing from DDF, the generic mechanism replaces it (unfortunatelly the order of arguments used by interrupt_handler_t needs to be permutated to align with the async framework conventions)
File:
1 edited

Legend:

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

    r83f29e0 r8820544  
    3636 * @brief IRQ notification framework.
    3737 *
    38  * This framework allows applications to register to receive a notification
     38 * This framework allows applications to subscribe to receive a notification
    3939 * when interrupt is detected. The application may provide a simple 'top-half'
    4040 * handler as part of its registration, which can perform simple operations
     
    4242 *
    4343 * The structure of a notification message is as follows:
    44  * - IMETHOD: interface and method as registered by
    45  *            the SYS_IRQ_REGISTER syscall
     44 * - IMETHOD: interface and method as set by the SYS_IPC_IRQ_SUBSCRIBE syscall
    4645 * - ARG1: payload modified by a 'top-half' handler (scratch[1])
    4746 * - ARG2: payload modified by a 'top-half' handler (scratch[2])
     
    5251 *                  in multithreaded drivers)
    5352 *
    54  * Note on synchronization for ipc_irq_register(), ipc_irq_unregister(),
     53 * Note on synchronization for ipc_irq_subscribe(), ipc_irq_unsubscribe(),
    5554 * ipc_irq_cleanup() and IRQ handlers:
    5655 *
     
    289288}
    290289
    291 /** Register an answerbox as a receiving end for IRQ notifications.
     290/** Subscribe an answerbox as a receiving end for IRQ notifications.
    292291 *
    293292 * @param box     Receiving answerbox.
     
    301300 *
    302301 */
    303 int ipc_irq_register(answerbox_t *box, inr_t inr, devno_t devno,
     302int ipc_irq_subscribe(answerbox_t *box, inr_t inr, devno_t devno,
    304303    sysarg_t imethod, irq_code_t *ucode)
    305304{
     
    369368}
    370369
    371 /** Unregister task from IRQ notification.
     370/** Unsubscribe task from IRQ notification.
    372371 *
    373372 * @param box   Answerbox associated with the notification.
     
    378377 *
    379378 */
    380 int ipc_irq_unregister(answerbox_t *box, inr_t inr, devno_t devno)
     379int ipc_irq_unsubscribe(answerbox_t *box, inr_t inr, devno_t devno)
    381380{
    382381        sysarg_t key[] = {
     
    432431 *
    433432 * This function is effective because the answerbox contains
    434  * list of all irq_t structures that are registered to
     433 * list of all irq_t structures that are subscribed to
    435434 * send notifications to it.
    436435 *
Note: See TracChangeset for help on using the changeset viewer.