Changeset d5a89a3 in mainline for uspace/lib/c/include/async.h
- Timestamp:
- 2019-02-11T22:31:04Z (6 years ago)
- Children:
- aaf9789c
- Parents:
- e3272101 (diff), 4805495 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/async.h
re3272101 rd5a89a3 33 33 */ 34 34 35 #if ((defined( LIBC_IPC_H_)) && (!defined(LIBC_ASYNC_C_)))35 #if ((defined(_LIBC_IPC_H_)) && (!defined(_LIBC_ASYNC_C_))) 36 36 #error Do not intermix low-level IPC interface and async framework 37 37 #endif 38 38 39 #ifndef LIBC_ASYNC_H_40 #define LIBC_ASYNC_H_39 #ifndef _LIBC_ASYNC_H_ 40 #define _LIBC_ASYNC_H_ 41 41 42 42 #include <ipc/common.h> 43 #include <fibril.h>44 43 #include <time.h> 45 44 #include <stdbool.h> … … 109 108 extern __noreturn void async_manager(void); 110 109 111 #define async_get_call(data) \ 112 async_get_call_timeout(data, 0) 113 110 extern bool async_get_call(ipc_call_t *); 114 111 extern bool async_get_call_timeout(ipc_call_t *, usec_t); 115 112 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, 113 extern aid_t async_send_0(async_exch_t *, sysarg_t, ipc_call_t *); 114 extern aid_t async_send_1(async_exch_t *, sysarg_t, sysarg_t, ipc_call_t *); 115 extern aid_t async_send_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 116 ipc_call_t *); 117 extern aid_t async_send_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 118 sysarg_t, ipc_call_t *); 119 extern aid_t async_send_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 137 120 sysarg_t, sysarg_t, ipc_call_t *); 138 extern aid_t async_send_ slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,121 extern aid_t async_send_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 139 122 sysarg_t, sysarg_t, sysarg_t, ipc_call_t *); 140 123 … … 199 182 */ 200 183 201 extern errno_t async_forward_fast(ipc_call_t *, async_exch_t *, sysarg_t, 184 extern errno_t async_forward_0(ipc_call_t *, async_exch_t *, sysarg_t, 185 unsigned int); 186 extern errno_t async_forward_1(ipc_call_t *, async_exch_t *, sysarg_t, 187 sysarg_t, unsigned int); 188 extern errno_t async_forward_2(ipc_call_t *, async_exch_t *, sysarg_t, 202 189 sysarg_t, sysarg_t, unsigned int); 203 extern errno_t async_forward_slow(ipc_call_t *, async_exch_t *, sysarg_t, 190 extern errno_t async_forward_3(ipc_call_t *, async_exch_t *, sysarg_t, 191 sysarg_t, sysarg_t, sysarg_t, unsigned int); 192 extern errno_t async_forward_4(ipc_call_t *, async_exch_t *, sysarg_t, 193 sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int); 194 extern errno_t async_forward_5(ipc_call_t *, async_exch_t *, sysarg_t, 204 195 sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int); 205 196 206 197 /* 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 203 extern errno_t async_req_0_0(async_exch_t *, sysarg_t); 204 extern errno_t async_req_0_1(async_exch_t *, sysarg_t, sysarg_t *); 205 extern errno_t async_req_0_2(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *); 206 extern errno_t async_req_0_3(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *, 207 sysarg_t *); 208 extern errno_t async_req_0_4(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *, 209 sysarg_t *, sysarg_t *); 210 extern errno_t async_req_0_5(async_exch_t *, sysarg_t, sysarg_t *, sysarg_t *, 211 sysarg_t *, sysarg_t *, sysarg_t *); 212 extern errno_t async_req_1_0(async_exch_t *, sysarg_t, sysarg_t); 213 extern errno_t async_req_1_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *); 214 extern errno_t async_req_1_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *, 215 sysarg_t *); 216 extern errno_t async_req_1_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *, 217 sysarg_t *, sysarg_t *); 218 extern errno_t async_req_1_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *, 219 sysarg_t *, sysarg_t *, sysarg_t *); 220 extern errno_t async_req_1_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t *, 221 sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *); 222 extern errno_t async_req_2_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t); 223 extern errno_t async_req_2_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 224 sysarg_t *); 225 extern errno_t async_req_2_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 226 sysarg_t *, sysarg_t *); 227 extern errno_t async_req_2_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 228 sysarg_t *, sysarg_t *, sysarg_t *); 229 extern errno_t async_req_2_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 230 sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *); 231 extern 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 *); 233 extern errno_t async_req_3_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 234 sysarg_t); 235 extern errno_t async_req_3_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 236 sysarg_t, sysarg_t *); 237 extern errno_t async_req_3_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 238 sysarg_t, sysarg_t *, sysarg_t *); 239 extern errno_t async_req_3_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 240 sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *); 241 extern 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 *); 243 extern 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 *); 245 extern errno_t async_req_4_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 246 sysarg_t, sysarg_t); 247 extern errno_t async_req_4_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 248 sysarg_t, sysarg_t, sysarg_t *); 249 extern errno_t async_req_4_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 250 sysarg_t, sysarg_t, sysarg_t *, sysarg_t *); 251 extern 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 *); 253 extern 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 *); 255 extern errno_t async_req_4_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 328 256 sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *, 329 257 sysarg_t *); 330 extern errno_t async_req_slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 258 extern errno_t async_req_5_0(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 259 sysarg_t, sysarg_t, sysarg_t); 260 extern errno_t async_req_5_1(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 261 sysarg_t, sysarg_t, sysarg_t, sysarg_t *); 262 extern 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 *); 264 extern 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 *); 266 extern 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 *); 269 extern errno_t async_req_5_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 331 270 sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, 332 271 sysarg_t *, sysarg_t *); … … 358 297 */ 359 298 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, 299 extern errno_t async_share_in_start_0_0(async_exch_t *, size_t, void **); 300 extern errno_t async_share_in_start_0_1(async_exch_t *, size_t, 370 301 unsigned int *, void **); 302 extern errno_t async_share_in_start_1_0(async_exch_t *, size_t, sysarg_t, 303 void **); 304 extern errno_t async_share_in_start_1_1(async_exch_t *, size_t, sysarg_t, 305 unsigned int *, void **); 306 371 307 extern bool async_share_in_receive(ipc_call_t *, size_t *); 372 308 extern errno_t async_share_in_finalize(ipc_call_t *, void *, unsigned int); … … 376 312 extern errno_t async_share_out_finalize(ipc_call_t *, void **); 377 313 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) 314 extern errno_t async_data_read_forward_0_0(async_exch_t *, sysarg_t); 315 extern errno_t async_data_read_forward_1_0(async_exch_t *, sysarg_t, sysarg_t); 316 extern errno_t async_data_read_forward_2_0(async_exch_t *, sysarg_t, sysarg_t, 317 sysarg_t); 318 extern errno_t async_data_read_forward_3_0(async_exch_t *, sysarg_t, sysarg_t, 319 sysarg_t, sysarg_t); 320 extern errno_t async_data_read_forward_4_0(async_exch_t *, sysarg_t, sysarg_t, 321 sysarg_t, sysarg_t, sysarg_t); 322 323 extern errno_t async_data_read_forward_0_1(async_exch_t *, sysarg_t, 324 ipc_call_t *); 325 extern errno_t async_data_read_forward_1_1(async_exch_t *, sysarg_t, sysarg_t, 326 ipc_call_t *); 327 extern errno_t async_data_read_forward_2_1(async_exch_t *, sysarg_t, sysarg_t, 328 sysarg_t, ipc_call_t *); 329 extern errno_t async_data_read_forward_3_1(async_exch_t *, sysarg_t, sysarg_t, 330 sysarg_t, sysarg_t, ipc_call_t *); 331 extern 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 *); 407 333 408 334 extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *); … … 411 337 extern errno_t async_data_read_finalize(ipc_call_t *, const void *, size_t); 412 338 413 extern errno_t async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t, 339 extern errno_t async_data_write_forward_0_0(async_exch_t *, sysarg_t); 340 extern errno_t async_data_write_forward_1_0(async_exch_t *, sysarg_t, sysarg_t); 341 extern errno_t async_data_write_forward_2_0(async_exch_t *, sysarg_t, sysarg_t, 342 sysarg_t); 343 extern errno_t async_data_write_forward_3_0(async_exch_t *, sysarg_t, sysarg_t, 344 sysarg_t, sysarg_t); 345 extern errno_t async_data_write_forward_4_0(async_exch_t *, sysarg_t, sysarg_t, 346 sysarg_t, sysarg_t, sysarg_t); 347 348 extern errno_t async_data_write_forward_0_1(async_exch_t *, sysarg_t, 349 ipc_call_t *); 350 extern errno_t async_data_write_forward_1_1(async_exch_t *, sysarg_t, sysarg_t, 351 ipc_call_t *); 352 extern errno_t async_data_write_forward_2_1(async_exch_t *, sysarg_t, sysarg_t, 353 sysarg_t, ipc_call_t *); 354 extern errno_t async_data_write_forward_3_1(async_exch_t *, sysarg_t, sysarg_t, 355 sysarg_t, sysarg_t, ipc_call_t *); 356 extern errno_t async_data_write_forward_4_1(async_exch_t *, sysarg_t, sysarg_t, 414 357 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)446 358 447 359 extern errno_t async_data_write_start(async_exch_t *, const void *, size_t); … … 452 364 const size_t, const size_t, size_t *); 453 365 extern 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 *);457 366 458 367 extern async_sess_t *async_callback_receive(exch_mgmt_t); … … 473 382 474 383 errno_t async_spawn_notification_handler(void); 475 fid_t async_create_manager(void);476 384 477 385 #endif
Note:
See TracChangeset
for help on using the changeset viewer.