Changes in kernel/generic/include/ipc/sysipc_ops.h [466e95f7:cd671c3] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/ipc/sysipc_ops.h
r466e95f7 rcd671c3 38 38 #include <ipc/ipc.h> 39 39 40 #define SYSIPC_OP(op, call, ...) \41 ({ \42 int rc = EOK; \43 \44 sysipc_ops_t *ops; \45 ops = sysipc_ops_get((call)->request_method); \46 if (ops->op) \47 rc = ops->op((call), ##__VA_ARGS__); \48 rc; \49 })50 51 /**52 * This header declares the per-method IPC callbacks. Using these callbacks,53 * each IPC method (but system methods in particular), can define actions that54 * will be called at specific moments in the call life-cycle.55 *56 * Normally, the kernel will attempt to invoke the following callbacks in the57 * following order on each call:58 *59 * request_preprocess()60 * request_process()61 * answer_preprocess()62 * answer_process()63 *64 * This callback invocation sequence is a natural order of processing. Note,65 * however, that due to various special circumstances, callbacks may be called66 * also in a different than natural order of processing. This means that some67 * callbacks may be skipped and some others may be called instead.68 *69 * The additional callbacks that may be called are as follows:70 *71 * request_forget()72 * answer_cleanup()73 *74 * There are several notable scenarios in which some callbacks of the natural75 * order of processing will be skipped.76 *77 * The request_process(), answer_preprocess() and answer_process() callbacks78 * will be skipped if the call cannot be delivered to the callee. This may79 * happen when e.g. the request_preprocess() callback fails or the connection80 * to the callee is not functional. The next callback that will be invoked on81 * the call is request_forget().82 *83 * The comments for each callback type describe the specifics of each callback84 * such as the context in which it is invoked and various constraints.85 */86 87 40 typedef struct { 88 41 /** … … 106 59 * Invoked on: all forgotten calls 107 60 */ 108 int(* request_forget)(call_t *);61 void (* request_forget)(call_t *); 109 62 110 63 /** … … 114 67 * Caller alive: no guarantee 115 68 * Races with: request_forget() 116 * Invoked on: all calls delivered tothe callee69 * Invoked on: calls that are received by the callee 117 70 */ 118 71 int (* request_process)(call_t *, answerbox_t *); … … 127 80 * Invoked on: all forgotten calls 128 81 */ 129 int(* answer_cleanup)(call_t *, ipc_data_t *);82 void (* answer_cleanup)(call_t *, ipc_data_t *); 130 83 131 84 /** … … 154 107 155 108 extern int null_request_preprocess(call_t *, phone_t *); 156 extern intnull_request_forget(call_t *);109 extern void null_request_forget(call_t *); 157 110 extern int null_request_process(call_t *, answerbox_t *); 158 extern intnull_answer_cleanup(call_t *, ipc_data_t *);111 extern void null_answer_cleanup(call_t *, ipc_data_t *); 159 112 extern int null_answer_preprocess(call_t *, ipc_data_t *); 160 113 extern int null_answer_process(call_t *);
Note:
See TracChangeset
for help on using the changeset viewer.