Changeset 5b3e74a in mainline for uspace/lib/c/include/async.h


Ignore:
Timestamp:
2019-01-11T19:41:27Z (5 years ago)
Author:
Jiří Zárevúcky <zarevucky.jiri@…>
Children:
394e22f
Parents:
fec7ba0
Message:

Remove async "fast" and "slow" functions from public interface

"fast" and "slow" paths are implementation detail.
All macros in <async.h> are turned into external functions, so that
this implementation detail doesn't leak. Additionally, removing macros is
A Good Thing on its own, e.g. helping C++ interoperability.

File:
1 edited

Legend:

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

    rfec7ba0 r5b3e74a  
    108108extern __noreturn void async_manager(void);
    109109
    110 #define async_get_call(data) \
    111         async_get_call_timeout(data, 0)
    112 
     110extern bool async_get_call(ipc_call_t *);
    113111extern bool async_get_call_timeout(ipc_call_t *, usec_t);
    114112
    115 /*
    116  * User-friendly wrappers for async_send_fast() and async_send_slow(). The
    117  * macros are in the form async_send_m(), where m denotes the number of payload
    118  * arguments. Each macros chooses between the fast and the slow version based
    119  * on m.
    120  */
    121 
    122 #define async_send_0(exch, method, dataptr) \
    123         async_send_fast(exch, method, 0, 0, 0, 0, dataptr)
    124 #define async_send_1(exch, method, arg1, dataptr) \
    125         async_send_fast(exch, method, arg1, 0, 0, 0, dataptr)
    126 #define async_send_2(exch, method, arg1, arg2, dataptr) \
    127         async_send_fast(exch, method, arg1, arg2, 0, 0, dataptr)
    128 #define async_send_3(exch, method, arg1, arg2, arg3, dataptr) \
    129         async_send_fast(exch, method, arg1, arg2, arg3, 0, dataptr)
    130 #define async_send_4(exch, method, arg1, arg2, arg3, arg4, dataptr) \
    131         async_send_fast(exch, method, arg1, arg2, arg3, arg4, dataptr)
    132 #define async_send_5(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr) \
    133         async_send_slow(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr)
    134 
    135 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,
    136120    sysarg_t, sysarg_t, ipc_call_t *);
    137 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,
    138122    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    139123
     
    198182 */
    199183
    200 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,
    201189    sysarg_t, sysarg_t, unsigned int);
    202 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,
    203195    sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
    204196
    205197/*
    206  * User-friendly wrappers for async_req_fast() and async_req_slow(). The macros
    207  * are in the form async_req_m_n(), where m is the number of payload arguments
    208  * and n is the number of return arguments. The macros decide between the fast
    209  * and slow verion based on m.
    210  */
    211 
    212 #define async_req_0_0(exch, method) \
    213         async_req_fast(exch, method, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL)
    214 #define async_req_0_1(exch, method, r1) \
    215         async_req_fast(exch, method, 0, 0, 0, 0, r1, NULL, NULL, NULL, NULL)
    216 #define async_req_0_2(exch, method, r1, r2) \
    217         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, NULL, NULL, NULL)
    218 #define async_req_0_3(exch, method, r1, r2, r3) \
    219         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, NULL, NULL)
    220 #define async_req_0_4(exch, method, r1, r2, r3, r4) \
    221         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, NULL)
    222 #define async_req_0_5(exch, method, r1, r2, r3, r4, r5) \
    223         async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, r5)
    224 
    225 #define async_req_1_0(exch, method, arg1) \
    226         async_req_fast(exch, method, arg1, 0, 0, 0, NULL, NULL, NULL, NULL, \
    227             NULL)
    228 #define async_req_1_1(exch, method, arg1, rc1) \
    229         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, NULL, NULL, NULL, \
    230             NULL)
    231 #define async_req_1_2(exch, method, arg1, rc1, rc2) \
    232         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, NULL, NULL, \
    233             NULL)
    234 #define async_req_1_3(exch, method, arg1, rc1, rc2, rc3) \
    235         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, NULL, \
    236             NULL)
    237 #define async_req_1_4(exch, method, arg1, rc1, rc2, rc3, rc4) \
    238         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \
    239             NULL)
    240 #define async_req_1_5(exch, method, arg1, rc1, rc2, rc3, rc4, rc5) \
    241         async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \
    242             rc5)
    243 
    244 #define async_req_2_0(exch, method, arg1, arg2) \
    245         async_req_fast(exch, method, arg1, arg2, 0, 0, NULL, NULL, NULL, \
    246             NULL, NULL)
    247 #define async_req_2_1(exch, method, arg1, arg2, rc1) \
    248         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, NULL, NULL, \
    249             NULL, NULL)
    250 #define async_req_2_2(exch, method, arg1, arg2, rc1, rc2) \
    251         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, NULL, NULL, \
    252             NULL)
    253 #define async_req_2_3(exch, method, arg1, arg2, rc1, rc2, rc3) \
    254         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, NULL, \
    255             NULL)
    256 #define async_req_2_4(exch, method, arg1, arg2, rc1, rc2, rc3, rc4) \
    257         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \
    258             NULL)
    259 #define async_req_2_5(exch, method, arg1, arg2, rc1, rc2, rc3, rc4, rc5) \
    260         async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \
    261             rc5)
    262 
    263 #define async_req_3_0(exch, method, arg1, arg2, arg3) \
    264         async_req_fast(exch, method, arg1, arg2, arg3, 0, NULL, NULL, NULL, \
    265             NULL, NULL)
    266 #define async_req_3_1(exch, method, arg1, arg2, arg3, rc1) \
    267         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, NULL, NULL, \
    268             NULL, NULL)
    269 #define async_req_3_2(exch, method, arg1, arg2, arg3, rc1, rc2) \
    270         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, NULL, \
    271             NULL, NULL)
    272 #define async_req_3_3(exch, method, arg1, arg2, arg3, rc1, rc2, rc3) \
    273         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    274             NULL, NULL)
    275 #define async_req_3_4(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4) \
    276         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    277             rc4, NULL)
    278 #define async_req_3_5(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4, \
    279     rc5) \
    280         async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \
    281             rc4, rc5)
    282 
    283 #define async_req_4_0(exch, method, arg1, arg2, arg3, arg4) \
    284         async_req_fast(exch, method, arg1, arg2, arg3, arg4, NULL, NULL, \
    285             NULL, NULL, NULL)
    286 #define async_req_4_1(exch, method, arg1, arg2, arg3, arg4, rc1) \
    287         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, NULL, \
    288             NULL, NULL, NULL)
    289 #define async_req_4_2(exch, method, arg1, arg2, arg3, arg4, rc1, rc2) \
    290         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, NULL, \
    291             NULL, NULL)
    292 #define async_req_4_3(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3) \
    293         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    294             NULL, NULL)
    295 #define async_req_4_4(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    296     rc4) \
    297         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    298             rc4, NULL)
    299 #define async_req_4_5(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    300     rc4, rc5) \
    301         async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \
    302             rc4, rc5)
    303 
    304 #define async_req_5_0(exch, method, arg1, arg2, arg3, arg4, arg5) \
    305         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, NULL, \
    306             NULL, NULL, NULL, NULL)
    307 #define async_req_5_1(exch, method, arg1, arg2, arg3, arg4, arg5, rc1) \
    308         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, \
    309             NULL, NULL, NULL, NULL)
    310 #define async_req_5_2(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2) \
    311         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    312             NULL, NULL, NULL)
    313 #define async_req_5_3(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    314     rc3) \
    315         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    316             rc3, NULL, NULL)
    317 #define async_req_5_4(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    318     rc3, rc4) \
    319         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    320             rc3, rc4, NULL)
    321 #define async_req_5_5(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    322     rc3, rc4, rc5) \
    323         async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \
    324             rc3, rc4, rc5)
    325 
    326 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,
    327256    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *,
    328257    sysarg_t *);
    329 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,
    330270    sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *,
    331271    sysarg_t *, sysarg_t *);
     
    357297 */
    358298
    359 #define async_share_in_start_0_0(exch, size, dst) \
    360         async_share_in_start(exch, size, 0, NULL, dst)
    361 #define async_share_in_start_0_1(exch, size, flags, dst) \
    362         async_share_in_start(exch, size, 0, flags, dst)
    363 #define async_share_in_start_1_0(exch, size, arg, dst) \
    364         async_share_in_start(exch, size, arg, NULL, dst)
    365 #define async_share_in_start_1_1(exch, size, arg, flags, dst) \
    366         async_share_in_start(exch, size, arg, flags, dst)
    367 
    368 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,
    369301    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
    370307extern bool async_share_in_receive(ipc_call_t *, size_t *);
    371308extern errno_t async_share_in_finalize(ipc_call_t *, void *, unsigned int);
     
    375312extern errno_t async_share_out_finalize(ipc_call_t *, void **);
    376313
    377 /*
    378  * User-friendly wrappers for async_data_read_forward_fast().
    379  */
    380 
    381 #define async_data_read_forward_0_0(exch, method, answer) \
    382         async_data_read_forward_fast(exch, method, 0, 0, 0, 0, NULL)
    383 #define async_data_read_forward_0_1(exch, method, answer) \
    384         async_data_read_forward_fast(exch, method, 0, 0, 0, 0, answer)
    385 #define async_data_read_forward_1_0(exch, method, arg1, answer) \
    386         async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, NULL)
    387 #define async_data_read_forward_1_1(exch, method, arg1, answer) \
    388         async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, answer)
    389 #define async_data_read_forward_2_0(exch, method, arg1, arg2, answer) \
    390         async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, NULL)
    391 #define async_data_read_forward_2_1(exch, method, arg1, arg2, answer) \
    392         async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, answer)
    393 #define async_data_read_forward_3_0(exch, method, arg1, arg2, arg3, answer) \
    394         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, NULL)
    395 #define async_data_read_forward_3_1(exch, method, arg1, arg2, arg3, answer) \
    396         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    397             answer)
    398 #define async_data_read_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \
    399     answer) \
    400         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    401             NULL)
    402 #define async_data_read_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \
    403     answer) \
    404         async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    405             answer)
     314extern errno_t async_data_read_forward_4_1(async_exch_t *, sysarg_t, sysarg_t,
     315    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    406316
    407317extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *);
     
    410320extern errno_t async_data_read_finalize(ipc_call_t *, const void *, size_t);
    411321
    412 extern errno_t async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     322extern errno_t async_data_write_forward_4_1(async_exch_t *, sysarg_t, sysarg_t,
    413323    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    414 
    415 /*
    416  * User-friendly wrappers for async_data_write_forward_fast().
    417  */
    418 
    419 #define async_data_write_forward_0_0(exch, method, answer) \
    420         async_data_write_forward_fast(exch, method, 0, 0, 0, 0, NULL)
    421 #define async_data_write_forward_0_1(exch, method, answer) \
    422         async_data_write_forward_fast(exch, method, 0, 0, 0, 0, answer)
    423 #define async_data_write_forward_1_0(exch, method, arg1, answer) \
    424         async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, NULL)
    425 #define async_data_write_forward_1_1(exch, method, arg1, answer) \
    426         async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, answer)
    427 #define async_data_write_forward_2_0(exch, method, arg1, arg2, answer) \
    428         async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, NULL)
    429 #define async_data_write_forward_2_1(exch, method, arg1, arg2, answer) \
    430         async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, answer)
    431 #define async_data_write_forward_3_0(exch, method, arg1, arg2, arg3, answer) \
    432         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    433             NULL)
    434 #define async_data_write_forward_3_1(exch, method, arg1, arg2, arg3, answer) \
    435         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \
    436             answer)
    437 #define async_data_write_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \
    438     answer) \
    439         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    440             NULL)
    441 #define async_data_write_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \
    442     answer) \
    443         async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \
    444             answer)
    445324
    446325extern errno_t async_data_write_start(async_exch_t *, const void *, size_t);
     
    451330    const size_t, const size_t, size_t *);
    452331extern void async_data_write_void(errno_t);
    453 
    454 extern errno_t async_data_write_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
    455     sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    456332
    457333extern async_sess_t *async_callback_receive(exch_mgmt_t);
Note: See TracChangeset for help on using the changeset viewer.