Changeset 79ae36dd in mainline for uspace/lib/c/include
- Timestamp:
- 2011-06-08T19:01:55Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0eff68e
- Parents:
- 764d71e
- Location:
- uspace/lib/c/include
- Files:
-
- 5 added
- 15 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/async.h
r764d71e r79ae36dd 41 41 42 42 #include <ipc/common.h> 43 #include <async_sess.h>44 43 #include <fibril.h> 44 #include <fibril_synch.h> 45 45 #include <sys/time.h> 46 46 #include <atomic.h> … … 55 55 typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *); 56 56 57 /** Exchange management style 58 * 59 */ 60 typedef enum { 61 /** No explicit exchange management 62 * 63 * Suitable for protocols which use a single 64 * IPC message per exchange only. 65 * 66 */ 67 EXCHANGE_ATOMIC = 0, 68 69 /** Exchange management via phone cloning 70 * 71 * Suitable for servers which support client 72 * data tracking by task hashes and do not 73 * mind cloned phones. 74 * 75 */ 76 EXCHANGE_PARALLEL, 77 78 /** Exchange management via mutual exclusion 79 * 80 * Suitable for any kind of client/server communication, 81 * but can limit parallelism. 82 * 83 */ 84 EXCHANGE_SERIALIZE 85 } exch_mgmt_t; 86 87 /** Session data */ 88 typedef struct { 89 /** List of inactive exchanges */ 90 link_t exch_list; 91 92 /** Exchange management style */ 93 exch_mgmt_t mgmt; 94 95 /** Session identification */ 96 int phone; 97 98 /** First clone connection argument */ 99 sysarg_t arg1; 100 101 /** Second clone connection argument */ 102 sysarg_t arg2; 103 104 /** Third clone connection argument */ 105 sysarg_t arg3; 106 107 /** Exchange mutex */ 108 fibril_mutex_t mutex; 109 110 /** Number of opened exchanges */ 111 atomic_t refcnt; 112 } async_sess_t; 113 114 /** Exchange data */ 115 typedef struct { 116 /** Link into list of inactive exchanges */ 117 link_t sess_link; 118 119 /** Link into global list of inactive exchanges */ 120 link_t global_link; 121 122 /** Session pointer */ 123 async_sess_t *sess; 124 125 /** Exchange identification */ 126 int phone; 127 } async_exch_t; 128 57 129 extern atomic_t threads_in_ipc_wait; 58 130 … … 68 140 * User-friendly wrappers for async_send_fast() and async_send_slow(). The 69 141 * macros are in the form async_send_m(), where m denotes the number of payload 70 * arguments. 142 * arguments. Each macros chooses between the fast and the slow version based 71 143 * on m. 72 144 */ 73 145 74 #define async_send_0(phoneid, method, dataptr) \ 75 async_send_fast((phoneid), (method), 0, 0, 0, 0, (dataptr)) 76 #define async_send_1(phoneid, method, arg1, dataptr) \ 77 async_send_fast((phoneid), (method), (arg1), 0, 0, 0, (dataptr)) 78 #define async_send_2(phoneid, method, arg1, arg2, dataptr) \ 79 async_send_fast((phoneid), (method), (arg1), (arg2), 0, 0, (dataptr)) 80 #define async_send_3(phoneid, method, arg1, arg2, arg3, dataptr) \ 81 async_send_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (dataptr)) 82 #define async_send_4(phoneid, method, arg1, arg2, arg3, arg4, dataptr) \ 83 async_send_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 84 (dataptr)) 85 #define async_send_5(phoneid, method, arg1, arg2, arg3, arg4, arg5, dataptr) \ 86 async_send_slow((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 87 (arg5), (dataptr)) 88 89 extern aid_t async_send_fast(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 90 sysarg_t, ipc_call_t *); 91 extern aid_t async_send_slow(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 146 #define async_send_0(exch, method, dataptr) \ 147 async_send_fast(exch, method, 0, 0, 0, 0, dataptr) 148 #define async_send_1(exch, method, arg1, dataptr) \ 149 async_send_fast(exch, method, arg1, 0, 0, 0, dataptr) 150 #define async_send_2(exch, method, arg1, arg2, dataptr) \ 151 async_send_fast(exch, method, arg1, arg2, 0, 0, dataptr) 152 #define async_send_3(exch, method, arg1, arg2, arg3, dataptr) \ 153 async_send_fast(exch, method, arg1, arg2, arg3, 0, dataptr) 154 #define async_send_4(exch, method, arg1, arg2, arg3, arg4, dataptr) \ 155 async_send_fast(exch, method, arg1, arg2, arg3, arg4, dataptr) 156 #define async_send_5(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr) \ 157 async_send_slow(exch, method, arg1, arg2, arg3, arg4, arg5, dataptr) 158 159 extern aid_t async_send_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 92 160 sysarg_t, sysarg_t, ipc_call_t *); 161 extern aid_t async_send_slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 162 sysarg_t, sysarg_t, sysarg_t, ipc_call_t *); 163 93 164 extern void async_wait_for(aid_t, sysarg_t *); 94 165 extern int async_wait_timeout(aid_t, sysarg_t *, suseconds_t); 95 166 96 167 extern fid_t async_new_connection(sysarg_t, sysarg_t, ipc_callid_t, 97 ipc_call_t *, void (*)(ipc_callid_t, ipc_call_t *)); 168 ipc_call_t *, async_client_conn_t); 169 98 170 extern void async_usleep(suseconds_t); 99 171 extern void async_create_manager(void); … … 102 174 extern void async_set_client_data_constructor(async_client_data_ctor_t); 103 175 extern void async_set_client_data_destructor(async_client_data_dtor_t); 104 105 extern void *async_client_data_get(void); 176 extern void *async_get_client_data(void); 106 177 107 178 extern void async_set_client_connection(async_client_conn_t); … … 112 183 */ 113 184 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, 185 extern void async_msg_0(async_exch_t *, sysarg_t); 186 extern void async_msg_1(async_exch_t *, sysarg_t, sysarg_t); 187 extern void async_msg_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t); 188 extern void async_msg_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t); 189 extern void async_msg_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 120 190 sysarg_t); 191 extern void async_msg_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 192 sysarg_t, sysarg_t); 121 193 122 194 /* … … 138 210 */ 139 211 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);212 extern int async_forward_fast(ipc_callid_t, async_exch_t *, sysarg_t, sysarg_t, 213 sysarg_t, unsigned int); 214 extern int async_forward_slow(ipc_callid_t, async_exch_t *, sysarg_t, sysarg_t, 215 sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int); 144 216 145 217 /* … … 150 222 */ 151 223 152 #define async_req_0_0(phoneid, method) \ 153 async_req_fast((phoneid), (method), 0, 0, 0, 0, NULL, NULL, NULL, NULL, \ 154 NULL) 155 #define async_req_0_1(phoneid, method, r1) \ 156 async_req_fast((phoneid), (method), 0, 0, 0, 0, (r1), NULL, NULL, NULL, \ 157 NULL) 158 #define async_req_0_2(phoneid, method, r1, r2) \ 159 async_req_fast((phoneid), (method), 0, 0, 0, 0, (r1), (r2), NULL, NULL, \ 160 NULL) 161 #define async_req_0_3(phoneid, method, r1, r2, r3) \ 162 async_req_fast((phoneid), (method), 0, 0, 0, 0, (r1), (r2), (r3), NULL, \ 163 NULL) 164 #define async_req_0_4(phoneid, method, r1, r2, r3, r4) \ 165 async_req_fast((phoneid), (method), 0, 0, 0, 0, (r1), (r2), (r3), (r4), \ 166 NULL) 167 #define async_req_0_5(phoneid, method, r1, r2, r3, r4, r5) \ 168 async_req_fast((phoneid), (method), 0, 0, 0, 0, (r1), (r2), (r3), (r4), \ 169 (r5)) 170 #define async_req_1_0(phoneid, method, arg1) \ 171 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, NULL, NULL, NULL, \ 172 NULL, NULL) 173 #define async_req_1_1(phoneid, method, arg1, rc1) \ 174 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, (rc1), NULL, NULL, \ 175 NULL, NULL) 176 #define async_req_1_2(phoneid, method, arg1, rc1, rc2) \ 177 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, (rc1), (rc2), NULL, \ 178 NULL, NULL) 179 #define async_req_1_3(phoneid, method, arg1, rc1, rc2, rc3) \ 180 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, (rc1), (rc2), (rc3), \ 181 NULL, NULL) 182 #define async_req_1_4(phoneid, method, arg1, rc1, rc2, rc3, rc4) \ 183 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, (rc1), (rc2), (rc3), \ 184 (rc4), NULL) 185 #define async_req_1_5(phoneid, method, arg1, rc1, rc2, rc3, rc4, rc5) \ 186 async_req_fast((phoneid), (method), (arg1), 0, 0, 0, (rc1), (rc2), (rc3), \ 187 (rc4), (rc5)) 188 #define async_req_2_0(phoneid, method, arg1, arg2) \ 189 async_req_fast((phoneid), (method), (arg1), (arg2), 0, 0, NULL, NULL, \ 224 #define async_req_0_0(exch, method) \ 225 async_req_fast(exch, method, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL) 226 #define async_req_0_1(exch, method, r1) \ 227 async_req_fast(exch, method, 0, 0, 0, 0, r1, NULL, NULL, NULL, NULL) 228 #define async_req_0_2(exch, method, r1, r2) \ 229 async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, NULL, NULL, NULL) 230 #define async_req_0_3(exch, method, r1, r2, r3) \ 231 async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, NULL, NULL) 232 #define async_req_0_4(exch, method, r1, r2, r3, r4) \ 233 async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, NULL) 234 #define async_req_0_5(exch, method, r1, r2, r3, r4, r5) \ 235 async_req_fast(exch, method, 0, 0, 0, 0, r1, r2, r3, r4, r5) 236 237 #define async_req_1_0(exch, method, arg1) \ 238 async_req_fast(exch, method, arg1, 0, 0, 0, NULL, NULL, NULL, NULL, \ 239 NULL) 240 #define async_req_1_1(exch, method, arg1, rc1) \ 241 async_req_fast(exch, method, arg1, 0, 0, 0, rc1, NULL, NULL, NULL, \ 242 NULL) 243 #define async_req_1_2(exch, method, arg1, rc1, rc2) \ 244 async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, NULL, NULL, \ 245 NULL) 246 #define async_req_1_3(exch, method, arg1, rc1, rc2, rc3) \ 247 async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, NULL, \ 248 NULL) 249 #define async_req_1_4(exch, method, arg1, rc1, rc2, rc3, rc4) \ 250 async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \ 251 NULL) 252 #define async_req_1_5(exch, method, arg1, rc1, rc2, rc3, rc4, rc5) \ 253 async_req_fast(exch, method, arg1, 0, 0, 0, rc1, rc2, rc3, rc4, \ 254 rc5) 255 256 #define async_req_2_0(exch, method, arg1, arg2) \ 257 async_req_fast(exch, method, arg1, arg2, 0, 0, NULL, NULL, NULL, \ 258 NULL, NULL) 259 #define async_req_2_1(exch, method, arg1, arg2, rc1) \ 260 async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, NULL, NULL, \ 261 NULL, NULL) 262 #define async_req_2_2(exch, method, arg1, arg2, rc1, rc2) \ 263 async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, NULL, NULL, \ 264 NULL) 265 #define async_req_2_3(exch, method, arg1, arg2, rc1, rc2, rc3) \ 266 async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, NULL, \ 267 NULL) 268 #define async_req_2_4(exch, method, arg1, arg2, rc1, rc2, rc3, rc4) \ 269 async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \ 270 NULL) 271 #define async_req_2_5(exch, method, arg1, arg2, rc1, rc2, rc3, rc4, rc5) \ 272 async_req_fast(exch, method, arg1, arg2, 0, 0, rc1, rc2, rc3, rc4, \ 273 rc5) 274 275 #define async_req_3_0(exch, method, arg1, arg2, arg3) \ 276 async_req_fast(exch, method, arg1, arg2, arg3, 0, NULL, NULL, NULL, \ 277 NULL, NULL) 278 #define async_req_3_1(exch, method, arg1, arg2, arg3, rc1) \ 279 async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, NULL, NULL, \ 280 NULL, NULL) 281 #define async_req_3_2(exch, method, arg1, arg2, arg3, rc1, rc2) \ 282 async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, NULL, \ 283 NULL, NULL) 284 #define async_req_3_3(exch, method, arg1, arg2, arg3, rc1, rc2, rc3) \ 285 async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \ 286 NULL, NULL) 287 #define async_req_3_4(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4) \ 288 async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \ 289 rc4, NULL) 290 #define async_req_3_5(exch, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4, \ 291 rc5) \ 292 async_req_fast(exch, method, arg1, arg2, arg3, 0, rc1, rc2, rc3, \ 293 rc4, rc5) 294 295 #define async_req_4_0(exch, method, arg1, arg2, arg3, arg4) \ 296 async_req_fast(exch, method, arg1, arg2, arg3, arg4, NULL, NULL, \ 190 297 NULL, NULL, NULL) 191 #define async_req_ 2_1(phoneid, method, arg1, arg2, rc1) \192 async_req_fast( (phoneid), (method), (arg1), (arg2), 0, 0, (rc1), NULL, \298 #define async_req_4_1(exch, method, arg1, arg2, arg3, arg4, rc1) \ 299 async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, NULL, \ 193 300 NULL, NULL, NULL) 194 #define async_req_2_2(phoneid, method, arg1, arg2, rc1, rc2) \ 195 async_req_fast((phoneid), (method), (arg1), (arg2), 0, 0, (rc1), (rc2), \ 301 #define async_req_4_2(exch, method, arg1, arg2, arg3, arg4, rc1, rc2) \ 302 async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, NULL, \ 303 NULL, NULL) 304 #define async_req_4_3(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3) \ 305 async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 306 NULL, NULL) 307 #define async_req_4_4(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 308 rc4) \ 309 async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 310 rc4, NULL) 311 #define async_req_4_5(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 312 rc4, rc5) \ 313 async_req_fast(exch, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 314 rc4, rc5) 315 316 #define async_req_5_0(exch, method, arg1, arg2, arg3, arg4, arg5) \ 317 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, NULL, \ 318 NULL, NULL, NULL, NULL) 319 #define async_req_5_1(exch, method, arg1, arg2, arg3, arg4, arg5, rc1) \ 320 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, \ 321 NULL, NULL, NULL, NULL) 322 #define async_req_5_2(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2) \ 323 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 196 324 NULL, NULL, NULL) 197 #define async_req_2_3(phoneid, method, arg1, arg2, rc1, rc2, rc3) \ 198 async_req_fast((phoneid), (method), (arg1), (arg2), 0, 0, (rc1), (rc2), \ 199 (rc3), NULL, NULL) 200 #define async_req_2_4(phoneid, method, arg1, arg2, rc1, rc2, rc3, rc4) \ 201 async_req_fast((phoneid), (method), (arg1), (arg2), 0, 0, (rc1), (rc2), \ 202 (rc3), (rc4), NULL) 203 #define async_req_2_5(phoneid, method, arg1, arg2, rc1, rc2, rc3, rc4, rc5) \ 204 async_req_fast((phoneid), (method), (arg1), (arg2), 0, 0, (rc1), (rc2), \ 205 (rc3), (rc4), (rc5)) 206 #define async_req_3_0(phoneid, method, arg1, arg2, arg3) \ 207 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, NULL, NULL, \ 208 NULL, NULL, NULL) 209 #define async_req_3_1(phoneid, method, arg1, arg2, arg3, rc1) \ 210 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (rc1), \ 211 NULL, NULL, NULL, NULL) 212 #define async_req_3_2(phoneid, method, arg1, arg2, arg3, rc1, rc2) \ 213 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (rc1), \ 214 (rc2), NULL, NULL, NULL) 215 #define async_req_3_3(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3) \ 216 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (rc1), \ 217 (rc2), (rc3), NULL, NULL) 218 #define async_req_3_4(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4) \ 219 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (rc1), \ 220 (rc2), (rc3), (rc4), NULL) 221 #define async_req_3_5(phoneid, method, arg1, arg2, arg3, rc1, rc2, rc3, rc4, \ 222 rc5) \ 223 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, (rc1), \ 224 (rc2), (rc3), (rc4), (rc5)) 225 #define async_req_4_0(phoneid, method, arg1, arg2, arg3, arg4) \ 226 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), NULL, \ 227 NULL, NULL, NULL, NULL) 228 #define async_req_4_1(phoneid, method, arg1, arg2, arg3, arg4, rc1) \ 229 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), (rc1), \ 230 NULL, NULL, NULL, NULL) 231 #define async_req_4_2(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2) \ 232 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), (rc1), \ 233 (rc2), NULL, NULL, NULL) 234 #define async_req_4_3(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3) \ 235 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), (rc1), \ 236 (rc2), (rc3), NULL, NULL) 237 #define async_req_4_4(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 238 rc4) \ 239 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 240 (rc1), (rc2), (rc3), (rc4), NULL) 241 #define async_req_4_5(phoneid, method, arg1, arg2, arg3, arg4, rc1, rc2, rc3, \ 242 rc4, rc5) \ 243 async_req_fast((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 244 (rc1), (rc2), (rc3), (rc4), (rc5)) 245 #define async_req_5_0(phoneid, method, arg1, arg2, arg3, arg4, arg5) \ 246 async_req_slow((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 247 (arg5), NULL, NULL, NULL, NULL, NULL) 248 #define async_req_5_1(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1) \ 249 async_req_slow((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 250 (arg5), (rc1), NULL, NULL, NULL, NULL) 251 #define async_req_5_2(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2) \ 252 async_req_slow((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 253 (arg5), (rc1), (rc2), NULL, NULL, NULL) 254 #define async_req_5_3(phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 325 #define async_req_5_3(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 255 326 rc3) \ 256 async_req_slow( (phoneid), (method), (arg1), (arg2), (arg3), (arg4), \257 (arg5), (rc1), (rc2), (rc3), NULL, NULL)258 #define async_req_5_4( phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \327 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 328 rc3, NULL, NULL) 329 #define async_req_5_4(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 259 330 rc3, rc4) \ 260 async_req_slow( (phoneid), (method), (arg1), (arg2), (arg3), (arg4), \261 (arg5), (rc1), (rc2), (rc3), (rc4), NULL)262 #define async_req_5_5( phoneid, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \331 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 332 rc3, rc4, NULL) 333 #define async_req_5_5(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 263 334 rc3, rc4, rc5) \ 264 async_req_slow((phoneid), (method), (arg1), (arg2), (arg3), (arg4), \ 265 (arg5), (rc1), (rc2), (rc3), (rc4), (rc5)) 266 267 extern sysarg_t async_req_fast(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 268 sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *); 269 extern sysarg_t async_req_slow(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 335 async_req_slow(exch, method, arg1, arg2, arg3, arg4, arg5, rc1, rc2, \ 336 rc3, rc4, rc5) 337 338 extern sysarg_t async_req_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 270 339 sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *, 271 340 sysarg_t *); 272 273 static inline void async_serialize_start(void) 274 { 275 fibril_inc_sercount(); 276 } 277 278 static inline void async_serialize_end(void) 279 { 280 fibril_dec_sercount();281 } 282 283 extern int async_connect_to_me( int, sysarg_t, sysarg_t, sysarg_t,341 extern sysarg_t async_req_slow(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 342 sysarg_t, sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, 343 sysarg_t *, sysarg_t *); 344 345 extern async_sess_t *async_connect_me(exch_mgmt_t, async_exch_t *); 346 extern async_sess_t *async_connect_me_to(exch_mgmt_t, async_exch_t *, sysarg_t, 347 sysarg_t, sysarg_t); 348 extern async_sess_t *async_connect_me_to_blocking(exch_mgmt_t, async_exch_t *, 349 sysarg_t, sysarg_t, sysarg_t); 350 extern async_sess_t *async_connect_kbox(task_id_t); 351 352 extern int async_connect_to_me(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, 284 353 async_client_conn_t); 285 extern int async_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t); 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); 354 355 extern int async_hangup(async_sess_t *); 289 356 extern void async_poke(void); 290 357 358 extern async_exch_t *async_exchange_begin(async_sess_t *); 359 extern void async_exchange_end(async_exch_t *); 360 291 361 /* 292 362 * User-friendly wrappers for async_share_in_start(). 293 363 */ 294 364 295 #define async_share_in_start_0_0(phoneid, dst, size) \ 296 async_share_in_start((phoneid), (dst), (size), 0, NULL) 297 #define async_share_in_start_0_1(phoneid, dst, size, flags) \ 298 async_share_in_start((phoneid), (dst), (size), 0, (flags)) 299 #define async_share_in_start_1_0(phoneid, dst, size, arg) \ 300 async_share_in_start((phoneid), (dst), (size), (arg), NULL) 301 #define async_share_in_start_1_1(phoneid, dst, size, arg, flags) \ 302 async_share_in_start((phoneid), (dst), (size), (arg), (flags)) 303 304 extern int async_share_in_start(int, void *, size_t, sysarg_t, unsigned int *); 365 #define async_share_in_start_0_0(exch, dst, size) \ 366 async_share_in_start(exch, dst, size, 0, NULL) 367 #define async_share_in_start_0_1(exch, dst, size, flags) \ 368 async_share_in_start(exch, dst, size, 0, flags) 369 #define async_share_in_start_1_0(exch, dst, size, arg) \ 370 async_share_in_start(exch, dst, size, arg, NULL) 371 #define async_share_in_start_1_1(exch, dst, size, arg, flags) \ 372 async_share_in_start(exch, dst, size, arg, flags) 373 374 extern int async_share_in_start(async_exch_t *, void *, size_t, sysarg_t, 375 unsigned int *); 305 376 extern bool async_share_in_receive(ipc_callid_t *, size_t *); 306 377 extern int async_share_in_finalize(ipc_callid_t, void *, unsigned int); 307 378 308 extern int async_share_out_start( int, void *, unsigned int);379 extern int async_share_out_start(async_exch_t *, void *, unsigned int); 309 380 extern bool async_share_out_receive(ipc_callid_t *, size_t *, unsigned int *); 310 381 extern int async_share_out_finalize(ipc_callid_t, void *); … … 314 385 */ 315 386 316 #define async_data_read_forward_0_0(phoneid, method, answer) \ 317 async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) 318 #define async_data_read_forward_0_1(phoneid, method, answer) \ 319 async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) 320 #define async_data_read_forward_1_0(phoneid, method, arg1, answer) \ 321 async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) 322 #define async_data_read_forward_1_1(phoneid, method, arg1, answer) \ 323 async_data_read_forward_fast((phoneid), (method), (arg1), 0, 0, 0, (answer)) 324 #define async_data_read_forward_2_0(phoneid, method, arg1, arg2, answer) \ 325 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, NULL) 326 #define async_data_read_forward_2_1(phoneid, method, arg1, arg2, answer) \ 327 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 328 (answer)) 329 #define async_data_read_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) \ 330 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, \ 331 NULL) 332 #define async_data_read_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) \ 333 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), 0, \ 334 (answer)) 335 #define async_data_read_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 336 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 337 (arg4), NULL) 338 #define async_data_read_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 339 async_data_read_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 340 (arg4), (answer)) 341 342 extern aid_t async_data_read(int, void *, size_t, ipc_call_t *); 343 #define async_data_read_start(p, buf, len) \ 344 async_data_read_start_generic((p), (buf), (len), IPC_XF_NONE) 345 346 extern int async_data_read_start_generic(int, void *, size_t, int); 387 #define async_data_read_forward_0_0(exch, method, answer) \ 388 async_data_read_forward_fast(exch, method, 0, 0, 0, 0, NULL) 389 #define async_data_read_forward_0_1(exch, method, answer) \ 390 async_data_read_forward_fast(exch, method, 0, 0, 0, 0, answer) 391 #define async_data_read_forward_1_0(exch, method, arg1, answer) \ 392 async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, NULL) 393 #define async_data_read_forward_1_1(exch, method, arg1, answer) \ 394 async_data_read_forward_fast(exch, method, arg1, 0, 0, 0, answer) 395 #define async_data_read_forward_2_0(exch, method, arg1, arg2, answer) \ 396 async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, NULL) 397 #define async_data_read_forward_2_1(exch, method, arg1, arg2, answer) \ 398 async_data_read_forward_fast(exch, method, arg1, arg2, 0, 0, answer) 399 #define async_data_read_forward_3_0(exch, method, arg1, arg2, arg3, answer) \ 400 async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, NULL) 401 #define async_data_read_forward_3_1(exch, method, arg1, arg2, arg3, answer) \ 402 async_data_read_forward_fast(exch, method, arg1, arg2, arg3, 0, \ 403 answer) 404 #define async_data_read_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \ 405 answer) \ 406 async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \ 407 NULL) 408 #define async_data_read_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \ 409 answer) \ 410 async_data_read_forward_fast(exch, method, arg1, arg2, arg3, arg4, \ 411 answer) 412 413 extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *); 414 extern int async_data_read_start(async_exch_t *, void *, size_t); 347 415 extern bool async_data_read_receive(ipc_callid_t *, size_t *); 348 416 extern int async_data_read_finalize(ipc_callid_t, const void *, size_t); 349 417 350 extern int async_data_read_forward_fast( int, sysarg_t, sysarg_t, sysarg_t,351 sysarg_t, sysarg_t, ipc_call_t *);418 extern int async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t, 419 sysarg_t, sysarg_t, sysarg_t, ipc_call_t *); 352 420 353 421 /* … … 355 423 */ 356 424 357 #define async_data_write_forward_0_0(phoneid, method, answer) \ 358 async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL) 359 #define async_data_write_forward_0_1(phoneid, method, answer) \ 360 async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, (answer)) 361 #define async_data_write_forward_1_0(phoneid, method, arg1, answer) \ 362 async_data_write_forward_fast((phoneid), (method), (arg1), 0, 0, 0, NULL) 363 #define async_data_write_forward_1_1(phoneid, method, arg1, answer) \ 364 async_data_write_forward_fast((phoneid), (method), (arg1), 0, 0, 0, \ 365 (answer)) 366 #define async_data_write_forward_2_0(phoneid, method, arg1, arg2, answer) \ 367 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 368 NULL) 369 #define async_data_write_forward_2_1(phoneid, method, arg1, arg2, answer) \ 370 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), 0, 0, \ 371 (answer)) 372 #define async_data_write_forward_3_0(phoneid, method, arg1, arg2, arg3, answer) \ 373 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 374 0, NULL) 375 #define async_data_write_forward_3_1(phoneid, method, arg1, arg2, arg3, answer) \ 376 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 377 0, (answer)) 378 #define async_data_write_forward_4_0(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 379 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 380 (arg4), NULL) 381 #define async_data_write_forward_4_1(phoneid, method, arg1, arg2, arg3, arg4, answer) \ 382 async_data_write_forward_fast((phoneid), (method), (arg1), (arg2), (arg3), \ 383 (arg4), (answer)) 384 385 #define async_data_write_start(p, buf, len) \ 386 async_data_write_start_generic((p), (buf), (len), IPC_XF_NONE) 387 388 extern int async_data_write_start_generic(int, const void *, size_t, int); 425 #define async_data_write_forward_0_0(exch, method, answer) \ 426 async_data_write_forward_fast(exch, method, 0, 0, 0, 0, NULL) 427 #define async_data_write_forward_0_1(exch, method, answer) \ 428 async_data_write_forward_fast(exch, method, 0, 0, 0, 0, answer) 429 #define async_data_write_forward_1_0(exch, method, arg1, answer) \ 430 async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, NULL) 431 #define async_data_write_forward_1_1(exch, method, arg1, answer) \ 432 async_data_write_forward_fast(exch, method, arg1, 0, 0, 0, answer) 433 #define async_data_write_forward_2_0(exch, method, arg1, arg2, answer) \ 434 async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, NULL) 435 #define async_data_write_forward_2_1(exch, method, arg1, arg2, answer) \ 436 async_data_write_forward_fast(exch, method, arg1, arg2, 0, 0, answer) 437 #define async_data_write_forward_3_0(exch, method, arg1, arg2, arg3, answer) \ 438 async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \ 439 NULL) 440 #define async_data_write_forward_3_1(exch, method, arg1, arg2, arg3, answer) \ 441 async_data_write_forward_fast(exch, method, arg1, arg2, arg3, 0, \ 442 answer) 443 #define async_data_write_forward_4_0(exch, method, arg1, arg2, arg3, arg4, \ 444 answer) \ 445 async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \ 446 NULL) 447 #define async_data_write_forward_4_1(exch, method, arg1, arg2, arg3, arg4, \ 448 answer) \ 449 async_data_write_forward_fast(exch, method, arg1, arg2, arg3, arg4, \ 450 answer) 451 452 extern int async_data_write_start(async_exch_t *, const void *, size_t); 389 453 extern bool async_data_write_receive(ipc_callid_t *, size_t *); 390 454 extern int async_data_write_finalize(ipc_callid_t, void *, size_t); … … 394 458 extern void async_data_write_void(sysarg_t); 395 459 396 extern int async_data_write_forward_fast(int, sysarg_t, sysarg_t, sysarg_t, 397 sysarg_t, sysarg_t, ipc_call_t *); 460 extern int async_data_write_forward_fast(async_exch_t *, sysarg_t, sysarg_t, 461 sysarg_t, sysarg_t, sysarg_t, ipc_call_t *); 462 463 extern int async_exchange_clone(async_exch_t *, async_exch_t *); 464 extern async_sess_t *async_clone_receive(exch_mgmt_t); 465 extern async_sess_t *async_callback_receive(exch_mgmt_t); 398 466 399 467 #endif -
uspace/lib/c/include/device/char_dev.h
r764d71e r79ae36dd 36 36 #define LIBC_DEVICE_CHAR_DEV_H_ 37 37 38 #include <async.h> 39 38 40 typedef enum { 39 41 CHAR_DEV_READ = 0, … … 41 43 } char_dev_method_t; 42 44 43 ssize_t char_dev_read(int dev_phone, void *buf, size_t len);44 ssize_t char_dev_write(int dev_phone, void *buf, size_t len);45 extern ssize_t char_dev_read(async_sess_t *, void *, size_t); 46 extern ssize_t char_dev_write(async_sess_t *, void *, size_t); 45 47 46 48 #endif -
uspace/lib/c/include/device/hw_res.h
r764d71e r79ae36dd 26 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 27 */ 28 28 29 29 /** @addtogroup libc 30 30 * @{ … … 32 32 /** @file 33 33 */ 34 34 35 35 #ifndef LIBC_DEVICE_HW_RES_H_ 36 36 #define LIBC_DEVICE_HW_RES_H_ 37 37 38 38 #include <ipc/dev_iface.h> 39 #include <async.h> 39 40 #include <bool.h> 40 41 … … 48 49 typedef enum { 49 50 INTERRUPT, 50 IO_RANGE, 51 IO_RANGE, 51 52 MEM_RANGE 52 53 } hw_res_type_t; … … 66 67 size_t size; 67 68 } mem_range; 68 69 69 70 struct { 70 71 uint64_t address; … … 72 73 size_t size; 73 74 } io_range; 74 75 75 76 struct { 76 77 int irq; … … 88 89 if (hw_res->resources != NULL) { 89 90 free(hw_res->resources); 90 91 91 hw_res->resources = NULL; 92 92 } 93 93 94 94 hw_res->count = 0; 95 95 } 96 96 97 extern int hw_res_get_resource_list( int, hw_resource_list_t *);98 extern bool hw_res_enable_interrupt( int);97 extern int hw_res_get_resource_list(async_sess_t *, hw_resource_list_t *); 98 extern bool hw_res_enable_interrupt(async_sess_t *); 99 99 100 100 #endif -
uspace/lib/c/include/devman.h
r764d71e r79ae36dd 41 41 #include <bool.h> 42 42 43 extern int devman_get_phone(devman_interface_t, unsigned int); 44 extern void devman_hangup_phone(devman_interface_t); 43 extern async_exch_t *devman_exchange_begin_blocking(devman_interface_t); 44 extern async_exch_t *devman_exchange_begin(devman_interface_t); 45 extern void devman_exchange_end(async_exch_t *); 45 46 46 47 extern int devman_driver_register(const char *, async_client_conn_t); … … 48 49 devman_handle_t, devman_handle_t *); 49 50 50 extern int devman_device_connect(devman_handle_t, unsigned int); 51 extern int devman_parent_device_connect(devman_handle_t, unsigned int); 51 extern async_sess_t *devman_device_connect(exch_mgmt_t, devman_handle_t, 52 unsigned int); 53 extern async_sess_t *devman_parent_device_connect(exch_mgmt_t, devman_handle_t, 54 unsigned int); 52 55 53 56 extern int devman_device_get_handle(const char *, devman_handle_t *, -
uspace/lib/c/include/devman_obsolete.h
r764d71e r79ae36dd 1 1 /* 2 * Copyright (c) 2010 Jakub Jermar 2 * Copyright (c) 2009 Jiri Svoboda 3 * Copyright (c) 2010 Lenka Trochtova 3 4 * All rights reserved. 4 5 * … … 33 34 */ 34 35 35 #ifndef LIBC_ ASYNC_SESS_H_36 #define LIBC_ ASYNC_SESS_H_36 #ifndef LIBC_DEVMAN_OBSOLETE_H_ 37 #define LIBC_DEVMAN_OBSOLETE_H_ 37 38 38 #include <adt/list.h> 39 #include <ipc/devman.h> 40 #include <async.h> 41 #include <bool.h> 39 42 40 typedef struct { 41 int sess_phone; /**< Phone for cloning off the connections. */ 42 sysarg_t connect_arg1; /**< Argument for CONNECT_ME_TO. */ 43 link_t conn_head; /**< List of open data connections. */ 44 link_t sess_link; /**< Link in global list of open sessions. */ 45 } async_sess_t; 43 extern int devman_obsolete_get_phone(devman_interface_t, unsigned int); 44 extern void devman_obsolete_hangup_phone(devman_interface_t); 46 45 47 extern void async_session_create(async_sess_t *, int, sysarg_t); 48 extern void async_session_destroy(async_sess_t *); 49 extern int async_exchange_begin(async_sess_t *); 50 extern void async_exchange_end(async_sess_t *, int); 46 extern int devman_obsolete_device_connect(devman_handle_t, unsigned int); 47 extern int devman_obsolete_parent_device_connect(devman_handle_t, unsigned int); 51 48 52 49 #endif -
uspace/lib/c/include/devmap.h
r764d71e r79ae36dd 40 40 #include <bool.h> 41 41 42 extern int devmap_get_phone(devmap_interface_t, unsigned int); 43 extern void devmap_hangup_phone(devmap_interface_t iface); 42 extern async_exch_t *devmap_exchange_begin_blocking(devmap_interface_t); 43 extern async_exch_t *devmap_exchange_begin(devmap_interface_t); 44 extern void devmap_exchange_end(async_exch_t *); 44 45 45 46 extern int devmap_driver_register(const char *, async_client_conn_t); 46 47 extern int devmap_device_register(const char *, devmap_handle_t *); 47 extern int devmap_device_register_with_iface(const char *, devmap_handle_t *, sysarg_t); 48 extern int devmap_device_register_with_iface(const char *, devmap_handle_t *, 49 sysarg_t); 48 50 49 extern int devmap_device_get_handle(const char *, devmap_handle_t *, unsigned int); 50 extern int devmap_namespace_get_handle(const char *, devmap_handle_t *, unsigned int); 51 extern int devmap_device_get_handle(const char *, devmap_handle_t *, 52 unsigned int); 53 extern int devmap_namespace_get_handle(const char *, devmap_handle_t *, 54 unsigned int); 51 55 extern devmap_handle_type_t devmap_handle_probe(devmap_handle_t); 52 56 53 extern int devmap_device_connect(devmap_handle_t, unsigned int); 57 extern async_sess_t *devmap_device_connect(exch_mgmt_t, devmap_handle_t, 58 unsigned int); 54 59 55 60 extern int devmap_null_create(void); -
uspace/lib/c/include/io/console.h
r764d71e r79ae36dd 36 36 #define LIBC_IO_CONSOLE_H_ 37 37 38 #include <sys/time.h> 39 #include <async.h> 38 40 #include <bool.h> 39 40 typedef enum { 41 KEY_PRESS, 42 KEY_RELEASE 43 } console_ev_type_t; 41 #include <stdio.h> 44 42 45 43 typedef enum { … … 50 48 } console_caps_t; 51 49 50 /** Console control structure. */ 51 typedef struct { 52 /** Console input file */ 53 FILE *input; 54 55 /** Console output file */ 56 FILE *output; 57 58 /** Console input session */ 59 async_sess_t *input_sess; 60 61 /** Console output session */ 62 async_sess_t *output_sess; 63 64 /** Input request call with timeout */ 65 ipc_call_t input_call; 66 67 /** Input response with timeout */ 68 aid_t input_aid; 69 } console_ctrl_t; 70 71 typedef enum { 72 KEY_PRESS, 73 KEY_RELEASE 74 } kbd_event_type_t; 75 52 76 /** Console event structure. */ 53 77 typedef struct { 54 78 /** Press or release event. */ 55 console_ev_type_t type;79 kbd_event_type_t type; 56 80 57 81 /** Keycode of the key that was pressed or released. */ … … 63 87 /** The character that was generated or '\0' for none. */ 64 88 wchar_t c; 65 } console_event_t;89 } kbd_event_t; 66 90 67 extern void console_clear(int phone); 91 extern console_ctrl_t *console_init(FILE *, FILE *); 92 extern void console_done(console_ctrl_t *); 93 extern bool console_kcon(void); 68 94 69 extern int console_get_size(int phone, sysarg_t *cols, sysarg_t *rows); 70 extern int console_get_pos(int phone, sysarg_t *col, sysarg_t *row); 71 extern void console_set_pos(int phone, sysarg_t col, sysarg_t row); 95 extern void console_flush(console_ctrl_t *); 96 extern void console_clear(console_ctrl_t *); 72 97 73 extern void console_set_style(int phone, uint8_t style); 74 extern void console_set_color(int phone, uint8_t fg_color, uint8_t bg_color, 75 uint8_t flags); 76 extern void console_set_rgb_color(int phone, uint32_t fg_color, uint32_t bg_color); 98 extern int console_get_size(console_ctrl_t *, sysarg_t *, sysarg_t *); 99 extern int console_get_pos(console_ctrl_t *, sysarg_t *, sysarg_t *); 100 extern void console_set_pos(console_ctrl_t *, sysarg_t, sysarg_t); 77 101 78 extern void console_ cursor_visibility(int phone, bool show);79 extern int console_get_color_cap(int phone, sysarg_t *ccap);80 extern void console_ kcon_enable(int phone);102 extern void console_set_style(console_ctrl_t *, uint8_t); 103 extern void console_set_color(console_ctrl_t *, uint8_t, uint8_t, uint8_t); 104 extern void console_set_rgb_color(console_ctrl_t *, uint32_t, uint32_t); 81 105 82 extern bool console_get_event(int phone, console_event_t *event); 106 extern void console_cursor_visibility(console_ctrl_t *, bool); 107 extern int console_get_color_cap(console_ctrl_t *, sysarg_t *); 108 extern bool console_get_kbd_event(console_ctrl_t *, kbd_event_t *); 109 extern bool console_get_kbd_event_timeout(console_ctrl_t *, kbd_event_t *, 110 suseconds_t *); 83 111 84 112 #endif -
uspace/lib/c/include/ipc/devmap.h
r764d71e r79ae36dd 31 31 */ 32 32 33 #ifndef DEVMAP_DEVMAP_H_34 #define DEVMAP_DEVMAP_H_33 #ifndef LIBC_IPC_DEVMAP_H_ 34 #define LIBC_IPC_DEVMAP_H_ 35 35 36 36 #include <ipc/common.h> -
uspace/lib/c/include/ipc/ipc.h
r764d71e r79ae36dd 42 42 #include <sys/types.h> 43 43 #include <ipc/common.h> 44 #include <kernel/ipc/ipc_methods.h> 44 45 #include <kernel/synch/synch.h> 45 46 #include <task.h> … … 255 256 extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t *, 256 257 sysarg_t *); 258 extern int ipc_connect_me(int); 257 259 extern int ipc_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t); 258 260 extern int ipc_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t); -
uspace/lib/c/include/ipc/ns.h
r764d71e r79ae36dd 33 33 */ 34 34 35 #ifndef LIBC_ NS_H_36 #define LIBC_ NS_H_35 #ifndef LIBC_IPC_NS_H_ 36 #define LIBC_IPC_NS_H_ 37 37 38 #include <sys/types.h>39 38 #include <ipc/common.h> 40 39 … … 46 45 } ns_request_t; 47 46 48 extern int service_register(sysarg_t);49 extern int service_connect(sysarg_t, sysarg_t, sysarg_t);50 extern int service_connect_blocking(sysarg_t, sysarg_t, sysarg_t);51 52 47 #endif 53 48 -
uspace/lib/c/include/ipc/serial_ctl.h
r764d71e r79ae36dd 32 32 #include <ipc/dev_iface.h> 33 33 34 /** ipc methods for getting/setting serial communication properties 35 * 1st ipc arg: baud rate 36 * 2nd ipc arg: parity 37 * 3rd ipc arg: number of bits in one word 38 * 4th ipc arg: number of stop bits 34 /** IPC methods for getting/setting serial communication properties 35 * 36 * 1st IPC arg: baud rate 37 * 2nd IPC arg: parity 38 * 3rd IPC arg: number of bits in one word 39 * 4th IPC arg: number of stop bits 40 * 39 41 */ 40 typedef enum { 42 typedef enum { 41 43 SERIAL_GET_COM_PROPS = DEV_FIRST_CUSTOM_METHOD, 42 44 SERIAL_SET_COM_PROPS … … 48 50 SERIAL_EVEN_PARITY = 3, 49 51 SERIAL_MARK_PARITY = 5, 50 SERIAL_SPACE_PARITY = 7 52 SERIAL_SPACE_PARITY = 7 51 53 } serial_parity_t; 52 54 -
uspace/lib/c/include/ipc/vfs.h
r764d71e r79ae36dd 69 69 VFS_IN_FSTAT, 70 70 VFS_IN_CLOSE, 71 VFS_IN_PING, 71 72 VFS_IN_MOUNT, 72 73 VFS_IN_UNMOUNT, -
uspace/lib/c/include/loader/loader.h
r764d71e r79ae36dd 40 40 #include <vfs/vfs.h> 41 41 42 /** Abstraction of a loader connection */ 43 typedef struct { 44 /** ID of the phone connected to the loader. */ 45 int phone_id; 46 } loader_t; 42 /** Forward declararion */ 43 struct loader; 44 typedef struct loader loader_t; 47 45 48 46 extern int loader_spawn(const char *); -
uspace/lib/c/include/stdio.h
r764d71e r79ae36dd 97 97 }; 98 98 99 typedef struct { 100 /** Linked list pointer. */ 101 link_t link; 102 103 /** Underlying file descriptor. */ 104 int fd; 105 106 /** Error indicator. */ 107 int error; 108 109 /** End-of-file indicator. */ 110 int eof; 111 112 /** Klog indicator */ 113 int klog; 114 115 /** Phone to the file provider */ 116 int phone; 117 118 /** 119 * Non-zero if the stream needs sync on fflush(). XXX change 120 * console semantics so that sync is not needed. 121 */ 122 int need_sync; 123 124 /** Buffering type */ 125 enum _buffer_type btype; 126 127 /** Buffer */ 128 uint8_t *buf; 129 130 /** Buffer size */ 131 size_t buf_size; 132 133 /** Buffer state */ 134 enum _buffer_state buf_state; 135 136 /** Buffer I/O pointer */ 137 uint8_t *buf_head; 138 139 /** Points to end of occupied space when in read mode. */ 140 uint8_t *buf_tail; 141 } FILE; 99 /** Forward declaration */ 100 struct _IO_FILE; 101 typedef struct _IO_FILE FILE; 142 102 143 103 extern FILE *stdin; -
uspace/lib/c/include/udebug.h
r764d71e r79ae36dd 38 38 #include <kernel/udebug/udebug.h> 39 39 #include <sys/types.h> 40 #include <async.h> 40 41 41 42 typedef sysarg_t thash_t; 42 43 43 int udebug_begin(int); 44 int udebug_end(int); 45 int udebug_set_evmask(int, udebug_evmask_t); 46 int udebug_thread_read(int, void *, size_t , size_t *, size_t *); 47 int udebug_name_read(int, void *, size_t, size_t *, size_t *); 48 int udebug_areas_read(int, void *, size_t, size_t *, size_t *); 49 int udebug_mem_read(int, void *, uintptr_t, size_t); 50 int udebug_args_read(int, thash_t, sysarg_t *); 51 int udebug_regs_read(int, thash_t, void *); 52 int udebug_go(int, thash_t, udebug_event_t *, sysarg_t *, sysarg_t *); 53 int udebug_stop(int, thash_t); 44 extern int udebug_begin(async_sess_t *); 45 extern int udebug_end(async_sess_t *); 46 extern int udebug_set_evmask(async_sess_t *, udebug_evmask_t); 47 extern int udebug_thread_read(async_sess_t *, void *, size_t , size_t *, 48 size_t *); 49 extern int udebug_name_read(async_sess_t *, void *, size_t, size_t *, 50 size_t *); 51 extern int udebug_areas_read(async_sess_t *, void *, size_t, size_t *, 52 size_t *); 53 extern int udebug_mem_read(async_sess_t *, void *, uintptr_t, size_t); 54 extern int udebug_args_read(async_sess_t *, thash_t, sysarg_t *); 55 extern int udebug_regs_read(async_sess_t *, thash_t, void *); 56 extern int udebug_go(async_sess_t *, thash_t, udebug_event_t *, sysarg_t *, 57 sysarg_t *); 58 extern int udebug_stop(async_sess_t *, thash_t); 54 59 55 60 #endif -
uspace/lib/c/include/vfs/vfs.h
r764d71e r79ae36dd 41 41 #include <stdio.h> 42 42 43 /** 44 * This type is a libc version of the VFS triplet. 45 * It uniquely identifies a file system node within a file system instance. 43 /** Libc version of the VFS triplet. 44 * 45 * Unique identification of a file system node 46 * within a file system instance. 47 * 46 48 */ 47 49 typedef struct { … … 58 60 59 61 extern int open_node(fdi_node_t *, int); 60 extern int fd_phone(int);61 62 extern int fd_node(int, fdi_node_t *); 62 63 63 64 extern FILE *fopen_node(fdi_node_t *, const char *); 64 extern int fphone(FILE *);65 65 extern int fnode(FILE *, fdi_node_t *); 66 66
Note:
See TracChangeset
for help on using the changeset viewer.