Changeset 716185d in mainline
- Timestamp:
- 2012-10-03T20:37:07Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 466e95f7
- Parents:
- 190976f
- Location:
- kernel/generic
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ipc/sysipc_ops.h
r190976f r716185d 70 70 * the call is request_forget(). 71 71 * 72 * The request_process() callback will be skipped if the callee terminates73 * before picking up the request. In this case, the terminating task will74 * cleanup its incoming calls list and so the next callback invoked on the call75 * will usually be answer_preprocess(). If, in the meantime, the caller76 * terminates too, it may happen that the call will be forgotten instead of77 * answered, in which case the kernel will invoke the request_forget() and78 * answer_cleanup() callbacks instead. The order in which they are invoked is79 * not defined.80 *81 72 * The comments for each callback type describe the specifics of each callback 82 73 * such as the context in which it is invoked and various constraints. … … 112 103 * Caller alive: no guarantee 113 104 * Races with: request_forget() 114 * Invoked on: calls that are explicitly received bythe callee105 * Invoked on: all calls delivered to the callee 115 106 */ 116 107 int (* request_process)(call_t *, answerbox_t *); … … 144 135 * Caller alive: guaranteed 145 136 * Races with: N/A 146 * Invoked on: a nswered calls explicitly received by the caller137 * Invoked on: all answered calls 147 138 */ 148 139 int (* answer_process)(call_t *); -
kernel/generic/src/ipc/ipc.c
r190976f r716185d 513 513 irq_spinlock_unlock(&box->lock, true); 514 514 515 if (lst == &box->calls) { 516 sysipc_ops_t *ops; 517 518 ops = sysipc_ops_get(call->request_method); 519 if (ops->request_process) 520 (void) ops->request_process(call, box); 521 } 522 515 523 ipc_data_t old = call->data; 516 524 IPC_SET_RETVAL(call->data, EHANGUP); … … 753 761 754 762 /* Answer all messages in 'calls' and 'dispatched_calls' queues */ 763 ipc_cleanup_call_list(&TASK->answerbox, &TASK->answerbox.calls); 755 764 ipc_cleanup_call_list(&TASK->answerbox, 756 765 &TASK->answerbox.dispatched_calls); 757 ipc_cleanup_call_list(&TASK->answerbox, &TASK->answerbox.calls);758 766 759 767 ipc_forget_all_active_calls(); -
kernel/generic/src/ipc/kbox.c
r190976f r716185d 96 96 97 97 /* Answer all messages in 'calls' and 'dispatched_calls' queues. */ 98 ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.calls); 98 99 ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.dispatched_calls); 99 ipc_cleanup_call_list(&TASK->kb.box, &TASK->kb.box.calls);100 100 } 101 101 -
kernel/generic/src/ipc/ops/concttome.c
r190976f r716185d 39 39 #include <abi/errno.h> 40 40 #include <arch.h> 41 42 static int request_preprocess(call_t *call, phone_t *phone)43 {44 /* Start with the assumption that there is no allocated phoneid. */45 IPC_SET_ARG5(call->data, -1);46 return EOK;47 }48 41 49 42 static int request_process(call_t *call, answerbox_t *box) … … 91 84 92 85 sysipc_ops_t ipc_m_connect_to_me_ops = { 93 .request_preprocess = request_preprocess,86 .request_preprocess = null_request_preprocess, 94 87 .request_forget = null_request_forget, 95 88 .request_process = request_process,
Note:
See TracChangeset
for help on using the changeset viewer.