Rev 1463 | Rev 1472 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1463 | Rev 1464 | ||
|---|---|---|---|
| Line 7... | Line 7... | ||
| 7 | #include <atomic.h> |
7 | #include <atomic.h> |
| 8 | 8 | ||
| 9 | typedef ipc_callid_t aid_t; |
9 | typedef ipc_callid_t aid_t; |
| 10 | 10 | ||
| 11 | int async_manager(void); |
11 | int async_manager(void); |
| 12 | void async_create_manager(void); |
- | |
| 13 | void async_destroy_manager(void); |
- | |
| 14 | int _async_init(void); |
- | |
| 15 | ipc_callid_t async_get_call(ipc_call_t *data); |
12 | ipc_callid_t async_get_call(ipc_call_t *data); |
| 16 | 13 | ||
| - | 14 | ||
| 17 | aid_t async_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, |
15 | aid_t async_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, |
| 18 | ipc_call_t *dataptr); |
16 | ipc_call_t *dataptr); |
| 19 | void async_wait_for(aid_t amsgid, ipcarg_t *result); |
17 | void async_wait_for(aid_t amsgid, ipcarg_t *result); |
| 20 | int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout); |
18 | int async_wait_timeout(aid_t amsgid, ipcarg_t *retval, suseconds_t timeout); |
| - | 19 | ||
| - | 20 | /** Pseudo-synchronous message sending |
|
| - | 21 | * |
|
| - | 22 | * Send message through IPC, wait in the event loop, until it is received |
|
| - | 23 | * |
|
| - | 24 | * @return Return code of message |
|
| - | 25 | */ |
|
| - | 26 | static inline ipcarg_t sync_send_2(int phoneid, ipcarg_t method, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t *r1, ipcarg_t *r2) |
|
| - | 27 | { |
|
| - | 28 | ipc_call_t result; |
|
| - | 29 | ipcarg_t rc; |
|
| - | 30 | ||
| - | 31 | aid_t eid = async_send_2(phoneid, method, arg1, arg2, &result); |
|
| - | 32 | async_wait_for(eid, &rc); |
|
| - | 33 | if (r1) |
|
| - | 34 | *r1 = IPC_GET_ARG1(result); |
|
| - | 35 | if (r2) |
|
| - | 36 | *r2 = IPC_GET_ARG2(result); |
|
| - | 37 | return rc; |
|
| - | 38 | } |
|
| - | 39 | ||
| - | 40 | ||
| 21 | pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid, |
41 | pstid_t async_new_connection(ipcarg_t in_phone_hash,ipc_callid_t callid, |
| 22 | ipc_call_t *call, |
42 | ipc_call_t *call, |
| 23 | void (*cthread)(ipc_callid_t,ipc_call_t *)); |
43 | void (*cthread)(ipc_callid_t,ipc_call_t *)); |
| 24 | void async_usleep(suseconds_t timeout); |
44 | void async_usleep(suseconds_t timeout); |
| - | 45 | void async_create_manager(void); |
|
| - | 46 | void async_destroy_manager(void); |
|
| - | 47 | int _async_init(void); |
|
| 25 | 48 | ||
| 26 | /* Should be defined by application */ |
49 | /* Should be defined by application */ |
| 27 | void client_connection(ipc_callid_t callid, ipc_call_t *call) __attribute__((weak)); |
50 | void client_connection(ipc_callid_t callid, ipc_call_t *call) __attribute__((weak)); |
| 28 | void interrupt_received(ipc_call_t *call) __attribute__((weak)); |
51 | void interrupt_received(ipc_call_t *call) __attribute__((weak)); |
| 29 | 52 | ||