Changeset 2b017ba in mainline for kernel/generic/include/ipc


Ignore:
Timestamp:
2006-10-16T20:51:55Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5f9b4d9a
Parents:
e3890b3f
Message:

Replace the old IRQ dispatcher and IPC notifier with new implementation.
Note that all architectures except for sparc64 are now broken
and don't even compile.

Location:
kernel/generic/include/ipc
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ipc/ipc.h

    re3890b3f r2b017ba  
    156156#ifdef KERNEL
    157157
    158 #include <synch/mutex.h>
    159 #include <synch/condvar.h>
     158#include <synch/waitq.h>
    160159#include <adt/list.h>
    161160
  • kernel/generic/include/ipc/irq.h

    re3890b3f r2b017ba  
    3939#define IRQ_MAX_PROG_SIZE 10
    4040
    41 /** Reserved 'virtual' messages for kernel notifications */
    42 #define IPC_IRQ_RESERVED_VIRTUAL 10
    43 
    44 #define IPC_IRQ_KLOG       (-1)
    45 #define IPC_IRQ_KBDRESTART (-2)
     41#define VIRT_INR_KLOG           -2
     42#define VIRT_INR_KBDRESTART     -3
    4643
    4744typedef enum {
     
    7673
    7774#include <ipc/ipc.h>
     75#include <typedefs.h>
     76#include <arch/types.h>
    7877
    79 extern void ipc_irq_make_table(int irqcount);
    80 extern int ipc_irq_register(answerbox_t *box, int irq, irq_code_t *ucode);
    81 extern void ipc_irq_send_notif(int irq);
    82 extern void ipc_irq_send_msg(int irq, unative_t a1, unative_t a2, unative_t a3);
    83 extern void ipc_irq_unregister(answerbox_t *box, int irq);
    84 extern void irq_ipc_bind_arch(unative_t irq);
     78/** IPC notification config structure.
     79 *
     80 * Primarily, this structure is encapsulated in the irq_t structure.
     81 * It is protected by irq_t::lock.
     82 */
     83struct ipc_notif_cfg {
     84        answerbox_t *answerbox;         /**< Answerbox for notifications. */
     85        unative_t method;               /**< Method to be used for the notification. */
     86        irq_code_t *code;               /**< Top-half pseudocode. */
     87        count_t counter;                /**< Counter. */
     88};
     89
     90extern int ipc_irq_register(answerbox_t *box, inr_t inr, devno_t devno, unative_t method,
     91        irq_code_t *ucode);
     92extern void ipc_irq_send_notif(irq_t *irq);
     93extern void ipc_irq_send_msg(irq_t *irq, unative_t a1, unative_t a2, unative_t a3);
     94extern void ipc_irq_unregister(answerbox_t *box, inr_t inr, devno_t devno);
    8595extern void ipc_irq_cleanup(answerbox_t *box);
    8696
  • kernel/generic/include/ipc/sysipc.h

    re3890b3f r2b017ba  
    3939#include <ipc/irq.h>
    4040#include <arch/types.h>
     41#include <typedefs.h>
    4142
    4243unative_t sys_ipc_call_sync_fast(unative_t phoneid, unative_t method,
     
    5455                              unative_t method, unative_t arg1);
    5556unative_t sys_ipc_hangup(int phoneid);
    56 unative_t sys_ipc_register_irq(int irq, irq_code_t *ucode);
    57 unative_t sys_ipc_unregister_irq(int irq);
     57unative_t sys_ipc_register_irq(inr_t inr, devno_t devno, unative_t method, irq_code_t *ucode);
     58unative_t sys_ipc_unregister_irq(inr_t inr, devno_t devno);
    5859
    5960#endif
Note: See TracChangeset for help on using the changeset viewer.