Changeset 64d2b10 in mainline for uspace/lib/c/include/async.h


Ignore:
Timestamp:
2011-01-29T11:35:03Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ffa2c8ef
Parents:
2c577e0b
Message:

libc: do not intermix low-level IPC methods with async framework methods

File:
1 edited

Legend:

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

    r2c577e0b r64d2b10  
    3333 */
    3434
     35#if ((defined(LIBC_IPC_H_)) && (!defined(LIBC_ASYNC_C_)))
     36        #error Do not intermix low-level IPC interface and async framework
     37#endif
     38
    3539#ifndef LIBC_ASYNC_H_
    3640#define LIBC_ASYNC_H_
    3741
    38 #include <ipc/ipc.h>
     42#include <ipc/common.h>
    3943#include <async_sess.h>
    4044#include <fibril.h>
     
    4246#include <atomic.h>
    4347#include <bool.h>
     48#include <task.h>
    4449
    4550typedef ipc_callid_t aid_t;
     
    4954
    5055typedef void (*async_client_conn_t)(ipc_callid_t, ipc_call_t *);
    51 
    52 extern atomic_t async_futex;
    5356
    5457extern atomic_t threads_in_ipc_wait;
     
    110113extern void async_set_interrupt_received(async_client_conn_t);
    111114
    112 /* Wrappers for simple communication */
    113 #define async_msg_0(phone, method) \
    114         ipc_call_async_0((phone), (method), NULL, NULL, true)
    115 #define async_msg_1(phone, method, arg1) \
    116         ipc_call_async_1((phone), (method), (arg1), NULL, NULL, \
    117             true)
    118 #define async_msg_2(phone, method, arg1, arg2) \
    119         ipc_call_async_2((phone), (method), (arg1), (arg2), NULL, NULL, \
    120             true)
    121 #define async_msg_3(phone, method, arg1, arg2, arg3) \
    122         ipc_call_async_3((phone), (method), (arg1), (arg2), (arg3), NULL, NULL, \
    123             true)
    124 #define async_msg_4(phone, method, arg1, arg2, arg3, arg4) \
    125         ipc_call_async_4((phone), (method), (arg1), (arg2), (arg3), (arg4), NULL, \
    126             NULL, true)
    127 #define async_msg_5(phone, method, arg1, arg2, arg3, arg4, arg5) \
    128         ipc_call_async_5((phone), (method), (arg1), (arg2), (arg3), (arg4), \
    129             (arg5), NULL, NULL, true)
     115/*
     116 * Wrappers for simple communication.
     117 */
     118
     119extern void async_msg_0(int, sysarg_t);
     120extern void async_msg_1(int, sysarg_t, sysarg_t);
     121extern void async_msg_2(int, sysarg_t, sysarg_t, sysarg_t);
     122extern void async_msg_3(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t);
     123extern void async_msg_4(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t);
     124extern void async_msg_5(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t,
     125    sysarg_t);
     126
     127/*
     128 * Wrappers for answer routines.
     129 */
     130
     131extern sysarg_t async_answer_0(ipc_callid_t, sysarg_t);
     132extern sysarg_t async_answer_1(ipc_callid_t, sysarg_t, sysarg_t);
     133extern sysarg_t async_answer_2(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t);
     134extern sysarg_t async_answer_3(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
     135    sysarg_t);
     136extern sysarg_t async_answer_4(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
     137    sysarg_t, sysarg_t);
     138extern sysarg_t async_answer_5(ipc_callid_t, sysarg_t, sysarg_t, sysarg_t,
     139    sysarg_t, sysarg_t, sysarg_t);
     140
     141/*
     142 * Wrappers for forwarding routines.
     143 */
     144
     145extern int async_forward_fast(ipc_callid_t, int, int, sysarg_t, sysarg_t, int);
     146extern int async_forward_slow(ipc_callid_t, int, int, sysarg_t, sysarg_t,
     147    sysarg_t, sysarg_t, sysarg_t, int);
    130148
    131149/*
     
    135153 * and slow verion based on m.
    136154 */
     155
    137156#define async_req_0_0(phoneid, method) \
    138157        async_req_fast((phoneid), (method), 0, 0, 0, 0, NULL, NULL, NULL, NULL, \
     
    270289extern int async_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t);
    271290extern int async_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t);
     291extern int async_connect_kbox(task_id_t);
     292extern int async_hangup(int);
     293extern void async_poke(void);
    272294
    273295/*
    274296 * User-friendly wrappers for async_share_in_start().
    275297 */
     298
    276299#define async_share_in_start_0_0(phoneid, dst, size) \
    277300        async_share_in_start((phoneid), (dst), (size), 0, NULL)
     
    293316 * User-friendly wrappers for async_data_read_forward_fast().
    294317 */
     318
    295319#define async_data_read_forward_0_0(phoneid, method, answer) \
    296320        async_data_read_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL)
     
    329353 * User-friendly wrappers for async_data_write_forward_fast().
    330354 */
     355
    331356#define async_data_write_forward_0_0(phoneid, method, answer) \
    332357        async_data_write_forward_fast((phoneid), (method), 0, 0, 0, 0, NULL)
Note: See TracChangeset for help on using the changeset viewer.