Changeset 79ae36dd in mainline for uspace/lib/c/include


Ignore:
Timestamp:
2011-06-08T19:01:55Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0eff68e
Parents:
764d71e
Message:

new async framework with integrated exchange tracking

  • strict isolation between low-level IPC and high-level async framework with integrated exchange tracking
    • each IPC connection is represented by an async_sess_t structure
    • each IPC exchange is represented by an async_exch_t structure
    • exchange management is either based on atomic messages (EXCHANGE_ATOMIC), locking (EXCHANGE_SERIALIZE) or connection cloning (EXCHANGE_CLONE)
  • async_obsolete: temporary compatibility layer to keep old async clients working (several pieces of code are currently broken, but only non-essential functionality)
  • IPC_M_PHONE_HANGUP is now method no. 0 (for elegant boolean evaluation)
  • IPC_M_DEBUG_ALL has been renamed to IPC_M_DEBUG
  • IPC_M_PING has been removed (VFS protocol now has VFS_IN_PING)
  • console routines in libc have been rewritten for better abstraction
  • additional use for libc-private header files (FILE structure opaque to the client)
  • various cstyle changes (typos, indentation, missing externs in header files, improved comments, etc.)
Location:
uspace/lib/c/include
Files:
5 added
15 edited
1 moved

Legend:

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

    r764d71e r79ae36dd  
    4141
    4242#include <ipc/common.h>
    43 #include <async_sess.h>
    4443#include <fibril.h>
     44#include <fibril_synch.h>
    4545#include <sys/time.h>
    4646#include <atomic.h>
     
    5555typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *);
    5656
     57/** Exchange management style
     58 *
     59 */
     60typedef 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 */
     88typedef 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 */
     115typedef 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
    57129extern atomic_t threads_in_ipc_wait;
    58130
     
    68140 * User-friendly wrappers for async_send_fast() and async_send_slow(). The
    69141 * macros are in the form async_send_m(), where m denotes the number of payload
    70  * arguments.  Each macros chooses between the fast and the slow version based
     142 * arguments. Each macros chooses between the fast and the slow version based
    71143 * on m.
    72144 */
    73145
    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
     159extern aid_t async_send_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    92160    sysarg_t, sysarg_t, ipc_call_t *);
     161extern 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
    93164extern void async_wait_for(aid_t, sysarg_t *);
    94165extern int async_wait_timeout(aid_t, sysarg_t *, suseconds_t);
    95166
    96167extern 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
    98170extern void async_usleep(suseconds_t);
    99171extern void async_create_manager(void);
     
    102174extern void async_set_client_data_constructor(async_client_data_ctor_t);
    103175extern void async_set_client_data_destructor(async_client_data_dtor_t);
    104 
    105 extern void *async_client_data_get(void);
     176extern void *async_get_client_data(void);
    106177
    107178extern void async_set_client_connection(async_client_conn_t);
     
    112183 */
    113184
    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,
     185extern void async_msg_0(async_exch_t *, sysarg_t);
     186extern void async_msg_1(async_exch_t *, sysarg_t, sysarg_t);
     187extern void async_msg_2(async_exch_t *, sysarg_t, sysarg_t, sysarg_t);
     188extern void async_msg_3(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t);
     189extern void async_msg_4(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    120190    sysarg_t);
     191extern void async_msg_5(async_exch_t *, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
     192    sysarg_t, sysarg_t);
    121193
    122194/*
     
    138210 */
    139211
    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);
     212extern int async_forward_fast(ipc_callid_t, async_exch_t *, sysarg_t, sysarg_t,
     213    sysarg_t, unsigned int);
     214extern 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);
    144216
    145217/*
     
    150222 */
    151223
    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, \
    190297            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, \
    193300            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, \
    196324            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, \
    255326    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, \
    259330    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, \
    263334    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
     338extern sysarg_t async_req_fast(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    270339    sysarg_t, sysarg_t, sysarg_t *, sysarg_t *, sysarg_t *, sysarg_t *,
    271340    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,
     341extern 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
     345extern async_sess_t *async_connect_me(exch_mgmt_t, async_exch_t *);
     346extern async_sess_t *async_connect_me_to(exch_mgmt_t, async_exch_t *, sysarg_t,
     347    sysarg_t, sysarg_t);
     348extern async_sess_t *async_connect_me_to_blocking(exch_mgmt_t, async_exch_t *,
     349    sysarg_t, sysarg_t, sysarg_t);
     350extern async_sess_t *async_connect_kbox(task_id_t);
     351
     352extern int async_connect_to_me(async_exch_t *, sysarg_t, sysarg_t, sysarg_t,
    284353    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
     355extern int async_hangup(async_sess_t *);
    289356extern void async_poke(void);
    290357
     358extern async_exch_t *async_exchange_begin(async_sess_t *);
     359extern void async_exchange_end(async_exch_t *);
     360
    291361/*
    292362 * User-friendly wrappers for async_share_in_start().
    293363 */
    294364
    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
     374extern int async_share_in_start(async_exch_t *, void *, size_t, sysarg_t,
     375    unsigned int *);
    305376extern bool async_share_in_receive(ipc_callid_t *, size_t *);
    306377extern int async_share_in_finalize(ipc_callid_t, void *, unsigned int);
    307378
    308 extern int async_share_out_start(int, void *, unsigned int);
     379extern int async_share_out_start(async_exch_t *, void *, unsigned int);
    309380extern bool async_share_out_receive(ipc_callid_t *, size_t *, unsigned int *);
    310381extern int async_share_out_finalize(ipc_callid_t, void *);
     
    314385 */
    315386
    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
     413extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *);
     414extern int async_data_read_start(async_exch_t *, void *, size_t);
    347415extern bool async_data_read_receive(ipc_callid_t *, size_t *);
    348416extern int async_data_read_finalize(ipc_callid_t, const void *, size_t);
    349417
    350 extern int async_data_read_forward_fast(int, sysarg_t, sysarg_t, sysarg_t,
    351     sysarg_t, sysarg_t, ipc_call_t *);
     418extern int async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     419    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
    352420
    353421/*
     
    355423 */
    356424
    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
     452extern int async_data_write_start(async_exch_t *, const void *, size_t);
    389453extern bool async_data_write_receive(ipc_callid_t *, size_t *);
    390454extern int async_data_write_finalize(ipc_callid_t, void *, size_t);
     
    394458extern void async_data_write_void(sysarg_t);
    395459
    396 extern int async_data_write_forward_fast(int, sysarg_t, sysarg_t, sysarg_t,
    397     sysarg_t, sysarg_t, ipc_call_t *);
     460extern int async_data_write_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     461    sysarg_t, sysarg_t, sysarg_t, ipc_call_t *);
     462
     463extern int async_exchange_clone(async_exch_t *, async_exch_t *);
     464extern async_sess_t *async_clone_receive(exch_mgmt_t);
     465extern async_sess_t *async_callback_receive(exch_mgmt_t);
    398466
    399467#endif
  • uspace/lib/c/include/device/char_dev.h

    r764d71e r79ae36dd  
    3636#define LIBC_DEVICE_CHAR_DEV_H_
    3737
     38#include <async.h>
     39
    3840typedef enum {
    3941        CHAR_DEV_READ = 0,
     
    4143} char_dev_method_t;
    4244
    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);
     45extern ssize_t char_dev_read(async_sess_t *, void *, size_t);
     46extern ssize_t char_dev_write(async_sess_t *, void *, size_t);
    4547
    4648#endif
  • uspace/lib/c/include/device/hw_res.h

    r764d71e r79ae36dd  
    2626 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2727 */
    28  
     28
    2929/** @addtogroup libc
    3030 * @{
     
    3232/** @file
    3333 */
    34  
     34
    3535#ifndef LIBC_DEVICE_HW_RES_H_
    3636#define LIBC_DEVICE_HW_RES_H_
    3737
    3838#include <ipc/dev_iface.h>
     39#include <async.h>
    3940#include <bool.h>
    4041
     
    4849typedef enum {
    4950        INTERRUPT,
    50         IO_RANGE, 
     51        IO_RANGE,
    5152        MEM_RANGE
    5253} hw_res_type_t;
     
    6667                        size_t size;
    6768                } mem_range;
    68 
     69               
    6970                struct {
    7071                        uint64_t address;
     
    7273                        size_t size;
    7374                } io_range;
    74 
     75               
    7576                struct {
    7677                        int irq;
     
    8889        if (hw_res->resources != NULL) {
    8990                free(hw_res->resources);
    90 
    9191                hw_res->resources = NULL;
    9292        }
    93 
     93       
    9494        hw_res->count = 0;
    9595}
    9696
    97 extern int hw_res_get_resource_list(int, hw_resource_list_t *);
    98 extern bool hw_res_enable_interrupt(int);
     97extern int hw_res_get_resource_list(async_sess_t *, hw_resource_list_t *);
     98extern bool hw_res_enable_interrupt(async_sess_t *);
    9999
    100100#endif
  • uspace/lib/c/include/devman.h

    r764d71e r79ae36dd  
    4141#include <bool.h>
    4242
    43 extern int devman_get_phone(devman_interface_t, unsigned int);
    44 extern void devman_hangup_phone(devman_interface_t);
     43extern async_exch_t *devman_exchange_begin_blocking(devman_interface_t);
     44extern async_exch_t *devman_exchange_begin(devman_interface_t);
     45extern void devman_exchange_end(async_exch_t *);
    4546
    4647extern int devman_driver_register(const char *, async_client_conn_t);
     
    4849    devman_handle_t, devman_handle_t *);
    4950
    50 extern int devman_device_connect(devman_handle_t, unsigned int);
    51 extern int devman_parent_device_connect(devman_handle_t, unsigned int);
     51extern async_sess_t *devman_device_connect(exch_mgmt_t, devman_handle_t,
     52    unsigned int);
     53extern async_sess_t *devman_parent_device_connect(exch_mgmt_t, devman_handle_t,
     54    unsigned int);
    5255
    5356extern int devman_device_get_handle(const char *, devman_handle_t *,
  • uspace/lib/c/include/devman_obsolete.h

    r764d71e r79ae36dd  
    11/*
    2  * Copyright (c) 2010 Jakub Jermar
     2 * Copyright (c) 2009 Jiri Svoboda
     3 * Copyright (c) 2010 Lenka Trochtova
    34 * All rights reserved.
    45 *
     
    3334 */
    3435
    35 #ifndef LIBC_ASYNC_SESS_H_
    36 #define LIBC_ASYNC_SESS_H_
     36#ifndef LIBC_DEVMAN_OBSOLETE_H_
     37#define LIBC_DEVMAN_OBSOLETE_H_
    3738
    38 #include <adt/list.h>
     39#include <ipc/devman.h>
     40#include <async.h>
     41#include <bool.h>
    3942
    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;
     43extern int devman_obsolete_get_phone(devman_interface_t, unsigned int);
     44extern void devman_obsolete_hangup_phone(devman_interface_t);
    4645
    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);
     46extern int devman_obsolete_device_connect(devman_handle_t, unsigned int);
     47extern int devman_obsolete_parent_device_connect(devman_handle_t, unsigned int);
    5148
    5249#endif
  • uspace/lib/c/include/devmap.h

    r764d71e r79ae36dd  
    4040#include <bool.h>
    4141
    42 extern int devmap_get_phone(devmap_interface_t, unsigned int);
    43 extern void devmap_hangup_phone(devmap_interface_t iface);
     42extern async_exch_t *devmap_exchange_begin_blocking(devmap_interface_t);
     43extern async_exch_t *devmap_exchange_begin(devmap_interface_t);
     44extern void devmap_exchange_end(async_exch_t *);
    4445
    4546extern int devmap_driver_register(const char *, async_client_conn_t);
    4647extern int devmap_device_register(const char *, devmap_handle_t *);
    47 extern int devmap_device_register_with_iface(const char *, devmap_handle_t *, sysarg_t);
     48extern int devmap_device_register_with_iface(const char *, devmap_handle_t *,
     49    sysarg_t);
    4850
    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);
     51extern int devmap_device_get_handle(const char *, devmap_handle_t *,
     52    unsigned int);
     53extern int devmap_namespace_get_handle(const char *, devmap_handle_t *,
     54    unsigned int);
    5155extern devmap_handle_type_t devmap_handle_probe(devmap_handle_t);
    5256
    53 extern int devmap_device_connect(devmap_handle_t, unsigned int);
     57extern async_sess_t *devmap_device_connect(exch_mgmt_t, devmap_handle_t,
     58    unsigned int);
    5459
    5560extern int devmap_null_create(void);
  • uspace/lib/c/include/io/console.h

    r764d71e r79ae36dd  
    3636#define LIBC_IO_CONSOLE_H_
    3737
     38#include <sys/time.h>
     39#include <async.h>
    3840#include <bool.h>
    39 
    40 typedef enum {
    41         KEY_PRESS,
    42         KEY_RELEASE
    43 } console_ev_type_t;
     41#include <stdio.h>
    4442
    4543typedef enum {
     
    5048} console_caps_t;
    5149
     50/** Console control structure. */
     51typedef 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
     71typedef enum {
     72        KEY_PRESS,
     73        KEY_RELEASE
     74} kbd_event_type_t;
     75
    5276/** Console event structure. */
    5377typedef struct {
    5478        /** Press or release event. */
    55         console_ev_type_t type;
     79        kbd_event_type_t type;
    5680       
    5781        /** Keycode of the key that was pressed or released. */
     
    6387        /** The character that was generated or '\0' for none. */
    6488        wchar_t c;
    65 } console_event_t;
     89} kbd_event_t;
    6690
    67 extern void console_clear(int phone);
     91extern console_ctrl_t *console_init(FILE *, FILE *);
     92extern void console_done(console_ctrl_t *);
     93extern bool console_kcon(void);
    6894
    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);
     95extern void console_flush(console_ctrl_t *);
     96extern void console_clear(console_ctrl_t *);
    7297
    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);
     98extern int console_get_size(console_ctrl_t *, sysarg_t *, sysarg_t *);
     99extern int console_get_pos(console_ctrl_t *, sysarg_t *, sysarg_t *);
     100extern void console_set_pos(console_ctrl_t *, sysarg_t, sysarg_t);
    77101
    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);
     102extern void console_set_style(console_ctrl_t *, uint8_t);
     103extern void console_set_color(console_ctrl_t *, uint8_t, uint8_t, uint8_t);
     104extern void console_set_rgb_color(console_ctrl_t *, uint32_t, uint32_t);
    81105
    82 extern bool console_get_event(int phone, console_event_t *event);
     106extern void console_cursor_visibility(console_ctrl_t *, bool);
     107extern int console_get_color_cap(console_ctrl_t *, sysarg_t *);
     108extern bool console_get_kbd_event(console_ctrl_t *, kbd_event_t *);
     109extern bool console_get_kbd_event_timeout(console_ctrl_t *, kbd_event_t *,
     110    suseconds_t *);
    83111
    84112#endif
  • uspace/lib/c/include/ipc/devmap.h

    r764d71e r79ae36dd  
    3131 */
    3232
    33 #ifndef DEVMAP_DEVMAP_H_
    34 #define DEVMAP_DEVMAP_H_
     33#ifndef LIBC_IPC_DEVMAP_H_
     34#define LIBC_IPC_DEVMAP_H_
    3535
    3636#include <ipc/common.h>
  • uspace/lib/c/include/ipc/ipc.h

    r764d71e r79ae36dd  
    4242#include <sys/types.h>
    4343#include <ipc/common.h>
     44#include <kernel/ipc/ipc_methods.h>
    4445#include <kernel/synch/synch.h>
    4546#include <task.h>
     
    255256extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t *,
    256257    sysarg_t *);
     258extern int ipc_connect_me(int);
    257259extern int ipc_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t);
    258260extern int ipc_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t);
  • uspace/lib/c/include/ipc/ns.h

    r764d71e r79ae36dd  
    3333 */
    3434
    35 #ifndef LIBC_NS_H_
    36 #define LIBC_NS_H_
     35#ifndef LIBC_IPC_NS_H_
     36#define LIBC_IPC_NS_H_
    3737
    38 #include <sys/types.h>
    3938#include <ipc/common.h>
    4039
     
    4645} ns_request_t;
    4746
    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 
    5247#endif
    5348
  • uspace/lib/c/include/ipc/serial_ctl.h

    r764d71e r79ae36dd  
    3232#include <ipc/dev_iface.h>
    3333
    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 *
    3941 */
    40 typedef enum { 
     42typedef enum {
    4143        SERIAL_GET_COM_PROPS = DEV_FIRST_CUSTOM_METHOD,
    4244        SERIAL_SET_COM_PROPS
     
    4850        SERIAL_EVEN_PARITY = 3,
    4951        SERIAL_MARK_PARITY = 5,
    50         SERIAL_SPACE_PARITY = 7 
     52        SERIAL_SPACE_PARITY = 7
    5153} serial_parity_t;
    5254
  • uspace/lib/c/include/ipc/vfs.h

    r764d71e r79ae36dd  
    6969        VFS_IN_FSTAT,
    7070        VFS_IN_CLOSE,
     71        VFS_IN_PING,
    7172        VFS_IN_MOUNT,
    7273        VFS_IN_UNMOUNT,
  • uspace/lib/c/include/loader/loader.h

    r764d71e r79ae36dd  
    4040#include <vfs/vfs.h>
    4141
    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 */
     43struct loader;
     44typedef struct loader loader_t;
    4745
    4846extern int loader_spawn(const char *);
  • uspace/lib/c/include/stdio.h

    r764d71e r79ae36dd  
    9797};
    9898
    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 */
     100struct _IO_FILE;
     101typedef struct _IO_FILE FILE;
    142102
    143103extern FILE *stdin;
  • uspace/lib/c/include/udebug.h

    r764d71e r79ae36dd  
    3838#include <kernel/udebug/udebug.h>
    3939#include <sys/types.h>
     40#include <async.h>
    4041
    4142typedef sysarg_t thash_t;
    4243
    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);
     44extern int udebug_begin(async_sess_t *);
     45extern int udebug_end(async_sess_t *);
     46extern int udebug_set_evmask(async_sess_t *, udebug_evmask_t);
     47extern int udebug_thread_read(async_sess_t *, void *, size_t , size_t *,
     48    size_t *);
     49extern int udebug_name_read(async_sess_t *, void *, size_t, size_t *,
     50    size_t *);
     51extern int udebug_areas_read(async_sess_t *, void *, size_t, size_t *,
     52    size_t *);
     53extern int udebug_mem_read(async_sess_t *, void *, uintptr_t, size_t);
     54extern int udebug_args_read(async_sess_t *, thash_t, sysarg_t *);
     55extern int udebug_regs_read(async_sess_t *, thash_t, void *);
     56extern int udebug_go(async_sess_t *, thash_t, udebug_event_t *, sysarg_t *,
     57    sysarg_t *);
     58extern int udebug_stop(async_sess_t *, thash_t);
    5459
    5560#endif
  • uspace/lib/c/include/vfs/vfs.h

    r764d71e r79ae36dd  
    4141#include <stdio.h>
    4242
    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 *
    4648 */
    4749typedef struct {
     
    5860
    5961extern int open_node(fdi_node_t *, int);
    60 extern int fd_phone(int);
    6162extern int fd_node(int, fdi_node_t *);
    6263
    6364extern FILE *fopen_node(fdi_node_t *, const char *);
    64 extern int fphone(FILE *);
    6565extern int fnode(FILE *, fdi_node_t *);
    6666
Note: See TracChangeset for help on using the changeset viewer.