Rev 1547 | Rev 1610 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1547 | Rev 1596 | ||
|---|---|---|---|
| Line 136... | Line 136... | ||
| 136 | 136 | ||
| 137 | 137 | ||
| 138 | __thread connection_t *PS_connection; |
138 | __thread connection_t *PS_connection; |
| 139 | 139 | ||
| 140 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call); |
140 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call); |
| - | 141 | static void default_interrupt_received(ipc_callid_t callid, ipc_call_t *call); |
|
| 141 | static async_client_conn_t client_connection = default_client_connection; |
142 | static async_client_conn_t client_connection = default_client_connection; |
| - | 143 | static async_client_conn_t interrupt_received = default_interrupt_received; |
|
| 142 | 144 | ||
| 143 | /** Add microseconds to give timeval */ |
145 | /** Add microseconds to give timeval */ |
| 144 | static void tv_add(struct timeval *tv, suseconds_t usecs) |
146 | static void tv_add(struct timeval *tv, suseconds_t usecs) |
| 145 | { |
147 | { |
| 146 | tv->tv_sec += usecs / 1000000; |
148 | tv->tv_sec += usecs / 1000000; |
| Line 339... | Line 341... | ||
| 339 | */ |
341 | */ |
| 340 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call) |
342 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call) |
| 341 | { |
343 | { |
| 342 | ipc_answer_fast(callid, ENOENT, 0, 0); |
344 | ipc_answer_fast(callid, ENOENT, 0, 0); |
| 343 | } |
345 | } |
| 344 | - | ||
| 345 | /** Function that gets called on interrupt receival |
- | |
| 346 | * |
- | |
| 347 | * This function is defined as a weak symbol - to be redefined in |
- | |
| 348 | * user code. |
- | |
| 349 | */ |
- | |
| 350 | void interrupt_received(ipc_call_t *call) |
346 | static void default_interrupt_received(ipc_callid_t callid, ipc_call_t *call) |
| 351 | { |
347 | { |
| 352 | } |
348 | } |
| 353 | 349 | ||
| 354 | - | ||
| 355 | /** Wrapper for client connection thread |
350 | /** Wrapper for client connection thread |
| 356 | * |
351 | * |
| 357 | * When new connection arrives, thread with this function is created. |
352 | * When new connection arrives, thread with this function is created. |
| 358 | * It calls client_connection and does final cleanup. |
353 | * It calls client_connection and does final cleanup. |
| 359 | * |
354 | * |
| Line 438... | Line 433... | ||
| 438 | static void handle_call(ipc_callid_t callid, ipc_call_t *call) |
433 | static void handle_call(ipc_callid_t callid, ipc_call_t *call) |
| 439 | { |
434 | { |
| 440 | /* Unrouted call - do some default behaviour */ |
435 | /* Unrouted call - do some default behaviour */ |
| 441 | switch (IPC_GET_METHOD(*call)) { |
436 | switch (IPC_GET_METHOD(*call)) { |
| 442 | case IPC_M_INTERRUPT: |
437 | case IPC_M_INTERRUPT: |
| 443 | interrupt_received(call); |
438 | (*interrupt_received)(callid,call); |
| 444 | return; |
439 | return; |
| 445 | case IPC_M_CONNECT_ME_TO: |
440 | case IPC_M_CONNECT_ME_TO: |
| 446 | /* Open new connection with thread etc. */ |
441 | /* Open new connection with thread etc. */ |
| 447 | async_new_connection(IPC_GET_ARG3(*call), callid, call, client_connection); |
442 | async_new_connection(IPC_GET_ARG3(*call), callid, call, client_connection); |
| 448 | return; |
443 | return; |
| Line 755... | Line 750... | ||
| 755 | */ |
750 | */ |
| 756 | void async_set_client_connection(async_client_conn_t conn) |
751 | void async_set_client_connection(async_client_conn_t conn) |
| 757 | { |
752 | { |
| 758 | client_connection = conn; |
753 | client_connection = conn; |
| 759 | } |
754 | } |
| - | 755 | void async_set_interrupt_received(async_client_conn_t conn) |
|
| - | 756 | { |
|
| - | 757 | interrupt_received = conn; |
|
| - | 758 | } |
|