Rev 2617 | Rev 2619 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2617 | Rev 2618 | ||
---|---|---|---|
Line 442... | Line 442... | ||
442 | return 0; |
442 | return 0; |
443 | } |
443 | } |
444 | 444 | ||
445 | /** Make a fast asynchronous call over IPC. |
445 | /** Make a fast asynchronous call over IPC. |
446 | * |
446 | * |
447 | * This function can only handle two arguments of payload, but is faster than |
447 | * This function can only handle four arguments of payload, but is faster than |
448 | * the generic function sys_ipc_call_async(). |
448 | * the generic function sys_ipc_call_async_slow(). |
449 | * |
449 | * |
450 | * @param phoneid Phone handle for the call. |
450 | * @param phoneid Phone handle for the call. |
451 | * @param method Method of the call. |
451 | * @param method Method of the call. |
452 | * @param arg1 Service-defined payload argument. |
452 | * @param arg1 Service-defined payload argument. |
453 | * @param arg2 Service-defined payload argument. |
453 | * @param arg2 Service-defined payload argument. |
- | 454 | * @param arg3 Service-defined payload argument. |
|
- | 455 | * @param arg4 Service-defined payload argument. |
|
454 | * |
456 | * |
455 | * @return Return call hash on success. |
457 | * @return Return call hash on success. |
456 | * Return IPC_CALLRET_FATAL in case of a fatal error and |
458 | * Return IPC_CALLRET_FATAL in case of a fatal error and |
457 | * IPC_CALLRET_TEMPORARY if there are too many pending |
459 | * IPC_CALLRET_TEMPORARY if there are too many pending |
458 | * asynchronous requests; answers should be handled first. |
460 | * asynchronous requests; answers should be handled first. |
459 | */ |
461 | */ |
460 | unative_t sys_ipc_call_async_fast(unative_t phoneid, unative_t method, |
462 | unative_t sys_ipc_call_async_fast(unative_t phoneid, unative_t method, |
461 | unative_t arg1, unative_t arg2) |
463 | unative_t arg1, unative_t arg2, unative_t arg3, unative_t arg4) |
462 | { |
464 | { |
463 | call_t *call; |
465 | call_t *call; |
464 | phone_t *phone; |
466 | phone_t *phone; |
465 | int res; |
467 | int res; |
466 | 468 | ||
Line 471... | Line 473... | ||
471 | 473 | ||
472 | call = ipc_call_alloc(0); |
474 | call = ipc_call_alloc(0); |
473 | IPC_SET_METHOD(call->data, method); |
475 | IPC_SET_METHOD(call->data, method); |
474 | IPC_SET_ARG1(call->data, arg1); |
476 | IPC_SET_ARG1(call->data, arg1); |
475 | IPC_SET_ARG2(call->data, arg2); |
477 | IPC_SET_ARG2(call->data, arg2); |
476 | IPC_SET_ARG3(call->data, 0); |
478 | IPC_SET_ARG3(call->data, arg3); |
- | 479 | IPC_SET_ARG4(call->data, arg4); |
|
477 | 480 | ||
478 | if (!(res = request_preprocess(call))) |
481 | if (!(res = request_preprocess(call))) |
479 | ipc_call(phone, call); |
482 | ipc_call(phone, call); |
480 | else |
483 | else |
481 | ipc_backsend_err(phone, call, res); |
484 | ipc_backsend_err(phone, call, res); |
Line 488... | Line 491... | ||
488 | * @param phoneid Phone handle for the call. |
491 | * @param phoneid Phone handle for the call. |
489 | * @param data Userspace address of call data with the request. |
492 | * @param data Userspace address of call data with the request. |
490 | * |
493 | * |
491 | * @return See sys_ipc_call_async_fast(). |
494 | * @return See sys_ipc_call_async_fast(). |
492 | */ |
495 | */ |
493 | unative_t sys_ipc_call_async(unative_t phoneid, ipc_data_t *data) |
496 | unative_t sys_ipc_call_async_slow(unative_t phoneid, ipc_data_t *data) |
494 | { |
497 | { |
495 | call_t *call; |
498 | call_t *call; |
496 | phone_t *phone; |
499 | phone_t *phone; |
497 | int res; |
500 | int res; |
498 | int rc; |
501 | int rc; |