Changeset 007e6efa in mainline for uspace/lib/c/generic/async.c


Ignore:
Timestamp:
2011-01-28T15:44:39Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
4db1fbf
Parents:
ae0300b5
Message:
  • libc routines for registering services and connecting to services via NS
  • async_connect_to_me()
File:
1 edited

Legend:

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

    rae0300b5 r007e6efa  
    5858 *   int fibril1(void *arg)
    5959 *   {
    60  *     conn = ipc_connect_me_to();
     60 *     conn = async_connect_me_to();
    6161 *     c1 = async_send(conn);
    6262 *     c2 = async_send(conn);
     
    12351235}
    12361236
     1237/** Wrapper for making IPC_M_CONNECT_TO_ME calls using the async framework.
     1238 *
     1239 * Ask through phone for a new connection to some service.
     1240 *
     1241 * @param phone           Phone handle used for contacting the other side.
     1242 * @param arg1            User defined argument.
     1243 * @param arg2            User defined argument.
     1244 * @param arg3            User defined argument.
     1245 * @param client_receiver Connection handing routine.
     1246 *
     1247 * @return New phone handle on success or a negative error code.
     1248 *
     1249 */
     1250int async_connect_to_me(int phone, sysarg_t arg1, sysarg_t arg2,
     1251    sysarg_t arg3, async_client_conn_t client_receiver)
     1252{
     1253        sysarg_t task_hash;
     1254        sysarg_t phone_hash;
     1255        int rc = async_req_3_5(phone, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3,
     1256            NULL, NULL, NULL, &task_hash, &phone_hash);
     1257        if (rc != EOK)
     1258                return rc;
     1259       
     1260        if (client_receiver != NULL)
     1261                async_new_connection(task_hash, phone_hash, 0, NULL,
     1262                    client_receiver);
     1263       
     1264        return EOK;
     1265}
     1266
    12371267/** Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework.
    1238  * 
     1268 *
    12391269 * Ask through phone for a new connection to some service.
    12401270 *
    1241  * @param phoneid       Phone handle used for contacting the other side.
    1242  * @param arg1          User defined argument.
    1243  * @param arg2          User defined argument.
    1244  * @param arg3          User defined argument.
    1245  *
    1246  * @return              New phone handle on success or a negative error code.
    1247  */
    1248 int
    1249 async_connect_me_to(int phoneid, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3)
    1250 {
    1251         int rc;
     1271 * @param phone Phone handle used for contacting the other side.
     1272 * @param arg1  User defined argument.
     1273 * @param arg2  User defined argument.
     1274 * @param arg3  User defined argument.
     1275 *
     1276 * @return New phone handle on success or a negative error code.
     1277 *
     1278 */
     1279int async_connect_me_to(int phone, sysarg_t arg1, sysarg_t arg2,
     1280    sysarg_t arg3)
     1281{
    12521282        sysarg_t newphid;
    1253 
    1254         rc = async_req_3_5(phoneid, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3, NULL,
    1255             NULL, NULL, NULL, &newphid);
    1256        
    1257         if (rc != EOK) 
     1283        int rc = async_req_3_5(phone, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3,
     1284            NULL, NULL, NULL, NULL, &newphid);
     1285       
     1286        if (rc != EOK)
    12581287                return rc;
    1259 
     1288       
    12601289        return newphid;
    12611290}
    12621291
    12631292/** Wrapper for making IPC_M_CONNECT_ME_TO calls using the async framework.
    1264  * 
     1293 *
    12651294 * Ask through phone for a new connection to some service and block until
    12661295 * success.
    12671296 *
    1268  * @param phoneid       Phone handle used for contacting the other side.
    1269  * @param arg1          User defined argument.
    1270  * @param arg2          User defined argument.
    1271  * @param arg3          User defined argument.
    1272  *
    1273  * @return              New phone handle on success or a negative error code.
    1274  */
    1275 int
    1276 async_connect_me_to_blocking(int phoneid, sysarg_t arg1, sysarg_t arg2,
     1297 * @param phoneid Phone handle used for contacting the other side.
     1298 * @param arg1    User defined argument.
     1299 * @param arg2    User defined argument.
     1300 * @param arg3    User defined argument.
     1301 *
     1302 * @return New phone handle on success or a negative error code.
     1303 *
     1304 */
     1305int async_connect_me_to_blocking(int phoneid, sysarg_t arg1, sysarg_t arg2,
    12771306    sysarg_t arg3)
    12781307{
    1279         int rc;
    12801308        sysarg_t newphid;
    1281 
    1282         rc = async_req_4_5(phoneid, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3,
     1309        int rc = async_req_4_5(phoneid, IPC_M_CONNECT_ME_TO, arg1, arg2, arg3,
    12831310            IPC_FLAG_BLOCKING, NULL, NULL, NULL, NULL, &newphid);
    12841311       
    1285         if (rc != EOK) 
     1312        if (rc != EOK)
    12861313                return rc;
    1287 
     1314       
    12881315        return newphid;
    12891316}
Note: See TracChangeset for help on using the changeset viewer.