Subversion Repositories HelenOS

Rev

Rev 2620 | Rev 2635 | Go to most recent revision | Show entire file | Regard 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