Changeset 2133e02 in mainline for uspace/lib/c/generic/ns.c


Ignore:
Timestamp:
2015-08-18T20:14:05Z (10 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1a522e5
Parents:
84dc30c
Message:

canonically reserve the first argument of IPC_M_CONNECT_ME_TO for interface type
naming service: service handle in IPC_M_CONNECT_ME_TO needs to be shifted to the second argument
service connections that use the untyped (fallback) port can only provide one additional argument now

File:
1 edited

Legend:

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

    r84dc30c r2133e02  
    4343{
    4444        async_exch_t *exch = async_exchange_begin(session_ns);
    45         int rc = async_connect_to_me(exch, service, 0, 0, NULL, NULL);
     45        int rc = async_connect_to_me(exch, 0, service, 0, NULL, NULL);
    4646        async_exchange_end(exch);
    4747       
     
    4949}
    5050
    51 async_sess_t *service_connect(exch_mgmt_t mgmt, service_t service, sysarg_t arg2,
    52     sysarg_t arg3)
     51async_sess_t *service_connect_iface(exch_mgmt_t mgmt, sysarg_t iface,
     52    service_t service, sysarg_t arg3)
    5353{
    5454        async_exch_t *exch = async_exchange_begin(session_ns);
     
    5757       
    5858        async_sess_t *sess =
    59             async_connect_me_to(mgmt, exch, service, arg2, arg3);
     59            async_connect_me_to(mgmt, exch, iface, service, arg3);
    6060        async_exchange_end(exch);
    6161       
     
    6868         * first argument for non-initial connections.
    6969         */
    70         async_sess_args_set(sess, arg2, arg3, 0);
     70        async_sess_args_set(sess, iface, arg3, 0);
    7171       
    7272        return sess;
    7373}
    7474
    75 async_sess_t *service_connect_blocking(exch_mgmt_t mgmt, service_t service,
    76     sysarg_t arg2, sysarg_t arg3)
     75async_sess_t *service_connect(exch_mgmt_t mgmt, service_t service, sysarg_t arg3)
    7776{
    7877        async_exch_t *exch = async_exchange_begin(session_ns);
    7978        if (!exch)
    8079                return NULL;
     80       
    8181        async_sess_t *sess =
    82             async_connect_me_to_blocking(mgmt, exch, service, arg2, arg3);
     82            async_connect_me_to(mgmt, exch, 0, service, arg3);
    8383        async_exchange_end(exch);
    8484       
     
    9191         * first argument for non-initial connections.
    9292         */
    93         async_sess_args_set(sess, arg2, arg3, 0);
     93        async_sess_args_set(sess, 0, arg3, 0);
     94       
     95        return sess;
     96}
     97
     98async_sess_t *service_connect_blocking_iface(exch_mgmt_t mgmt, sysarg_t iface,
     99    service_t service, sysarg_t arg3)
     100{
     101        async_exch_t *exch = async_exchange_begin(session_ns);
     102        if (!exch)
     103                return NULL;
     104        async_sess_t *sess =
     105            async_connect_me_to_blocking(mgmt, exch, iface, service, arg3);
     106        async_exchange_end(exch);
     107       
     108        if (!sess)
     109                return NULL;
     110       
     111        /*
     112         * FIXME Ugly hack to work around limitation of implementing
     113         * parallel exchanges using multiple connections. Shift out
     114         * first argument for non-initial connections.
     115         */
     116        async_sess_args_set(sess, iface, arg3, 0);
     117       
     118        return sess;
     119}
     120
     121async_sess_t *service_connect_blocking(exch_mgmt_t mgmt, service_t service,
     122    sysarg_t arg3)
     123{
     124        async_exch_t *exch = async_exchange_begin(session_ns);
     125        if (!exch)
     126                return NULL;
     127        async_sess_t *sess =
     128            async_connect_me_to_blocking(mgmt, exch, 0, service, arg3);
     129        async_exchange_end(exch);
     130       
     131        if (!sess)
     132                return NULL;
     133       
     134        /*
     135         * FIXME Ugly hack to work around limitation of implementing
     136         * parallel exchanges using multiple connections. Shift out
     137         * first argument for non-initial connections.
     138         */
     139        async_sess_args_set(sess, 0, arg3, 0);
    94140       
    95141        return sess;
     
    113159        /* Connect to the needed service */
    114160        async_sess_t *sess =
    115             service_connect_blocking(EXCHANGE_SERIALIZE, service, 0, 0);
     161            service_connect_blocking(EXCHANGE_SERIALIZE, service, 0);
    116162        if (sess != NULL) {
    117163                /* Request callback connection */
Note: See TracChangeset for help on using the changeset viewer.