Ignore:
File:
1 edited

Legend:

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

    rbeb83c1 r4805495  
    3333 */
    3434
    35 #if ((defined(LIBC_IPC_H_)) && (!defined(LIBC_ASYNC_C_)))
     35#if ((defined(_LIBC_IPC_H_)) && (!defined(_LIBC_ASYNC_C_)))
    3636#error Do not intermix low-level IPC interface and async framework
    3737#endif
    3838
    39 #ifndef LIBC_ASYNC_H_
    40 #define LIBC_ASYNC_H_
     39#ifndef _LIBC_ASYNC_H_
     40#define _LIBC_ASYNC_H_
    4141
    4242#include <ipc/common.h>
    43 #include <fibril.h>
    4443#include <time.h>
    4544#include <stdbool.h>
     
    109108extern __noreturn void async_manager(void);
    110109
    111 #define async_get_call(data) \
    112         async_get_call_timeout(data, 0)
    113 
     110extern bool async_get_call(ipc_call_t *);
    114111extern bool async_get_call_timeout(ipc_call_t *, usec_t);
    115112
    116 /*
    117  * User-friendly wrappers for async_send_fast() and async_send_slow(). The
    118  * macros are in the form async_send_m(), where m denotes the number of payload
    119  * arguments. Each macros chooses between the fast and the slow version based
    120  * on m.
    121  */
    122 
    123 #define async_send_0(exch, method, dataptr) \
    124         async_send_fast(exch, method, 0, 0, 0, 0, dataptr)
    125 #define async_send_1(exch, method, arg1, dataptr) \
    126         async_send_fast(exch, method, arg1, 0, 0, 0, dataptr)
    127 #define async_send_2(exch, method, arg1, arg2, dataptr) \
    128         async_send_fast(exch, method, arg1, arg2, 0, 0, dataptr)
    129 #define async_send_3(exch, method, arg1, arg2, arg3, dataptr) \
    130         async_send_fast(exch, method, arg1, arg2, arg3, 0, dataptr)
    131 #define async_send_4(exch, method, arg1, arg2, arg3, arg4, dataptr) \
    132         async_send_fast(exch, method, arg1, arg2, arg3, arg4, dataptr)
    133 #define async_send_5(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr) \
    134         async_send_slow(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr)
    135 
    136 extern aid_t async_send_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     113extern aid_t async_send_0(async_exch_t *, sysarg_t, ipc_call_t *);
     114extern aid_t async_send_1(async_exch_t *, sysarg_t, sysarg_t, ipc_call_t *);
     115extern aid_t async_send_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     116    ipc_call_t *);
     117extern aid_t async_send_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     118    sysarg_t, ipc_call_t *);
     119extern aid_t async_send_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    137120    sysarg_t, sysarg_t, ipc_call_t *);
    138 extern aid_t async_send_slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     121extern aid_t async_send_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    139122    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    140123
     
    199182 */
    200183
    201 extern errno_t async_forward_fast(ipc_call_t *, async_exch_t *, sysarg_t,
     184extern errno_t async_forward_0(ipc_call_t *, async_exch_t *, sysarg_t,
     185    unsigned int);
     186extern errno_t async_forward_1(ipc_call_t *, async_exch_t *, sysarg_t,
     187    sysarg_t, unsigned int);
     188extern errno_t async_forward_2(ipc_call_t *, async_exch_t *, sysarg_t,
    202189    sysarg_t, sysarg_t, unsigned int);
    203 extern errno_t async_forward_slow(ipc_call_t *, async_exch_t *, sysarg_t,
     190extern errno_t async_forward_3(ipc_call_t *, async_exch_t *, sysarg_t,
     191    sysarg_t, sysarg_t, sysarg_t, unsigned int);
     192extern errno_t async_forward_4(ipc_call_t *, async_exch_t *, sysarg_t,
     193    sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
     194extern errno_t async_forward_5(ipc_call_t *, async_exch_t *, sysarg_t,
    204195    sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
    205196
    206197/*
    207  * User-friendly wrappers for async_req_fast() and async_req_slow(). The macros
    208  * are in the form async_req_m_n(), where m is the number of payload arguments
    209  * and n is the number of return arguments. The macros decide between the fast
    210  * and slow verion based on m.
    211  */
    212 
    213 #define async_req_0_0(exch, method) \
    214         async_req_fast(exch, method, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL)
    215 #define async_req_0_1(exch, method, r1) \
    216         async_req_fast(exch, method, 0, 0, 0, 0, r1, NULL, NULL, NULL, NULL)
    217 #define async_req_0_2(exch, method, r1, r2) \
    218         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, NULL, NULL, NULL)
    219 #define async_req_0_3(exch, method, r1, r2, r3) \
    220         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, NULL, NULL)
    221 #define async_req_0_4(exch, method, r1, r2, r3, r4) \
    222         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, NULL)
    223 #define async_req_0_5(exch, method, r1, r2, r3, r4, r5) \
    224         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, r5)
    225 
    226 #define async_req_1_0(exch, method, arg1) \
    227         async_req_fast(exch, method, arg1, 0, 0, 0, NULL, NULL, NULL, NULL, \
    228             NULL)
    229 #define async_req_1_1(exch, method, arg1, rc1) \
    230         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, NULL, NULL, NULL, \
    231             NULL)
    232 #define async_req_1_2(exch, method, arg1, rc1, rc2) \
    233         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, NULL, NULL, \
    234             NULL)
    235 #define async_req_1_3(exch, method, arg1, rc1, rc2, rc3) \
    236         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, NULL, \
    237             NULL)
    238 #define async_req_1_4(exch, method, arg1, rc1, rc2, rc3, rc4) \
    239         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \
    240             NULL)
    241 #define async_req_1_5(exch, method, arg1, rc1, rc2, rc3, rc4, rc5) \
    242         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \
    243             rc5)
    244 
    245 #define async_req_2_0(exch, method, arg1, arg2) \
    246         async_req_fast(exch, method, arg1, arg2, 0, 0, NULL, NULL, NULL, \
    247             NULL, NULL)
    248 #define async_req_2_1(exch, method, arg1, arg2, rc1) \
    249         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, NULL, NULL, \
    250             NULL, NULL)
    251 #define async_req_2_2(exch, method, arg1, arg2, rc1, rc2) \
    252         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, NULL, NULL, \
    253             NULL)
    254 #define async_req_2_3(exch, method, arg1, arg2, rc1, rc2, rc3) \
    255         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, NULL, \
    256             NULL)
    257 #define async_req_2_4(exch, method, arg1, arg2, rc1, rc2, rc3, rc4) \
    258         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \
    259             NULL)
    260 #define async_req_2_5(exch, method, arg1, arg2, rc1, rc2, rc3, rc4, rc5) \
    261         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \
    262             rc5)
    263 
    264 #define async_req_3_0(exch, method, arg1, arg2, arg3) \
    265         async_req_fast(exch, method, arg1, arg2, arg3, 0, NULL, NULL, NULL, \
    266             NULL, NULL)
    267 #define async_req_3_1(exch, method, arg1, arg2, arg3, rc1) \
    268         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, NULL, NULL, \
    269             NULL, NULL)
    270 #define async_req_3_2(exch, method, arg1, arg2, arg3, rc1, rc2) \
    271         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, NULL, \
    272             NULL, NULL)
    273 #define async_req_3_3(exch, method, arg1, arg2, arg3, rc1, rc2, rc3) \
    274         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    275             NULL, NULL)
    276 #define async_req_3_4(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4) \
    277         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    278             rc4, NULL)
    279 #define async_req_3_5(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4, \
    280     rc5) \
    281         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    282             rc4, rc5)
    283 
    284 #define async_req_4_0(exch, method, arg1, arg2, arg3, arg4) \
    285         async_req_fast(exch, method, arg1, arg2, arg3, arg4, NULL, NULL, \
    286             NULL, NULL, NULL)
    287 #define async_req_4_1(exch, method, arg1, arg2, arg3, arg4, rc1) \
    288         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, NULL, \
    289             NULL, NULL, NULL)
    290 #define async_req_4_2(exch, method, arg1, arg2, arg3, arg4, rc1, rc2) \
    291         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, NULL, \
    292             NULL, NULL)
    293 #define async_req_4_3(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3) \
    294         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    295             NULL, NULL)
    296 #define async_req_4_4(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    297     rc4) \
    298         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    299             rc4, NULL)
    300 #define async_req_4_5(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    301     rc4, rc5) \
    302         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    303             rc4, rc5)
    304 
    305 #define async_req_5_0(exch, method, arg1, arg2, arg3, arg4, arg5) \
    306         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, NULL, \
    307             NULL, NULL, NULL, NULL)
    308 #define async_req_5_1(exch, method, arg1, arg2, arg3, arg4, arg5, rc1) \
    309         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, \
    310             NULL, NULL, NULL, NULL)
    311 #define async_req_5_2(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2) \
    312         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    313             NULL, NULL, NULL)
    314 #define async_req_5_3(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    315     rc3) \
    316         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    317             rc3, NULL, NULL)
    318 #define async_req_5_4(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    319     rc3, rc4) \
    320         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    321             rc3, rc4, NULL)
    322 #define async_req_5_5(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    323     rc3, rc4, rc5) \
    324         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    325             rc3, rc4, rc5)
    326 
    327 extern errno_t async_req_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     198 * User-friendly wrappers for async_req_*_*().
     199 * The functions are in the form async_req_m_n(), where m is the number of
     200 * payload arguments and n is the number of return arguments.
     201 */
     202
     203extern errno_t async_req_0_0(async_exch_t *, sysarg_t);
     204extern errno_t async_req_0_1(async_exch_t *, sysarg_t, sysarg_t *);
     205extern errno_t async_req_0_2(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *);
     206extern errno_t async_req_0_3(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *,
     207    sysarg_t *);
     208extern errno_t async_req_0_4(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *,
     209    sysarg_t *, sysarg_t *);
     210extern errno_t async_req_0_5(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *,
     211    sysarg_t *, sysarg_t *, sysarg_t *);
     212extern errno_t async_req_1_0(async_exch_t *, sysarg_t, sysarg_t);
     213extern errno_t async_req_1_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *);
     214extern errno_t async_req_1_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *,
     215    sysarg_t *);
     216extern errno_t async_req_1_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *,
     217    sysarg_t *, sysarg_t *);
     218extern errno_t async_req_1_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *,
     219    sysarg_t *, sysarg_t *, sysarg_t *);
     220extern errno_t async_req_1_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *,
     221    sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     222extern errno_t async_req_2_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t);
     223extern errno_t async_req_2_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     224    sysarg_t *);
     225extern errno_t async_req_2_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     226    sysarg_t *, sysarg_t *);
     227extern errno_t async_req_2_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     228    sysarg_t *, sysarg_t *, sysarg_t *);
     229extern errno_t async_req_2_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     230    sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     231extern errno_t async_req_2_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     232    sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     233extern errno_t async_req_3_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     234    sysarg_t);
     235extern errno_t async_req_3_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     236    sysarg_t, sysarg_t *);
     237extern errno_t async_req_3_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     238    sysarg_t, sysarg_t *, sysarg_t *);
     239extern errno_t async_req_3_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     240    sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *);
     241extern errno_t async_req_3_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     242    sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     243extern errno_t async_req_3_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     244    sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     245extern errno_t async_req_4_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     246    sysarg_t, sysarg_t);
     247extern errno_t async_req_4_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     248    sysarg_t, sysarg_t, sysarg_t *);
     249extern errno_t async_req_4_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     250    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *);
     251extern errno_t async_req_4_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     252    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *);
     253extern errno_t async_req_4_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     254    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *);
     255extern errno_t async_req_4_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    328256    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *,
    329257    sysarg_t *);
    330 extern errno_t async_req_slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     258extern errno_t async_req_5_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     259    sysarg_t, sysarg_t, sysarg_t);
     260extern errno_t async_req_5_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     261    sysarg_t, sysarg_t, sysarg_t, sysarg_t *);
     262extern errno_t async_req_5_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     263    sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *);
     264extern errno_t async_req_5_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     265    sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *);
     266extern errno_t async_req_5_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
     267    sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *,
     268    sysarg_t *);
     269extern errno_t async_req_5_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    331270    sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *,
    332271    sysarg_t *, sysarg_t *);
     
    358297 */
    359298
    360 #define async_share_in_start_0_0(exch, size, dst) \
    361         async_share_in_start(exch, size, 0, NULL, dst)
    362 #define async_share_in_start_0_1(exch, size, flags, dst) \
    363         async_share_in_start(exch, size, 0, flags, dst)
    364 #define async_share_in_start_1_0(exch, size, arg, dst) \
    365         async_share_in_start(exch, size, arg, NULL, dst)
    366 #define async_share_in_start_1_1(exch, size, arg, flags, dst) \
    367         async_share_in_start(exch, size, arg, flags, dst)
    368 
    369 extern errno_t async_share_in_start(async_exch_t *, size_t, sysarg_t,
     299extern errno_t async_share_in_start_0_0(async_exch_t *, size_t, void **);
     300extern errno_t async_share_in_start_0_1(async_exch_t *, size_t,
    370301    unsigned int *, void **);
     302extern errno_t async_share_in_start_1_0(async_exch_t *, size_t, sysarg_t,
     303    void **);
     304extern errno_t async_share_in_start_1_1(async_exch_t *, size_t, sysarg_t,
     305    unsigned int *, void **);
     306
    371307extern bool async_share_in_receive(ipc_call_t *, size_t *);
    372308extern errno_t async_share_in_finalize(ipc_call_t *, void *, unsigned int);
     
    376312extern errno_t async_share_out_finalize(ipc_call_t *, void **);
    377313
    378 /*
    379  * User-friendly wrappers for async_data_read_forward_fast().
    380  */
    381 
    382 #define async_data_read_forward_0_0(exch, method, answer) \
    383         async_data_read_forward_fast(exch, method, 0, 0, 0, 0, NULL)
    384 #define async_data_read_forward_0_1(exch, method, answer) \
    385         async_data_read_forward_fast(exch, method, 0, 0, 0, 0, answer)
    386 #define async_data_read_forward_1_0(exch, method, arg1, answer) \
    387         async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, NULL)
    388 #define async_data_read_forward_1_1(exch, method, arg1, answer) \
    389         async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, answer)
    390 #define async_data_read_forward_2_0(exch, method, arg1, arg2, answer) \
    391         async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, NULL)
    392 #define async_data_read_forward_2_1(exch, method, arg1, arg2, answer) \
    393         async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, answer)
    394 #define async_data_read_forward_3_0(exch, method, arg1, arg2, arg3, answer) \
    395         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, NULL)
    396 #define async_data_read_forward_3_1(exch, method, arg1, arg2, arg3, answer) \
    397         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    398             answer)
    399 #define async_data_read_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \
    400     answer) \
    401         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    402             NULL)
    403 #define async_data_read_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \
    404     answer) \
    405         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    406             answer)
     314extern errno_t async_data_read_forward_0_0(async_exch_t *, sysarg_t);
     315extern errno_t async_data_read_forward_1_0(async_exch_t *, sysarg_t, sysarg_t);
     316extern errno_t async_data_read_forward_2_0(async_exch_t *, sysarg_t, sysarg_t,
     317    sysarg_t);
     318extern errno_t async_data_read_forward_3_0(async_exch_t *, sysarg_t, sysarg_t,
     319    sysarg_t, sysarg_t);
     320extern errno_t async_data_read_forward_4_0(async_exch_t *, sysarg_t, sysarg_t,
     321    sysarg_t, sysarg_t, sysarg_t);
     322
     323extern errno_t async_data_read_forward_0_1(async_exch_t *, sysarg_t,
     324    ipc_call_t *);
     325extern errno_t async_data_read_forward_1_1(async_exch_t *, sysarg_t, sysarg_t,
     326    ipc_call_t *);
     327extern errno_t async_data_read_forward_2_1(async_exch_t *, sysarg_t, sysarg_t,
     328    sysarg_t, ipc_call_t *);
     329extern errno_t async_data_read_forward_3_1(async_exch_t *, sysarg_t, sysarg_t,
     330    sysarg_t, sysarg_t, ipc_call_t *);
     331extern errno_t async_data_read_forward_4_1(async_exch_t *, sysarg_t, sysarg_t,
     332    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    407333
    408334extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *);
     
    411337extern errno_t async_data_read_finalize(ipc_call_t *, const void *, size_t);
    412338
    413 extern errno_t async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     339extern errno_t async_data_write_forward_0_0(async_exch_t *, sysarg_t);
     340extern errno_t async_data_write_forward_1_0(async_exch_t *, sysarg_t, sysarg_t);
     341extern errno_t async_data_write_forward_2_0(async_exch_t *, sysarg_t, sysarg_t,
     342    sysarg_t);
     343extern errno_t async_data_write_forward_3_0(async_exch_t *, sysarg_t, sysarg_t,
     344    sysarg_t, sysarg_t);
     345extern errno_t async_data_write_forward_4_0(async_exch_t *, sysarg_t, sysarg_t,
     346    sysarg_t, sysarg_t, sysarg_t);
     347
     348extern errno_t async_data_write_forward_0_1(async_exch_t *, sysarg_t,
     349    ipc_call_t *);
     350extern errno_t async_data_write_forward_1_1(async_exch_t *, sysarg_t, sysarg_t,
     351    ipc_call_t *);
     352extern errno_t async_data_write_forward_2_1(async_exch_t *, sysarg_t, sysarg_t,
     353    sysarg_t, ipc_call_t *);
     354extern errno_t async_data_write_forward_3_1(async_exch_t *, sysarg_t, sysarg_t,
     355    sysarg_t, sysarg_t, ipc_call_t *);
     356extern errno_t async_data_write_forward_4_1(async_exch_t *, sysarg_t, sysarg_t,
    414357    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    415 
    416 /*
    417  * User-friendly wrappers for async_data_write_forward_fast().
    418  */
    419 
    420 #define async_data_write_forward_0_0(exch, method, answer) \
    421         async_data_write_forward_fast(exch, method, 0, 0, 0, 0, NULL)
    422 #define async_data_write_forward_0_1(exch, method, answer) \
    423         async_data_write_forward_fast(exch, method, 0, 0, 0, 0, answer)
    424 #define async_data_write_forward_1_0(exch, method, arg1, answer) \
    425         async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, NULL)
    426 #define async_data_write_forward_1_1(exch, method, arg1, answer) \
    427         async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, answer)
    428 #define async_data_write_forward_2_0(exch, method, arg1, arg2, answer) \
    429         async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, NULL)
    430 #define async_data_write_forward_2_1(exch, method, arg1, arg2, answer) \
    431         async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, answer)
    432 #define async_data_write_forward_3_0(exch, method, arg1, arg2, arg3, answer) \
    433         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    434             NULL)
    435 #define async_data_write_forward_3_1(exch, method, arg1, arg2, arg3, answer) \
    436         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    437             answer)
    438 #define async_data_write_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \
    439     answer) \
    440         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    441             NULL)
    442 #define async_data_write_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \
    443     answer) \
    444         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    445             answer)
    446358
    447359extern errno_t async_data_write_start(async_exch_t *, const void *, size_t);
     
    452364    const size_t, const size_t, size_t *);
    453365extern void async_data_write_void(errno_t);
    454 
    455 extern errno_t async_data_write_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
    456     sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    457366
    458367extern async_sess_t *async_callback_receive(exch_mgmt_t);
     
    473382
    474383errno_t async_spawn_notification_handler(void);
    475 fid_t async_create_manager(void);
    476384
    477385#endif
Note: See TracChangeset for help on using the changeset viewer.