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)); |