Changeset 2b017ba in mainline for kernel/generic/include
- Timestamp:
- 2006-10-16T20:51:55Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5f9b4d9a
- Parents:
- e3890b3f
- Location:
- kernel/generic/include
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ddi/irq.h
re3890b3f r2b017ba 37 37 38 38 #include <arch/types.h> 39 #include <typedefs.h> 39 40 #include <adt/list.h> 40 #include <ipc/ipc.h>41 41 #include <ipc/irq.h> 42 #include <atomic.h>43 42 #include <synch/spinlock.h> 44 43 … … 52 51 IRQ_TRIGGER_EDGE 53 52 } irq_trigger_t; 54 55 typedef struct irq irq_t;56 53 57 54 typedef void (* irq_handler_t)(irq_t *irq, void *arg, ...); … … 88 85 void *arg; 89 86 90 /** Answerbox of the task that wanted to be notified. */ 91 answerbox_t *notif_answerbox; 92 /** Pseudo-code to be performed by the top-half 93 * before a notification is sent. */ 94 irq_code_t *code; 95 /** Method of the notification. */ 96 unative_t method; 97 /** Counter of IRQ notifications. */ 98 atomic_t counter; 87 /** Notification configuration structure. */ 88 ipc_notif_cfg_t notif_cfg; 99 89 }; 100 90 -
kernel/generic/include/ipc/ipc.h
re3890b3f r2b017ba 156 156 #ifdef KERNEL 157 157 158 #include <synch/mutex.h> 159 #include <synch/condvar.h> 158 #include <synch/waitq.h> 160 159 #include <adt/list.h> 161 160 -
kernel/generic/include/ipc/irq.h
re3890b3f r2b017ba 39 39 #define IRQ_MAX_PROG_SIZE 10 40 40 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 46 43 47 44 typedef enum { … … 76 73 77 74 #include <ipc/ipc.h> 75 #include <typedefs.h> 76 #include <arch/types.h> 78 77 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 */ 83 struct 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 90 extern int ipc_irq_register(answerbox_t *box, inr_t inr, devno_t devno, unative_t method, 91 irq_code_t *ucode); 92 extern void ipc_irq_send_notif(irq_t *irq); 93 extern void ipc_irq_send_msg(irq_t *irq, unative_t a1, unative_t a2, unative_t a3); 94 extern void ipc_irq_unregister(answerbox_t *box, inr_t inr, devno_t devno); 85 95 extern void ipc_irq_cleanup(answerbox_t *box); 86 96 -
kernel/generic/include/ipc/sysipc.h
re3890b3f r2b017ba 39 39 #include <ipc/irq.h> 40 40 #include <arch/types.h> 41 #include <typedefs.h> 41 42 42 43 unative_t sys_ipc_call_sync_fast(unative_t phoneid, unative_t method, … … 54 55 unative_t method, unative_t arg1); 55 56 unative_t sys_ipc_hangup(int phoneid); 56 unative_t sys_ipc_register_irq(in t irq, irq_code_t *ucode);57 unative_t sys_ipc_unregister_irq(in t irq);57 unative_t sys_ipc_register_irq(inr_t inr, devno_t devno, unative_t method, irq_code_t *ucode); 58 unative_t sys_ipc_unregister_irq(inr_t inr, devno_t devno); 58 59 59 60 #endif -
kernel/generic/include/typedefs.h
re3890b3f r2b017ba 98 98 typedef signed int inr_t; 99 99 typedef signed int devno_t; 100 typedef struct irq irq_t; 101 typedef struct ipc_notif_cfg ipc_notif_cfg_t; 100 102 101 103 #endif
Note:
See TracChangeset
for help on using the changeset viewer.