Changeset 007e6efa in mainline for uspace/lib/c


Ignore:
Timestamp:
2011-01-28T15:44:39Z (14 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()
Location:
uspace/lib/c
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/Makefile

    rae0300b5 r007e6efa  
    8383        generic/io/console.c \
    8484        generic/io/screenbuffer.c \
     85        generic/ipc/ns.c \
    8586        generic/malloc.c \
    8687        generic/sysinfo.c \
  • 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}
  • uspace/lib/c/generic/clipboard.c

    rae0300b5 r007e6efa  
    3939
    4040#include <clipboard.h>
     41#include <ipc/ns.h>
    4142#include <ipc/services.h>
    4243#include <ipc/clipboard.h>
     
    5455{
    5556        while (clip_phone < 0)
    56                 clip_phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_CLIPBOARD, 0, 0);
     57                clip_phone = service_connect_blocking(SERVICE_CLIPBOARD, 0, 0);
    5758}
    5859
  • uspace/lib/c/generic/devmap.c

    rae0300b5 r007e6efa  
    3131#include <ipc/ipc.h>
    3232#include <ipc/services.h>
     33#include <ipc/ns.h>
    3334#include <ipc/devmap.h>
    3435#include <devmap.h>
     
    5051               
    5152                if (flags & IPC_FLAG_BLOCKING)
    52                         devmap_phone_driver = ipc_connect_me_to_blocking(PHONE_NS,
    53                             SERVICE_DEVMAP, DEVMAP_DRIVER, 0);
     53                        devmap_phone_driver = service_connect_blocking(SERVICE_DEVMAP,
     54                            DEVMAP_DRIVER, 0);
    5455                else
    55                         devmap_phone_driver = ipc_connect_me_to(PHONE_NS,
    56                             SERVICE_DEVMAP, DEVMAP_DRIVER, 0);
     56                        devmap_phone_driver = service_connect(SERVICE_DEVMAP,
     57                            DEVMAP_DRIVER, 0);
    5758               
    5859                return devmap_phone_driver;
     
    6263               
    6364                if (flags & IPC_FLAG_BLOCKING)
    64                         devmap_phone_client = ipc_connect_me_to_blocking(PHONE_NS,
    65                             SERVICE_DEVMAP, DEVMAP_CLIENT, 0);
     65                        devmap_phone_client = service_connect_blocking(SERVICE_DEVMAP,
     66                            DEVMAP_CLIENT, 0);
    6667                else
    67                         devmap_phone_client = ipc_connect_me_to(PHONE_NS,
    68                             SERVICE_DEVMAP, DEVMAP_CLIENT, 0);
     68                        devmap_phone_client = service_connect(SERVICE_DEVMAP,
     69                            DEVMAP_CLIENT, 0);
    6970               
    7071                return devmap_phone_client;
  • uspace/lib/c/generic/loader.c

    rae0300b5 r007e6efa  
    3636#include <ipc/loader.h>
    3737#include <ipc/services.h>
     38#include <ipc/ns.h>
    3839#include <libc.h>
    3940#include <task.h>
     
    6364loader_t *loader_connect(void)
    6465{
    65         int phone_id = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_LOAD, 0, 0);
     66        int phone_id = service_connect_blocking(SERVICE_LOAD, 0, 0);
    6667        if (phone_id < 0)
    6768                return NULL;
  • uspace/lib/c/generic/vfs/vfs.c

    rae0300b5 r007e6efa  
    4545#include <ipc/ipc.h>
    4646#include <ipc/services.h>
     47#include <ipc/ns.h>
    4748#include <async.h>
    4849#include <fibril_synch.h>
     
    118119static void vfs_connect(void)
    119120{
    120         while (vfs_phone < 0) {
    121                 vfs_phone = async_connect_me_to_blocking(PHONE_NS, SERVICE_VFS,
    122                     0, 0);
    123         }
     121        while (vfs_phone < 0)
     122                vfs_phone = service_connect_blocking(SERVICE_VFS, 0, 0);
    124123       
    125124        async_session_create(&vfs_session, vfs_phone, 0);
  • uspace/lib/c/include/async.h

    rae0300b5 r007e6efa  
    266266}
    267267
     268extern int async_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t,
     269    async_client_conn_t);
    268270extern int async_connect_me_to(int, sysarg_t, sysarg_t, sysarg_t);
    269271extern int async_connect_me_to_blocking(int, sysarg_t, sysarg_t, sysarg_t);
  • uspace/lib/c/include/ipc/ns.h

    rae0300b5 r007e6efa  
    3636#define LIBIPC_NS_H_
    3737
     38#include <sys/types.h>
    3839#include <ipc/ipc.h>
    3940
     
    4546} ns_request_t;
    4647
     48extern int service_register(sysarg_t);
     49extern int service_connect(sysarg_t, sysarg_t, sysarg_t);
     50extern int service_connect_blocking(sysarg_t, sysarg_t, sysarg_t);
     51
     52extern wchar_t *service_klog_share_in(size_t *);
     53
    4754#endif
    4855
Note: See TracChangeset for help on using the changeset viewer.