Changeset b3f8fb7 in mainline for kernel/generic/include/ipc
- Timestamp:
- 2007-01-28T13:25:49Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 8e8c1a5
- Parents:
- 1ba41c5
- Location:
- kernel/generic/include/ipc
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ipc/ipc.h
r1ba41c5 rb3f8fb7 159 159 #ifdef KERNEL 160 160 161 #include <synch/waitq.h> 162 #include <adt/list.h> 163 164 #define IPC_MAX_PHONES 16 165 166 typedef struct answerbox_s answerbox_t; 167 typedef struct phone_s phone_t; 161 #include <proc/task.h> 162 168 163 typedef struct { 169 164 unative_t args[IPC_CALL_LEN]; 170 165 phone_t *phone; 171 166 } ipc_data_t; 172 173 struct answerbox_s {174 SPINLOCK_DECLARE(lock);175 176 task_t *task;177 178 waitq_t wq;179 180 link_t connected_phones; /**< Phones connected to this answerbox */181 link_t calls; /**< Received calls */182 link_t dispatched_calls; /* Should be hash table in the future */183 184 link_t answers; /**< Answered calls */185 186 SPINLOCK_DECLARE(irq_lock);187 link_t irq_notifs; /**< Notifications from IRQ handlers */188 link_t irq_head; /**< IRQs with notifications to this answerbox. */189 };190 191 typedef enum {192 IPC_PHONE_FREE = 0, /**< Phone is free and can be allocated */193 IPC_PHONE_CONNECTING, /**< Phone is connecting somewhere */194 IPC_PHONE_CONNECTED, /**< Phone is connected */195 IPC_PHONE_HUNGUP, /**< Phone is hung up, waiting for answers to come */196 IPC_PHONE_SLAMMED /**< Phone was hungup from server */197 } ipc_phone_state_t;198 199 /** Structure identifying phone (in TASK structure) */200 struct phone_s {201 SPINLOCK_DECLARE(lock);202 link_t link;203 answerbox_t *callee;204 ipc_phone_state_t state;205 atomic_t active_calls;206 };207 167 208 168 typedef struct { -
kernel/generic/include/ipc/irq.h
r1ba41c5 rb3f8fb7 39 39 #define IRQ_MAX_PROG_SIZE 10 40 40 41 typedef enum {42 CMD_MEM_READ_1 = 0,43 CMD_MEM_READ_2,44 CMD_MEM_READ_4,45 CMD_MEM_READ_8,46 CMD_MEM_WRITE_1,47 CMD_MEM_WRITE_2,48 CMD_MEM_WRITE_4,49 CMD_MEM_WRITE_8,50 CMD_PORT_READ_1,51 CMD_PORT_WRITE_1,52 CMD_IA64_GETCHAR,53 CMD_PPC32_GETCHAR,54 CMD_LAST55 } irq_cmd_type;56 57 typedef struct {58 irq_cmd_type cmd;59 void *addr;60 unsigned long long value;61 int dstarg;62 } irq_cmd_t;63 64 typedef struct {65 unsigned int cmdcount;66 irq_cmd_t *cmds;67 } irq_code_t;68 69 #ifdef KERNEL70 71 41 #include <ipc/ipc.h> 72 #include < typedefs.h>42 #include <ddi/irq.h> 73 43 #include <arch/types.h> 74 44 #include <adt/list.h> 75 76 /** IPC notification config structure.77 *78 * Primarily, this structure is encapsulated in the irq_t structure.79 * It is protected by irq_t::lock.80 */81 struct ipc_notif_cfg {82 bool notify; /**< When false, notifications are not sent. */83 answerbox_t *answerbox; /**< Answerbox for notifications. */84 unative_t method; /**< Method to be used for the notification. */85 irq_code_t *code; /**< Top-half pseudocode. */86 count_t counter; /**< Counter. */87 link_t link; /**< Link between IRQs that are notifying the88 same answerbox. The list is protected by89 the answerbox irq_lock. */90 };91 45 92 46 extern int ipc_irq_register(answerbox_t *box, inr_t inr, devno_t devno, unative_t method, … … 99 53 #endif 100 54 101 #endif102 103 55 /** @} 104 56 */ -
kernel/generic/include/ipc/sysipc.h
r1ba41c5 rb3f8fb7 39 39 #include <ipc/irq.h> 40 40 #include <arch/types.h> 41 #include <typedefs.h>42 41 43 42 unative_t sys_ipc_call_sync_fast(unative_t phoneid, unative_t method,
Note:
See TracChangeset
for help on using the changeset viewer.