Changes in kernel/generic/src/ipc/sysipc.c [09024119:072607b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/src/ipc/sysipc.c
r09024119 r072607b 106 106 { 107 107 switch (imethod) { 108 case IPC_M_PAGE_IN: 108 109 case IPC_M_SHARE_OUT: 109 110 case IPC_M_SHARE_IN: … … 137 138 case IPC_M_CONNECT_TO_ME: 138 139 case IPC_M_CONNECT_ME_TO: 140 case IPC_M_PAGE_IN: 139 141 case IPC_M_SHARE_OUT: 140 142 case IPC_M_SHARE_IN: … … 257 259 { 258 260 return SYSIPC_OP(request_process, call, box); 261 } 262 263 /** Make a call over IPC and wait for reply. 264 * 265 * @param phoneid Phone handle for the call. 266 * @param data[inout] Structure with request/reply data. 267 * 268 * @return EOK on success. 269 * @return ENOENT if there is no such phone handle. 270 * 271 */ 272 int ipc_req_internal(int phoneid, ipc_data_t *data) 273 { 274 phone_t *phone; 275 if (phone_get(phoneid, &phone) != EOK) 276 return ENOENT; 277 278 call_t *call = ipc_call_alloc(0); 279 memcpy(call->data.args, data->args, sizeof(data->args)); 280 281 int rc = request_preprocess(call, phone); 282 if (!rc) { 283 #ifdef CONFIG_UDEBUG 284 udebug_stoppable_begin(); 285 #endif 286 287 rc = ipc_call_sync(phone, call); 288 289 #ifdef CONFIG_UDEBUG 290 udebug_stoppable_end(); 291 #endif 292 293 if (rc != EOK) 294 return EINTR; 295 296 process_answer(call); 297 } else 298 IPC_SET_RETVAL(call->data, rc); 299 300 memcpy(data->args, call->data.args, sizeof(data->args)); 301 ipc_call_free(call); 302 303 return EOK; 259 304 } 260 305
Note:
See TracChangeset
for help on using the changeset viewer.