Changeset 7c7aae16 in mainline for generic/src/ipc/ipc.c
- Timestamp:
- 2006-03-19T19:42:00Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ad64a2d
- Parents:
- 9f22213
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
generic/src/ipc/ipc.c
r9f22213 r7c7aae16 146 146 answerbox_t *callerbox = call->callerbox; 147 147 148 call->flags &= ~IPC_CALL_DISPATCHED;149 148 call->flags |= IPC_CALL_ANSWERED; 150 149 … … 167 166 spinlock_unlock(&box->lock); 168 167 /* Send back answer */ 168 _ipc_answer_free_call(call); 169 } 170 171 /** Simulate sending back a message 172 * 173 * Most errors are better handled by forming a normal backward 174 * message and sending it as a normal answer. 175 */ 176 void ipc_backsend_err(phone_t *phone, call_t *call, __native err) 177 { 178 call->data.phone = phone; 179 atomic_inc(&phone->active_calls); 180 if (phone->busy == IPC_BUSY_CONNECTED) 181 IPC_SET_RETVAL(call->data, EHANGUP); 182 else 183 IPC_SET_RETVAL(call->data, ENOENT); 184 169 185 _ipc_answer_free_call(call); 170 186 } … … 201 217 if (call->flags & IPC_CALL_FORWARDED) { 202 218 IPC_SET_RETVAL(call->data, EFORWARD); 203 } else { /* Simulate sending a message */ 204 call->data.phone = phone; 205 atomic_inc(&phone->active_calls); 219 _ipc_answer_free_call(call); 220 } else { /* Simulate sending back a message */ 206 221 if (phone->busy == IPC_BUSY_CONNECTED) 207 IPC_SET_RETVAL(call->data, EHANGUP);222 ipc_backsend_err(phone, call, EHANGUP); 208 223 else 209 IPC_SET_RETVAL(call->data, ENOENT);224 ipc_backsend_err(phone, call, ENOENT); 210 225 } 211 226 212 _ipc_answer_free_call(call);213 227 return ENOENT; 214 228 } … … 308 322 /* Append request to dispatch queue */ 309 323 list_append(&request->list, &box->dispatched_calls); 310 request->flags |= IPC_CALL_DISPATCHED;311 324 } else { 312 325 printf("WARNING: Spurious IPC wakeup.\n");
Note:
See TracChangeset
for help on using the changeset viewer.