Subversion Repositories HelenOS

Rev

Rev 1359 | Rev 1396 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1359 Rev 1364
Line 466... Line 466...
466
}
466
}
467
 
467
 
468
/** Wait for incoming ipc call or answer
468
/** Wait for incoming ipc call or answer
469
 *
469
 *
470
 * @param calldata Pointer to buffer where the call/answer data is stored
470
 * @param calldata Pointer to buffer where the call/answer data is stored
-
 
471
 * @param usec Timeout. See waitq_sleep_timeout() for explanation.
471
 * @param flags
472
 * @param nonblocking See waitq_sleep_timeout() for explanation.
-
 
473
 *
472
 * @return Callid, if callid & 1, then the call is answer
474
 * @return Callid, if callid & 1, then the call is answer
473
 */
475
 */
474
__native sys_ipc_wait_for_call(ipc_data_t *calldata, __native flags)
476
__native sys_ipc_wait_for_call(ipc_data_t *calldata, __u32 usec, int nonblocking)
475
{
477
{
476
    call_t *call;
478
    call_t *call;
477
 
479
 
478
restart:   
480
restart:   
479
    call = ipc_wait_for_call(&TASK->answerbox, flags);
481
    call = ipc_wait_for_call(&TASK->answerbox, usec, nonblocking);
480
    if (!call)
482
    if (!call)
481
        return 0;
483
        return 0;
482
 
484
 
483
    if (call->flags & IPC_CALL_NOTIF) {
485
    if (call->flags & IPC_CALL_NOTIF) {
484
        ASSERT(! (call->flags & IPC_CALL_STATIC_ALLOC));
486
        ASSERT(! (call->flags & IPC_CALL_STATIC_ALLOC));