#include <ipc/common.h>
#include <async_sess.h>
#include <fibril.h>
#include <sys/time.h>
#include <atomic.h>
#include <bool.h>
#include <task.h>
Go to the source code of this file.
Defines | |
#define | async_data_read_forward_0_0(phoneid, method, answer) async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) |
#define | async_data_read_forward_0_1(phoneid, method, answer) async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) |
#define | async_data_read_forward_1_0(phoneid, method, arg1, answer) async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) |
#define | async_data_read_forward_1_1(phoneid, method, arg1, answer) async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, (answer)) |
#define | async_data_read_forward_2_0(phoneid, method, arg1, arg2, answer) async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, NULL) |
#define | async_data_read_forward_2_1(phoneid, method, arg1, arg2, answer) |
#define | async_data_read_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) |
#define | async_data_read_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) |
#define | async_data_read_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) |
#define | async_data_read_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) |
#define | async_data_read_start(p, buf, len) async_data_read_start_generic((p), (buf), (len), IPC_XF_NONE) |
#define | async_data_write_forward_0_0(phoneid, method, answer) async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) |
#define | async_data_write_forward_0_1(phoneid, method, answer) async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) |
#define | async_data_write_forward_1_0(phoneid, method, arg1, answer) async_data_write_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) |
#define | async_data_write_forward_1_1(phoneid, method, arg1, answer) |
#define | async_data_write_forward_2_0(phoneid, method, arg1, arg2, answer) |
#define | async_data_write_forward_2_1(phoneid, method, arg1, arg2, answer) |
#define | async_data_write_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) |
#define | async_data_write_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) |
#define | async_data_write_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) |
#define | async_data_write_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) |
#define | async_data_write_start(p, buf, len) async_data_write_start_generic((p), (buf), (len), IPC_XF_NONE) |
#define | async_get_call(data) async_get_call_timeout(data, 0) |
#define | async_manager() fibril_switch(FIBRIL_TO_MANAGER) |
#define | async_req_0_0(phoneid, method) |
#define | async_req_0_1(phoneid, method, r1) |
#define | async_req_0_2(phoneid, method, r1, r2) |
#define | async_req_0_3(phoneid, method, r1, r2, r3) |
#define | async_req_0_4(phoneid, method, r1, r2, r3, r4) |
#define | async_req_0_5(phoneid, method, r1, r2, r3, r4, r5) |
#define | async_req_1_0(phoneid, method, arg1) |
#define | async_req_1_1(phoneid, method, arg1, rc1) |
#define | async_req_1_2(phoneid, method, arg1, rc1, rc2) |
#define | async_req_1_3(phoneid, method, arg1, rc1, rc2, rc3) |
#define | async_req_1_4(phoneid, method, arg1, rc1, rc2, rc3, rc4) |
#define | async_req_1_5(phoneid, method, arg1, rc1, rc2, rc3, rc4, rc5) |
#define | async_req_2_0(phoneid, method, arg1, arg2) |
#define | async_req_2_1(phoneid, method, arg1, arg2, rc1) |
#define | async_req_2_2(phoneid, method, arg1, arg2, rc1, rc2) |
#define | async_req_2_3(phoneid, method, arg1, arg2, rc1, rc2, rc3) |
#define | async_req_2_4(phoneid, method, arg1, arg2, rc1, rc2, rc3, rc4) |
#define | async_req_2_5(phoneid, method, arg1, arg2, rc1, rc2, rc3, rc4, rc5) |
#define | async_req_3_0(phoneid, method, arg1, arg2, arg3) |
#define | async_req_3_1(phoneid, method, arg1, arg2, arg3, rc1) |
#define | async_req_3_2(phoneid, method, arg1, arg2, arg3, rc1, rc2) |
#define | async_req_3_3(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3) |
#define | async_req_3_4(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4) |
#define | async_req_3_5(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4, rc5) |
#define | async_req_4_0(phoneid, method, arg1, arg2, arg3, arg4) |
#define | async_req_4_1(phoneid, method, arg1, arg2, arg3, arg4, rc1) |
#define | async_req_4_2(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2) |
#define | async_req_4_3(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3) |
#define | async_req_4_4(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, rc4) |
#define | async_req_4_5(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, rc4, rc5) |
#define | async_req_5_0(phoneid, method, arg1, arg2, arg3, arg4, arg5) |
#define | async_req_5_1(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1) |
#define | async_req_5_2(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2) |
#define | async_req_5_3(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, rc3) |
#define | async_req_5_4(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, rc3, rc4) |
#define | async_req_5_5(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, rc3, rc4, rc5) |
#define | async_send_0(phoneid, method, dataptr) async_send_fast((phoneid), (method), 0, 0, 0, 0, (dataptr)) |
#define | async_send_1(phoneid, method, arg1, dataptr) async_send_fast((phoneid), (method), (arg1), 0, 0, 0, (dataptr)) |
#define | async_send_2(phoneid, method, arg1, arg2, dataptr) async_send_fast((phoneid), (method), (arg1), (arg2), 0, 0, (dataptr)) |
#define | async_send_3(phoneid, method, arg1, arg2, arg3, dataptr) async_send_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (dataptr)) |
#define | async_send_4(phoneid, method, arg1, arg2, arg3, arg4, dataptr) |
#define | async_send_5(phoneid, method, arg1, arg2, arg3, arg4, arg5, dataptr) |
#define | async_share_in_start_0_0(phoneid, dst, size) async_share_in_start((phoneid), (dst), (size), 0, NULL) |
#define | async_share_in_start_0_1(phoneid, dst, size, flags) async_share_in_start((phoneid), (dst), (size), 0, (flags)) |
#define | async_share_in_start_1_0(phoneid, dst, size, arg) async_share_in_start((phoneid), (dst), (size), (arg), NULL) |
#define | async_share_in_start_1_1(phoneid, dst, size, arg, flags) async_share_in_start((phoneid), (dst), (size), (arg), (flags)) |
Typedefs | |
typedef ipc_callid_t | aid_t |
typedef void(*) | async_client_conn_t (ipc_callid_t, ipc_call_t *) |
typedef void *(*) | async_client_data_ctor_t (void) |
typedef void(*) | async_client_data_dtor_t (void *) |
Functions | |
sysarg_t | async_answer_0 (ipc_callid_t callid, sysarg_t retval) |
sysarg_t | async_answer_1 (ipc_callid_t callid, sysarg_t retval, sysarg_t arg1) |
sysarg_t | async_answer_2 (ipc_callid_t callid, sysarg_t retval, sysarg_t arg1, sysarg_t arg2) |
sysarg_t | async_answer_3 (ipc_callid_t callid, sysarg_t retval, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3) |
sysarg_t | async_answer_4 (ipc_callid_t callid, sysarg_t retval, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4) |
sysarg_t | async_answer_5 (ipc_callid_t callid, sysarg_t retval, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5) |
void * | async_client_data_get (void) |
int | async_connect_kbox (task_id_t id) |
Connect to a task specified by id. | |
int | async_connect_me_to (int phone, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3) |
Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework. | |
int | async_connect_me_to_blocking (int phoneid, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3) |
Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework. | |
int | async_connect_to_me (int phone, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, async_client_conn_t client_receiver) |
Wrapper for making IPC_M_CONNECT_TO_ME calls using the async framework. | |
void | async_create_manager (void) |
Add one manager to manager list. | |
aid_t | async_data_read (int phoneid, void *dst, size_t size, ipc_call_t *dataptr) |
Start IPC_M_DATA_READ using the async framework. | |
int | async_data_read_finalize (ipc_callid_t callid, const void *src, size_t size) |
Wrapper for answering the IPC_M_DATA_READ calls using the async framework. | |
int | async_data_read_forward_fast (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, ipc_call_t *dataptr) |
Wrapper for forwarding any read request. | |
bool | async_data_read_receive (ipc_callid_t *callid, size_t *size) |
Wrapper for receiving the IPC_M_DATA_READ calls using the async framework. | |
int | async_data_read_start_generic (int phoneid, void *dst, size_t size, int flags) |
Wrapper for IPC_M_DATA_READ calls using the async framework. | |
int | async_data_write_accept (void **data, const bool nullterm, const size_t min_size, const size_t max_size, const size_t granularity, size_t *received) |
Wrapper for receiving binary data or strings. | |
int | async_data_write_finalize (ipc_callid_t callid, void *dst, size_t size) |
Wrapper for answering the IPC_M_DATA_WRITE calls using the async framework. | |
int | async_data_write_forward_fast (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, ipc_call_t *dataptr) |
Wrapper for forwarding any data that is about to be received. | |
bool | async_data_write_receive (ipc_callid_t *callid, size_t *size) |
Wrapper for receiving the IPC_M_DATA_WRITE calls using the async framework. | |
int | async_data_write_start_generic (int phoneid, const void *src, size_t size, int flags) |
Wrapper for IPC_M_DATA_WRITE calls using the async framework. | |
void | async_data_write_void (sysarg_t retval) |
Wrapper for voiding any data that is about to be received. | |
void | async_destroy_manager (void) |
Remove one manager from manager list. | |
int | async_forward_fast (ipc_callid_t callid, int phoneid, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, unsigned int mode) |
int | async_forward_slow (ipc_callid_t callid, int phoneid, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, unsigned int mode) |
ipc_callid_t | async_get_call_timeout (ipc_call_t *call, suseconds_t usecs) |
Return new incoming message for the current (fibril-local) connection. | |
int | async_hangup (int phone) |
Wrapper for ipc_hangup. | |
void | async_msg_0 (int phone, sysarg_t imethod) |
void | async_msg_1 (int phone, sysarg_t imethod, sysarg_t arg1) |
void | async_msg_2 (int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2) |
void | async_msg_3 (int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3) |
void | async_msg_4 (int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4) |
void | async_msg_5 (int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5) |
fid_t | async_new_connection (sysarg_t in_task_hash, sysarg_t in_phone_hash, ipc_callid_t callid, ipc_call_t *call, void(*cfibril)(ipc_callid_t, ipc_call_t *)) |
Create a new fibril for a new connection. | |
void | async_poke (void) |
Interrupt one thread of this task from waiting for IPC. | |
sysarg_t | async_req_fast (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t *r1, sysarg_t *r2, sysarg_t *r3, sysarg_t *r4, sysarg_t *r5) |
Pseudo-synchronous message sending - fast version. | |
sysarg_t | async_req_slow (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, sysarg_t *r1, sysarg_t *r2, sysarg_t *r3, sysarg_t *r4, sysarg_t *r5) |
Pseudo-synchronous message sending - slow version. | |
aid_t | async_send_fast (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, ipc_call_t *dataptr) |
Send message and return id of the sent message. | |
aid_t | async_send_slow (int phoneid, sysarg_t method, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, ipc_call_t *dataptr) |
Send message and return id of the sent message. | |
static void | async_serialize_end (void) |
static void | async_serialize_start (void) |
void | async_set_client_connection (async_client_conn_t conn) |
Setter for client_connection function pointer. | |
void | async_set_client_data_constructor (async_client_data_ctor_t ctor) |
void | async_set_client_data_destructor (async_client_data_dtor_t dtor) |
void | async_set_interrupt_received (async_client_conn_t intr) |
Setter for interrupt_received function pointer. | |
int | async_share_in_finalize (ipc_callid_t callid, void *src, unsigned int flags) |
Wrapper for answering the IPC_M_SHARE_IN calls using the async framework. | |
bool | async_share_in_receive (ipc_callid_t *callid, size_t *size) |
Wrapper for receiving the IPC_M_SHARE_IN calls using the async framework. | |
int | async_share_in_start (int phoneid, void *dst, size_t size, sysarg_t arg, unsigned int *flags) |
Wrapper for IPC_M_SHARE_IN calls using the async framework. | |
int | async_share_out_finalize (ipc_callid_t callid, void *dst) |
Wrapper for answering the IPC_M_SHARE_OUT calls using the async framework. | |
bool | async_share_out_receive (ipc_callid_t *callid, size_t *size, unsigned int *flags) |
Wrapper for receiving the IPC_M_SHARE_OUT calls using the async framework. | |
int | async_share_out_start (int phoneid, void *src, unsigned int flags) |
Wrapper for IPC_M_SHARE_OUT calls using the async framework. | |
void | async_usleep (suseconds_t timeout) |
Wait for specified time. | |
void | async_wait_for (aid_t amsgid, sysarg_t *retval) |
Wait for a message sent by the async framework. | |
int | async_wait_timeout (aid_t amsgid, sysarg_t *retval, suseconds_t timeout) |
Wait for a message sent by the async framework, timeout variant. | |
Variables | |
atomic_t | threads_in_ipc_wait |
Number of threads waiting for IPC in the kernel. |
Definition in file async.h.