Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/async.h

    r47b7006 r23882034  
    3333 */
    3434
    35 #if ((defined(LIBC_IPC_H_)) && (!defined(LIBC_ASYNC_C_)))
    36         #error Do not intermix low-level IPC interface and async framework
    37 #endif
    38 
    3935#ifndef LIBC_ASYNC_H_
    4036#define LIBC_ASYNC_H_
    4137
    42 #include <ipc/common.h>
     38#include <ipc/ipc.h>
    4339#include <async_sess.h>
    4440#include <fibril.h>
     
    4642#include <atomic.h>
    4743#include <bool.h>
    48 #include <task.h>
    4944
    5045typedef ipc_callid_t aid_t;
     
    5550typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *);
    5651
     52extern atomic_t async_futex;
     53
    5754extern atomic_t threads_in_ipc_wait;
    5855
    59 #define async_manager() \
    60         fibril_switch(FIBRIL_TO_MANAGER)
    61 
    62 #define async_get_call(data) \
    63         async_get_call_timeout(data, 0)
    64 
     56extern int __async_init(void);
    6557extern ipc_callid_t async_get_call_timeout(ipc_call_t *, suseconds_t);
     58
     59static inline ipc_callid_t async_get_call(ipc_call_t *data)
     60{
     61        return async_get_call_timeout(data, 0);
     62}
     63
     64static inline void async_manager(void)
     65{
     66        fibril_switch(FIBRIL_TO_MANAGER);
     67}
    6668
    6769/*
     
    108110extern void async_set_interrupt_received(async_client_conn_t);
    109111
    110 /*
    111  * Wrappers for simple communication.
    112  */
    113 
    114 extern void async_msg_0(int, sysarg_t);
    115 extern void async_msg_1(int, sysarg_t, sysarg_t);
    116 extern void async_msg_2(int, sysarg_t, sysarg_t, sysarg_t);
    117 extern void async_msg_3(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t);
    118 extern void async_msg_4(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t);
    119 extern void async_msg_5(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    120     sysarg_t);
    121 
    122 /*
    123  * Wrappers for answer routines.
    124  */
    125 
    126 extern sysarg_t async_answer_0(ipc_callid_t, sysarg_t);
    127 extern sysarg_t async_answer_1(ipc_callid_t, sysarg_t, sysarg_t);
    128 extern sysarg_t async_answer_2(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t);
    129 extern sysarg_t async_answer_3(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
    130     sysarg_t);
    131 extern sysarg_t async_answer_4(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
    132     sysarg_t, sysarg_t);
    133 extern sysarg_t async_answer_5(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
    134     sysarg_t, sysarg_t, sysarg_t);
    135 
    136 /*
    137  * Wrappers for forwarding routines.
    138  */
    139 
    140 extern int async_forward_fast(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,
    141     unsigned int);
    142 extern int async_forward_slow(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,
    143     sysarg_t, sysarg_t, sysarg_t, unsigned int);
     112/* Wrappers for simple communication */
     113#define async_msg_0(phone, method) \
     114        ipc_call_async_0((phone), (method), NULL, NULL, true)
     115#define async_msg_1(phone, method, arg1) \
     116        ipc_call_async_1((phone), (method), (arg1), NULL, NULL, \
     117            true)
     118#define async_msg_2(phone, method, arg1, arg2) \
     119        ipc_call_async_2((phone), (method), (arg1), (arg2), NULL, NULL, \
     120            true)
     121#define async_msg_3(phone, method, arg1, arg2, arg3) \
     122        ipc_call_async_3((phone), (method), (arg1), (arg2), (arg3), NULL, NULL, \
     123            true)
     124#define async_msg_4(phone, method, arg1, arg2, arg3, arg4) \
     125        ipc_call_async_4((phone), (method), (arg1), (arg2), (arg3), (arg4), NULL, \
     126            NULL, true)
     127#define async_msg_5(phone, method, arg1, arg2, arg3, arg4, arg5) \
     128        ipc_call_async_5((phone), (method), (arg1), (arg2), (arg3), (arg4), \
     129            (arg5), NULL, NULL, true)
    144130
    145131/*
     
    149135 * and slow verion based on m.
    150136 */
    151 
    152137#define async_req_0_0(phoneid, method) \
    153138        async_req_fast((phoneid), (method), 0, 0, 0, 0, NULL, NULL, NULL, NULL, \
     
    281266}
    282267
    283 extern int async_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t,
    284     async_client_conn_t);
    285268extern int async_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t);
    286269extern int async_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t);
    287 extern int async_connect_kbox(task_id_t);
    288 extern int async_hangup(int);
    289 extern void async_poke(void);
    290270
    291271/*
    292272 * User-friendly wrappers for async_share_in_start().
    293273 */
    294 
    295274#define async_share_in_start_0_0(phoneid, dst, size) \
    296275        async_share_in_start((phoneid), (dst), (size), 0, NULL)
     
    302281        async_share_in_start((phoneid), (dst), (size), (arg), (flags))
    303282
    304 extern int async_share_in_start(int, void *, size_t, sysarg_t, unsigned int *);
    305 extern bool async_share_in_receive(ipc_callid_t *, size_t *);
    306 extern int async_share_in_finalize(ipc_callid_t, void *, unsigned int);
    307 
    308 extern int async_share_out_start(int, void *, unsigned int);
    309 extern bool async_share_out_receive(ipc_callid_t *, size_t *, unsigned int *);
     283extern int async_share_in_start(int, void *, size_t, sysarg_t, int *);
     284extern int async_share_in_receive(ipc_callid_t *, size_t *);
     285extern int async_share_in_finalize(ipc_callid_t, void *, int );
     286extern int async_share_out_start(int, void *, int);
     287extern int async_share_out_receive(ipc_callid_t *, size_t *, int *);
    310288extern int async_share_out_finalize(ipc_callid_t, void *);
    311289
     
    313291 * User-friendly wrappers for async_data_read_forward_fast().
    314292 */
    315 
    316293#define async_data_read_forward_0_0(phoneid, method, answer) \
    317294        async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL)
     
    341318
    342319extern int async_data_read_start(int, void *, size_t);
    343 extern bool async_data_read_receive(ipc_callid_t *, size_t *);
     320extern int async_data_read_receive(ipc_callid_t *, size_t *);
    344321extern int async_data_read_finalize(ipc_callid_t, const void *, size_t);
    345322
     
    350327 * User-friendly wrappers for async_data_write_forward_fast().
    351328 */
    352 
    353329#define async_data_write_forward_0_0(phoneid, method, answer) \
    354330        async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL)
     
    380356
    381357extern int async_data_write_start(int, const void *, size_t);
    382 extern bool async_data_write_receive(ipc_callid_t *, size_t *);
     358extern int async_data_write_receive(ipc_callid_t *, size_t *);
    383359extern int async_data_write_finalize(ipc_callid_t, void *, size_t);
    384360
    385361extern int async_data_write_accept(void **, const bool, const size_t,
    386362    const size_t, const size_t, size_t *);
    387 extern void async_data_write_void(sysarg_t);
     363extern void async_data_write_void(const int);
    388364
    389365extern int async_data_write_forward_fast(int, sysarg_t, sysarg_t, sysarg_t,
Note: See TracChangeset for help on using the changeset viewer.