Changes in uspace/lib/c/include/async.h [5da7199:b72efe8] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/async.h
r5da7199 rb72efe8 42 42 #include <ipc/common.h> 43 43 #include <fibril.h> 44 #include <fibril_synch.h> 44 45 #include <sys/time.h> 45 46 #include <atomic.h> … … 54 55 /** Client connection handler 55 56 * 56 * @param callid 57 * 58 * @param call 59 * @param arg 60 * 57 * @param callid ID of incoming call or 0 if connection initiated from 58 * inside using async_connect_to_me() 59 * @param call Incoming call or 0 if connection initiated from inside 60 * @param arg Local argument passed from async_new_connection() or 61 * async_connect_to_me() 61 62 */ 62 63 typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *, void *); … … 95 96 } exch_mgmt_t; 96 97 97 /** Forward declarations */ 98 struct async_exch; 99 struct async_sess; 100 101 typedef struct async_sess async_sess_t; 102 typedef struct async_exch async_exch_t; 98 /** Session data */ 99 typedef struct { 100 /** List of inactive exchanges */ 101 list_t exch_list; 102 103 /** Exchange management style */ 104 exch_mgmt_t mgmt; 105 106 /** Session identification */ 107 int phone; 108 109 /** First clone connection argument */ 110 sysarg_t arg1; 111 112 /** Second clone connection argument */ 113 sysarg_t arg2; 114 115 /** Third clone connection argument */ 116 sysarg_t arg3; 117 118 /** Exchange mutex */ 119 fibril_mutex_t mutex; 120 121 /** Number of opened exchanges */ 122 atomic_t refcnt; 123 } async_sess_t; 124 125 /** Exchange data */ 126 typedef struct { 127 /** Link into list of inactive exchanges */ 128 link_t sess_link; 129 130 /** Link into global list of inactive exchanges */ 131 link_t global_link; 132 133 /** Session pointer */ 134 async_sess_t *sess; 135 136 /** Exchange identification */ 137 int phone; 138 } async_exch_t; 103 139 104 140 extern atomic_t threads_in_ipc_wait; … … 140 176 extern int async_wait_timeout(aid_t, sysarg_t *, suseconds_t); 141 177 142 extern fid_t async_new_connection( task_id_t, sysarg_t, ipc_callid_t,178 extern fid_t async_new_connection(sysarg_t, sysarg_t, ipc_callid_t, 143 179 ipc_call_t *, async_client_conn_t, void *); 144 180 … … 150 186 extern void async_set_client_data_destructor(async_client_data_dtor_t); 151 187 extern void *async_get_client_data(void); 152 extern void *async_get_client_data_by_id(task_id_t);153 extern void async_put_client_data_by_id(task_id_t);154 188 155 189 extern void async_set_client_connection(async_client_conn_t); … … 337 371 338 372 /* 339 * FIXME These functions just work around problems with parallel exchange340 * management. Proper solution needs to be implemented.341 */342 void async_sess_args_set(async_sess_t *sess, sysarg_t, sysarg_t, sysarg_t);343 344 /*345 373 * User-friendly wrappers for async_share_in_start(). 346 374 */ … … 449 477 extern async_sess_t *async_callback_receive_start(exch_mgmt_t, ipc_call_t *); 450 478 451 extern int async_state_change_start(async_exch_t *, sysarg_t, sysarg_t,452 sysarg_t, async_exch_t *);453 extern bool async_state_change_receive(ipc_callid_t *, sysarg_t *, sysarg_t *,454 sysarg_t *);455 extern int async_state_change_finalize(ipc_callid_t, async_exch_t *);456 457 extern void *async_remote_state_acquire(async_sess_t *);458 extern void async_remote_state_update(async_sess_t *, void *);459 extern void async_remote_state_release(async_sess_t *);460 extern void async_remote_state_release_exchange(async_exch_t *);461 462 479 #endif 463 480
Note:
See TracChangeset
for help on using the changeset viewer.