Changes in uspace/lib/c/include/ipc/ipc.h [10477601:3c22f70] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/include/ipc/ipc.h
r10477601 r3c22f70 33 33 */ 34 34 35 #if ((defined(LIBC_ASYNC_H_)) && (!defined(LIBC_ASYNC_C_))) 36 #error Do not intermix low-level IPC interface and async framework 37 #endif 38 39 #ifndef LIBC_IPC_H_ 40 #define LIBC_IPC_H_ 41 35 #ifndef LIBIPC_IPC_H_ 36 #define LIBIPC_IPC_H_ 37 38 #include <task.h> 39 #include <kernel/ipc/ipc.h> 40 #include <kernel/ddi/irq.h> 42 41 #include <sys/types.h> 43 #include <ipc/common.h>44 42 #include <kernel/synch/synch.h> 45 #include <task.h> 46 47 typedef void (*ipc_async_callback_t)(void *, int, ipc_call_t *); 43 44 #define IPC_FLAG_BLOCKING 0x01 45 46 typedef struct { 47 sysarg_t args[IPC_CALL_LEN]; 48 sysarg_t in_task_hash; 49 sysarg_t in_phone_hash; 50 } ipc_call_t; 51 52 typedef sysarg_t ipc_callid_t; 53 54 typedef void (* ipc_async_callback_t)(void *, int, ipc_call_t *); 48 55 49 56 /* … … 53 60 * possible, the fast version is used. 54 61 */ 55 56 62 #define ipc_call_sync_0_0(phoneid, method) \ 57 63 ipc_call_sync_fast((phoneid), (method), 0, 0, 0, 0, 0, 0, 0, 0) … … 183 189 sysarg_t *); 184 190 185 extern ipc_callid_t ipc_wait_cycle(ipc_call_t *, sysarg_t, unsigned int); 191 extern ipc_callid_t ipc_wait_cycle(ipc_call_t *, uint32_t, int); 192 extern ipc_callid_t ipc_wait_for_call_timeout(ipc_call_t *, uint32_t); 186 193 extern void ipc_poke(void); 187 194 188 #define ipc_wait_for_call(data) \ 189 ipc_wait_for_call_timeout(data, SYNCH_NO_TIMEOUT); 190 191 extern ipc_callid_t ipc_wait_for_call_timeout(ipc_call_t *, sysarg_t); 195 static inline ipc_callid_t ipc_wait_for_call(ipc_call_t *data) 196 { 197 return ipc_wait_for_call_timeout(data, SYNCH_NO_TIMEOUT); 198 } 199 192 200 extern ipc_callid_t ipc_trywait_for_call(ipc_call_t *); 193 201 … … 198 206 * to m. 199 207 */ 200 201 208 #define ipc_answer_0(callid, retval) \ 202 209 ipc_answer_fast((callid), (retval), 0, 0, 0, 0) … … 223 230 * to m. 224 231 */ 225 226 232 #define ipc_call_async_0(phoneid, method, private, callback, can_preempt) \ 227 233 ipc_call_async_fast((phoneid), (method), 0, 0, 0, 0, (private), \ … … 249 255 250 256 extern void ipc_call_async_fast(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 251 sysarg_t, void *, ipc_async_callback_t, bool);257 sysarg_t, void *, ipc_async_callback_t, int); 252 258 extern void ipc_call_async_slow(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, 253 sysarg_t, sysarg_t, void *, ipc_async_callback_t, bool); 254 255 extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t *, 256 sysarg_t *); 257 extern int ipc_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t); 258 extern int ipc_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t); 259 259 sysarg_t, sysarg_t, void *, ipc_async_callback_t, int); 260 261 extern int ipc_connect_to_me(int, int, int, int, sysarg_t *, sysarg_t *); 262 extern int ipc_connect_me_to(int, int, int, int); 263 extern int ipc_connect_me_to_blocking(int, int, int, int); 260 264 extern int ipc_hangup(int); 261 262 extern int ipc_ forward_fast(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,263 unsignedint);264 extern int ipc_forward_slow(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,265 sysarg_t, sysarg_t, sysarg_t, unsignedint);265 extern int ipc_register_irq(int, int, int, irq_code_t *); 266 extern int ipc_unregister_irq(int, int); 267 extern int ipc_forward_fast(ipc_callid_t, int, int, sysarg_t, sysarg_t, int); 268 extern int ipc_forward_slow(ipc_callid_t, int, int, sysarg_t, sysarg_t, 269 sysarg_t, sysarg_t, sysarg_t, int); 266 270 267 271 /* 268 272 * User-friendly wrappers for ipc_share_in_start(). 269 273 */ 270 271 274 #define ipc_share_in_start_0_0(phoneid, dst, size) \ 272 275 ipc_share_in_start((phoneid), (dst), (size), 0, NULL) … … 278 281 ipc_share_in_start((phoneid), (dst), (size), (arg), (flags)) 279 282 280 extern int ipc_share_in_start(int, void *, size_t, sysarg_t, unsignedint *);281 extern int ipc_share_in_finalize(ipc_callid_t, void *, unsigned int);282 extern int ipc_share_out_start(int, void *, unsignedint);283 extern int ipc_share_in_start(int, void *, size_t, sysarg_t, int *); 284 extern int ipc_share_in_finalize(ipc_callid_t, void *, int ); 285 extern int ipc_share_out_start(int, void *, int); 283 286 extern int ipc_share_out_finalize(ipc_callid_t, void *); 284 287 extern int ipc_data_read_start(int, void *, size_t);
Note:
See TracChangeset
for help on using the changeset viewer.