Changeset 9c16c36 in mainline for uspace/lib/c/include/async.h
- Timestamp:
- 2018-06-07T17:00:32Z (7 years ago)
- Children:
- 95faa4d
- Parents:
- 8404342
- git-author:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-05-25 17:07:26)
- git-committer:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-06-07 17:00:32)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/async.h
r8404342 r9c16c36 492 492 sysarg_t, sysarg_t, sysarg_t); 493 493 494 struct async_call_data; 495 496 typedef errno_t (*async_call_finalizer_t)(struct async_call_data *); 497 498 typedef struct async_call_data { 499 // public 500 ipc_call_t answer; 501 502 // private 503 link_t link; 504 void *arg1; 505 void *arg2; 506 aid_t msgid; 507 async_call_finalizer_t finalizer; 508 } async_call_data_t; 509 510 typedef struct async_call { 511 // public 512 async_call_data_t initial; 513 514 // private 515 list_t fragments; 516 async_exch_t *exch; 517 errno_t rc; 518 } async_call_t; 519 520 extern void async_call_begin(async_call_t *, async_sess_t *, sysarg_t, 521 sysarg_t, sysarg_t, sysarg_t, sysarg_t); 522 523 // Waits for all in-flight fragments to finish, and ends the call. 524 extern errno_t async_call_finish(async_call_t *); 525 extern errno_t async_call_finish_timeout(async_call_t *, const struct timeval *); 526 527 // Aborts the call. After this function returns, auxiliary structures 528 // and buffers are safe to deallocate. 529 // TODO: might need some extra support from kernel 530 extern void async_call_abort(async_call_t *); 531 532 // Waits for all in-flight fragments to finish, but doesn't end the call. 533 extern errno_t async_call_wait(async_call_t *); 534 extern errno_t async_call_wait_timeout(async_call_t *, const struct timeval *); 535 536 extern void async_call_method_with_finalizer(async_call_t *, 537 async_call_data_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 538 async_call_finalizer_t); 539 extern void async_call_method(async_call_t *, async_call_data_t *, sysarg_t, 540 sysarg_t, sysarg_t, sysarg_t, sysarg_t); 541 542 extern void async_call_read(async_call_t *, async_call_data_t *, 543 void *, size_t, size_t *); 544 extern void async_call_write(async_call_t *, async_call_data_t *, 545 const void *, size_t, size_t *); 546 547 extern void async_call_share_in(async_call_t *, async_call_data_t *, 548 size_t, sysarg_t, unsigned int *, void **); 549 extern void async_call_share_out(async_call_t *, async_call_data_t *, 550 void *, unsigned int); 551 552 // TODO: connect me to, connect to me, vfs handle, etc. 553 494 554 #endif 495 555
Note:
See TracChangeset
for help on using the changeset viewer.