Changeset cd50486 in mainline for uspace/lib/c/include/ipc/ipc.h


Ignore:
Timestamp:
2011-02-06T22:03:55Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
25971d2
Parents:
1110ebd (diff), 960ff451 (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.
Message:

Merge development/ changes

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/ipc/ipc.h

    r1110ebd rcd50486  
    3333 */
    3434
    35 #ifndef LIBIPC_IPC_H_
    36 #define LIBIPC_IPC_H_
    37 
     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
     42#include <sys/types.h>
     43#include <ipc/common.h>
     44#include <kernel/synch/synch.h>
    3845#include <task.h>
    39 #include <kernel/ipc/ipc.h>
    40 #include <kernel/ddi/irq.h>
    41 #include <sys/types.h>
    42 #include <kernel/synch/synch.h>
    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 *);
     46
     47typedef void (*ipc_async_callback_t)(void *, int, ipc_call_t *);
    5548
    5649/*
     
    6053 * possible, the fast version is used.
    6154 */
     55
    6256#define ipc_call_sync_0_0(phoneid, method) \
    6357        ipc_call_sync_fast((phoneid), (method), 0, 0, 0, 0, 0, 0, 0, 0)
     
    189183    sysarg_t *);
    190184
    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);
     185extern ipc_callid_t ipc_wait_cycle(ipc_call_t *, sysarg_t, unsigned int);
    193186extern void ipc_poke(void);
    194187
    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 
     188#define ipc_wait_for_call(data) \
     189        ipc_wait_for_call_timeout(data, SYNCH_NO_TIMEOUT);
     190
     191extern ipc_callid_t ipc_wait_for_call_timeout(ipc_call_t *, sysarg_t);
    200192extern ipc_callid_t ipc_trywait_for_call(ipc_call_t *);
    201193
     
    206198 * to m.
    207199 */
     200
    208201#define ipc_answer_0(callid, retval) \
    209202        ipc_answer_fast((callid), (retval), 0, 0, 0, 0)
     
    230223 * to m.
    231224 */
     225
    232226#define ipc_call_async_0(phoneid, method, private, callback, can_preempt) \
    233227        ipc_call_async_fast((phoneid), (method), 0, 0, 0, 0, (private), \
     
    255249
    256250extern void ipc_call_async_fast(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    257     sysarg_t, void *, ipc_async_callback_t, int);
     251    sysarg_t, void *, ipc_async_callback_t, bool);
    258252extern void ipc_call_async_slow(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    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);
     253    sysarg_t, sysarg_t, void *, ipc_async_callback_t, bool);
     254
     255extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t *,
     256    sysarg_t *);
     257extern int ipc_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t);
     258extern int ipc_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t);
     259
    264260extern int ipc_hangup(int);
    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);
     261
     262extern int ipc_forward_fast(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,
     263    unsigned int);
     264extern int ipc_forward_slow(ipc_callid_t, int, sysarg_t, sysarg_t, sysarg_t,
     265    sysarg_t, sysarg_t, sysarg_t, unsigned int);
    270266
    271267/*
    272268 * User-friendly wrappers for ipc_share_in_start().
    273269 */
     270
    274271#define ipc_share_in_start_0_0(phoneid, dst, size) \
    275272        ipc_share_in_start((phoneid), (dst), (size), 0, NULL)
     
    281278        ipc_share_in_start((phoneid), (dst), (size), (arg), (flags))
    282279
    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);
     280extern int ipc_share_in_start(int, void *, size_t, sysarg_t, unsigned int *);
     281extern int ipc_share_in_finalize(ipc_callid_t, void *, unsigned int);
     282extern int ipc_share_out_start(int, void *, unsigned int);
    286283extern int ipc_share_out_finalize(ipc_callid_t, void *);
    287284extern int ipc_data_read_start(int, void *, size_t);
Note: See TracChangeset for help on using the changeset viewer.