Rev 2620 | Rev 2635 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 2620 | Rev 2622 | ||
|---|---|---|---|
| Line 535... | Line 535... | ||
| 535 | * |
535 | * |
| 536 | * @param callid Hash of the call to forward. |
536 | * @param callid Hash of the call to forward. |
| 537 | * @param phoneid Phone handle to use for forwarding. |
537 | * @param phoneid Phone handle to use for forwarding. |
| 538 | * @param method New method to use for the forwarded call. |
538 | * @param method New method to use for the forwarded call. |
| 539 | * @param arg1 New value of the first argument for the forwarded call. |
539 | * @param arg1 New value of the first argument for the forwarded call. |
| - | 540 | * @param mode Flags that specify mode of the forward operation. |
|
| 540 | * |
541 | * |
| 541 | * @return Return 0 on succes, otherwise return an error code. |
542 | * @return Return 0 on succes, otherwise return an error code. |
| 542 | * |
543 | * |
| 543 | * In case the original method is a system method, ARG1 and ARG2 are overwritten |
544 | * In case the original method is a system method, ARG1 and ARG2 are overwritten |
| 544 | * in the forwarded message with the new method and the new arg1, respectively. |
545 | * in the forwarded message with the new method and the new arg1, respectively. |
| 545 | * Otherwise the METHOD and ARG1 are rewritten with the new method and arg1, |
546 | * Otherwise the METHOD and ARG1 are rewritten with the new method and arg1, |
| 546 | * respectively. Also note there is a set of immutable methods, for which the |
547 | * respectively. Also note there is a set of immutable methods, for which the |
| 547 | * new method and argument is not set and these values are ignored. |
548 | * new method and argument is not set and these values are ignored. |
| 548 | * |
549 | * |
| 549 | * Warning: If implementing non-fast version, make sure that |
550 | * Warning: When implementing support for changing additional payload |
| 550 | * ARG3 is not rewritten for certain system IPC |
551 | * arguments, make sure that ARG3 is not rewritten for certain |
| - | 552 | * system IPC |
|
| 551 | */ |
553 | */ |
| 552 | unative_t sys_ipc_forward_fast(unative_t callid, unative_t phoneid, |
554 | unative_t sys_ipc_forward_fast(unative_t callid, unative_t phoneid, |
| 553 | unative_t method, unative_t arg1) |
555 | unative_t method, unative_t arg1, int mode) |
| 554 | { |
556 | { |
| 555 | call_t *call; |
557 | call_t *call; |
| 556 | phone_t *phone; |
558 | phone_t *phone; |
| 557 | 559 | ||
| 558 | call = get_call(callid); |
560 | call = get_call(callid); |
| Line 589... | Line 591... | ||
| 589 | IPC_SET_METHOD(call->data, method); |
591 | IPC_SET_METHOD(call->data, method); |
| 590 | IPC_SET_ARG1(call->data, arg1); |
592 | IPC_SET_ARG1(call->data, arg1); |
| 591 | } |
593 | } |
| 592 | } |
594 | } |
| 593 | 595 | ||
| 594 | return ipc_forward(call, phone, &TASK->answerbox); |
596 | return ipc_forward(call, phone, &TASK->answerbox, mode); |
| 595 | } |
597 | } |
| 596 | 598 | ||
| 597 | /** Answer an IPC call - fast version. |
599 | /** Answer an IPC call - fast version. |
| 598 | * |
600 | * |
| 599 | * This function can handle only two return arguments of payload, but is faster |
601 | * This function can handle only two return arguments of payload, but is faster |