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


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/generic/async.c

    r2c577e0b r64d2b10  
    7777 *   {
    7878 *     if (want_refuse) {
    79  *       ipc_answer_0(icallid, ELIMIT);
     79 *       async_answer_0(icallid, ELIMIT);
    8080 *       return;
    8181 *     }
    82  *     ipc_answer_0(icallid, EOK);
     82 *     async_answer_0(icallid, EOK);
    8383 *
    8484 *     callid = async_get_call(&call);
    8585 *     somehow_handle_the_call(callid, call);
    86  *     ipc_answer_2(callid, 1, 2, 3);
     86 *     async_answer_2(callid, 1, 2, 3);
    8787 *
    8888 *     callid = async_get_call(&call);
     
    9292 */
    9393
     94#define LIBC_ASYNC_C_
     95#include <ipc/ipc.h>
     96#include <async.h>
     97#undef LIBC_ASYNC_C_
     98
    9499#include <futex.h>
    95 #include <async.h>
    96100#include <fibril.h>
    97101#include <stdio.h>
    98102#include <adt/hash_table.h>
    99103#include <adt/list.h>
    100 #include <ipc/ipc.h>
    101104#include <assert.h>
    102105#include <errno.h>
     
    12351238}
    12361239
     1240void async_msg_0(int phone, sysarg_t imethod)
     1241{
     1242        ipc_call_async_0(phone, imethod, NULL, NULL, true);
     1243}
     1244
     1245void async_msg_1(int phone, sysarg_t imethod, sysarg_t arg1)
     1246{
     1247        ipc_call_async_1(phone, imethod, arg1, NULL, NULL, true);
     1248}
     1249
     1250void async_msg_2(int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2)
     1251{
     1252        ipc_call_async_2(phone, imethod, arg1, arg2, NULL, NULL, true);
     1253}
     1254
     1255void async_msg_3(int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2,
     1256    sysarg_t arg3)
     1257{
     1258        ipc_call_async_3(phone, imethod, arg1, arg2, arg3, NULL, NULL, true);
     1259}
     1260
     1261void async_msg_4(int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2,
     1262    sysarg_t arg3, sysarg_t arg4)
     1263{
     1264        ipc_call_async_4(phone, imethod, arg1, arg2, arg3, arg4, NULL, NULL,
     1265            true);
     1266}
     1267
     1268void async_msg_5(int phone, sysarg_t imethod, sysarg_t arg1, sysarg_t arg2,
     1269    sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
     1270{
     1271        ipc_call_async_5(phone, imethod, arg1, arg2, arg3, arg4, arg5, NULL,
     1272            NULL, true);
     1273}
     1274
     1275sysarg_t async_answer_0(ipc_callid_t callid, sysarg_t retval)
     1276{
     1277        return ipc_answer_0(callid, retval);
     1278}
     1279
     1280sysarg_t async_answer_1(ipc_callid_t callid, sysarg_t retval, sysarg_t arg1)
     1281{
     1282        return ipc_answer_1(callid, retval, arg1);
     1283}
     1284
     1285sysarg_t async_answer_2(ipc_callid_t callid, sysarg_t retval, sysarg_t arg1,
     1286    sysarg_t arg2)
     1287{
     1288        return ipc_answer_2(callid, retval, arg1, arg2);
     1289}
     1290
     1291sysarg_t async_answer_3(ipc_callid_t callid, sysarg_t retval, sysarg_t arg1,
     1292    sysarg_t arg2, sysarg_t arg3)
     1293{
     1294        return ipc_answer_3(callid, retval, arg1, arg2, arg3);
     1295}
     1296
     1297sysarg_t async_answer_4(ipc_callid_t callid, sysarg_t retval, sysarg_t arg1,
     1298    sysarg_t arg2, sysarg_t arg3, sysarg_t arg4)
     1299{
     1300        return ipc_answer_4(callid, retval, arg1, arg2, arg3, arg4);
     1301}
     1302
     1303sysarg_t async_answer_5(ipc_callid_t callid, sysarg_t retval, sysarg_t arg1,
     1304    sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
     1305{
     1306        return ipc_answer_5(callid, retval, arg1, arg2, arg3, arg4, arg5);
     1307}
     1308
     1309int async_forward_fast(ipc_callid_t callid, int phoneid, int imethod,
     1310    sysarg_t arg1, sysarg_t arg2, int mode)
     1311{
     1312        return ipc_forward_fast(callid, phoneid, imethod, arg1, arg2, mode);
     1313}
     1314
     1315int async_forward_slow(ipc_callid_t callid, int phoneid, int imethod,
     1316    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5,
     1317    int mode)
     1318{
     1319        return ipc_forward_slow(callid, phoneid, imethod, arg1, arg2, arg3, arg4,
     1320            arg5, mode);
     1321}
     1322
    12371323/** Wrapper for making IPC_M_CONNECT_TO_ME calls using the async framework.
    12381324 *
     
    13141400       
    13151401        return newphid;
     1402}
     1403
     1404/** Connect to a task specified by id.
     1405 *
     1406 */
     1407int async_connect_kbox(task_id_t id)
     1408{
     1409        return ipc_connect_kbox(id);
     1410}
     1411
     1412/** Wrapper for ipc_hangup.
     1413 *
     1414 * @param phone Phone handle to hung up.
     1415 *
     1416 * @return Zero on success or a negative error code.
     1417 *
     1418 */
     1419int async_hangup(int phone)
     1420{
     1421        return ipc_hangup(phone);
     1422}
     1423
     1424/** Interrupt one thread of this task from waiting for IPC. */
     1425void async_poke(void)
     1426{
     1427        ipc_poke();
    13161428}
    13171429
     
    15031615
    15041616/** Wrapper for forwarding any read request
    1505  *
    15061617 *
    15071618 */
     
    16901801/** Wrapper for forwarding any data that is about to be received
    16911802 *
    1692  *
    16931803 */
    16941804int async_data_write_forward_fast(int phoneid, sysarg_t method, sysarg_t arg1,
Note: See TracChangeset for help on using the changeset viewer.