Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/async.c

    r64d2b10 re26a4633  
    7777 *   {
    7878 *     if (want_refuse) {
    79  *       async_answer_0(icallid, ELIMIT);
     79 *       ipc_answer_0(icallid, ELIMIT);
    8080 *       return;
    8181 *     }
    82  *     async_answer_0(icallid, EOK);
     82 *     ipc_answer_0(icallid, EOK);
    8383 *
    8484 *     callid = async_get_call(&call);
    8585 *     somehow_handle_the_call(callid, call);
    86  *     async_answer_2(callid, 1, 2, 3);
     86 *     ipc_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>
     94#include <futex.h>
    9695#include <async.h>
    97 #undef LIBC_ASYNC_C_
    98 
    99 #include <futex.h>
    10096#include <fibril.h>
    10197#include <stdio.h>
    10298#include <adt/hash_table.h>
    10399#include <adt/list.h>
     100#include <ipc/ipc.h>
    104101#include <assert.h>
    105102#include <errno.h>
     
    12381235}
    12391236
    1240 void async_msg_0(int phone, sysarg_t imethod)
    1241 {
    1242         ipc_call_async_0(phone, imethod, NULL, NULL, true);
    1243 }
    1244 
    1245 void 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 
    1250 void 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 
    1255 void 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 
    1261 void 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 
    1268 void 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 
    1275 sysarg_t async_answer_0(ipc_callid_t callid, sysarg_t retval)
    1276 {
    1277         return ipc_answer_0(callid, retval);
    1278 }
    1279 
    1280 sysarg_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 
    1285 sysarg_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 
    1291 sysarg_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 
    1297 sysarg_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 
    1303 sysarg_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 
    1309 int 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 
    1315 int 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 
    13231237/** Wrapper for making IPC_M_CONNECT_TO_ME calls using the async framework.
    13241238 *
     
    14001314       
    14011315        return newphid;
    1402 }
    1403 
    1404 /** Connect to a task specified by id.
    1405  *
    1406  */
    1407 int 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  */
    1419 int async_hangup(int phone)
    1420 {
    1421         return ipc_hangup(phone);
    1422 }
    1423 
    1424 /** Interrupt one thread of this task from waiting for IPC. */
    1425 void async_poke(void)
    1426 {
    1427         ipc_poke();
    14281316}
    14291317
     
    16151503
    16161504/** Wrapper for forwarding any read request
     1505 *
    16171506 *
    16181507 */
     
    18011690/** Wrapper for forwarding any data that is about to be received
    18021691 *
     1692 *
    18031693 */
    18041694int async_data_write_forward_fast(int phoneid, sysarg_t method, sysarg_t arg1,
Note: See TracChangeset for help on using the changeset viewer.