Changes in kernel/generic/include/ipc/ipc.h [c33f39f:cd529c4] in mainline
- File:
-
- 1 edited
-
kernel/generic/include/ipc/ipc.h (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ipc/ipc.h
rc33f39f rcd529c4 72 72 typedef struct answerbox { 73 73 IRQ_SPINLOCK_DECLARE(lock); 74 75 /** Answerbox is active until it enters cleanup. */76 bool active;77 74 78 75 struct task *task; … … 109 106 110 107 typedef struct { 111 /** 112 * Task link. 113 * Valid only when the call is not forgotten. 114 * Protected by the task's active_calls_lock. 115 */ 116 link_t ta_link; 117 118 /** Answerbox link. */ 119 link_t ab_link; 108 link_t link; 120 109 121 110 unsigned int flags; 122 123 /** Protects the forget member. */124 SPINLOCK_DECLARE(forget_lock);125 126 /**127 * True if the caller 'forgot' this call and donated it to the callee.128 * Forgotten calls are discarded upon answering (the answer is not129 * delivered) and answered calls cannot be forgotten. Forgotten calls130 * also do not figure on the task's active call list.131 *132 * We keep this separate from the flags so that it is not necessary133 * to take a lock when accessing them.134 */135 bool forget;136 137 /** True if the call is in the active list. */138 bool active;139 111 140 /** 141 * Identification of the caller. 142 * Valid only when the call is not forgotten. 143 */ 112 /** Identification of the caller. */ 144 113 struct task *sender; 145 146 /** Phone which was used to send the call. */147 phone_t *caller_phone;148 114 149 115 /** Private data to internal IPC. */ … … 152 118 /** Data passed from/to userspace. */ 153 119 ipc_data_t data; 154 155 /** Method as it was sent in the request. */ 156 sysarg_t request_method; 157 120 158 121 /** Buffer for IPC_M_DATA_WRITE and IPC_M_DATA_READ. */ 159 122 uint8_t *buffer; 123 124 /* 125 * The forward operation can masquerade the caller phone. For those 126 * cases, we must keep it aside so that the answer is processed 127 * correctly. 128 */ 129 phone_t *caller_phone; 160 130 } call_t; 161 131 … … 171 141 extern int ipc_forward(call_t *, phone_t *, answerbox_t *, unsigned int); 172 142 extern void ipc_answer(answerbox_t *, call_t *); 173 extern void _ipc_answer_free_call(call_t *, bool);174 143 175 144 extern void ipc_phone_init(phone_t *); 176 extern boolipc_phone_connect(phone_t *, answerbox_t *);145 extern void ipc_phone_connect(phone_t *, answerbox_t *); 177 146 extern int ipc_phone_hangup(phone_t *); 178 147 … … 182 151 extern void ipc_backsend_err(phone_t *, call_t *, sysarg_t); 183 152 extern void ipc_answerbox_slam_phones(answerbox_t *, bool); 184 extern void ipc_cleanup_call_list( answerbox_t *,list_t *);153 extern void ipc_cleanup_call_list(list_t *); 185 154 186 155 extern void ipc_print_task(task_id_t);
Note:
See TracChangeset
for help on using the changeset viewer.
