Changeset e29e09cf in mainline for uspace/lib/c/include/async.h
- Timestamp:
- 2011-02-04T21:00:56Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 474afc9, 960ff451
- Parents:
- 400575c5 (diff), 17aca1c (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
r400575c5 re29e09cf 33 33 */ 34 34 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 35 39 #ifndef LIBC_ASYNC_H_ 36 40 #define LIBC_ASYNC_H_ 37 41 38 #include <ipc/ ipc.h>42 #include <ipc/common.h> 39 43 #include <async_sess.h> 40 44 #include <fibril.h> … … 42 46 #include <atomic.h> 43 47 #include <bool.h> 48 #include <task.h> 44 49 45 50 typedef ipc_callid_t aid_t; … … 50 55 typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *); 51 56 52 extern atomic_t async_futex;53 54 57 extern atomic_t threads_in_ipc_wait; 55 58 56 extern int __async_init(void); 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 57 65 extern ipc_callid_t async_get_call_timeout(ipc_call_t *, suseconds_t); 58 59 static inline ipc_callid_t async_get_call(ipc_call_t *data)60 {61 return async_get_call_timeout(data, 0);62 }63 64 static inline void async_manager(void)65 {66 fibril_switch(FIBRIL_TO_MANAGER);67 }68 66 69 67 /* … … 110 108 extern void async_set_interrupt_received(async_client_conn_t); 111 109 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) 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); 130 144 131 145 /* … … 135 149 * and slow verion based on m. 136 150 */ 151 137 152 #define async_req_0_0(phoneid, method) \ 138 153 async_req_fast((phoneid), (method), 0, 0, 0, 0, NULL, NULL, NULL, NULL, \ … … 266 281 } 267 282 283 extern int async_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, 284 async_client_conn_t); 268 285 extern int async_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t); 269 286 extern 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); 270 290 271 291 /* 272 292 * User-friendly wrappers for async_share_in_start(). 273 293 */ 294 274 295 #define async_share_in_start_0_0(phoneid, dst, size) \ 275 296 async_share_in_start((phoneid), (dst), (size), 0, NULL) … … 281 302 async_share_in_start((phoneid), (dst), (size), (arg), (flags)) 282 303 283 extern int async_share_in_start(int, void *, size_t, sysarg_t, int *); 284 extern int async_share_in_receive(ipc_callid_t *, size_t *); 285 extern int async_share_in_finalize(ipc_callid_t, void *, int ); 286 extern int async_share_out_start(int, void *, int); 287 extern int async_share_out_receive(ipc_callid_t *, size_t *, int *); 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 *); 288 310 extern int async_share_out_finalize(ipc_callid_t, void *); 289 311 … … 291 313 * User-friendly wrappers for async_data_read_forward_fast(). 292 314 */ 315 293 316 #define async_data_read_forward_0_0(phoneid, method, answer) \ 294 317 async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) … … 318 341 319 342 extern int async_data_read_start(int, void *, size_t); 320 extern intasync_data_read_receive(ipc_callid_t *, size_t *);343 extern bool async_data_read_receive(ipc_callid_t *, size_t *); 321 344 extern int async_data_read_finalize(ipc_callid_t, const void *, size_t); 322 345 … … 327 350 * User-friendly wrappers for async_data_write_forward_fast(). 328 351 */ 352 329 353 #define async_data_write_forward_0_0(phoneid, method, answer) \ 330 354 async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) … … 356 380 357 381 extern int async_data_write_start(int, const void *, size_t); 358 extern intasync_data_write_receive(ipc_callid_t *, size_t *);382 extern bool async_data_write_receive(ipc_callid_t *, size_t *); 359 383 extern int async_data_write_finalize(ipc_callid_t, void *, size_t); 360 384 361 385 extern int async_data_write_accept(void **, const bool, const size_t, 362 386 const size_t, const size_t, size_t *); 363 extern void async_data_write_void( const int);387 extern void async_data_write_void(sysarg_t); 364 388 365 389 extern int async_data_write_forward_fast(int, sysarg_t, sysarg_t, sysarg_t,
Note:
See TracChangeset
for help on using the changeset viewer.