Changes in uspace/lib/c/generic/ns.c [7b616e2:f9b2cb4c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/ns.c
r7b616e2 rf9b2cb4c 40 40 #include "private/ns.h" 41 41 42 /*43 * XXX ns does not know about session_ns, so we create an extra session for44 * actual communicaton45 */46 static async_sess_t *sess_ns = NULL;47 48 42 int service_register(service_t service) 49 43 { 50 sysarg_t retval; 51 ipc_call_t answer; 52 53 async_sess_t *sess = ns_session_get(); 54 if (sess == NULL) 55 return EIO; 56 57 async_exch_t *exch = async_exchange_begin(sess); 58 aid_t req = async_send_1(exch, NS_REGISTER, service, &answer); 44 async_exch_t *exch = async_exchange_begin(session_ns); 59 45 int rc = async_connect_to_me(exch, 0, service, 0); 60 61 46 async_exchange_end(exch); 62 47 63 if (rc != EOK) {64 async_forget(req);65 return rc;66 }67 68 async_wait_for(req, &retval);69 48 return rc; 70 49 } 71 50 51 72 52 async_sess_t *service_connect(service_t service, iface_t iface, sysarg_t arg3) 73 53 { 74 async_ sess_t *sess = ns_session_get();75 if ( sess == NULL)54 async_exch_t *exch = async_exchange_begin(session_ns); 55 if (!exch) 76 56 return NULL; 77 57 78 async_exch_t *exch = async_exchange_begin(sess); 79 if (exch == NULL) 80 return NULL; 81 82 async_sess_t *csess = 58 async_sess_t *sess = 83 59 async_connect_me_to_iface(exch, iface, service, arg3); 84 60 async_exchange_end(exch); 85 61 86 if ( csess == NULL)62 if (!sess) 87 63 return NULL; 88 64 … … 92 68 * first argument for non-initial connections. 93 69 */ 94 async_sess_args_set( csess, iface, arg3, 0);70 async_sess_args_set(sess, iface, arg3, 0); 95 71 96 return csess;72 return sess; 97 73 } 98 74 … … 100 76 sysarg_t arg3) 101 77 { 102 async_sess_t *sess = ns_session_get(); 103 if (sess == NULL) 104 return NULL; 105 106 async_exch_t *exch = async_exchange_begin(sess); 107 async_sess_t *csess = 78 async_exch_t *exch = async_exchange_begin(session_ns); 79 async_sess_t *sess = 108 80 async_connect_me_to_blocking_iface(exch, iface, service, arg3); 109 81 async_exchange_end(exch); 110 82 111 if ( csess == NULL)83 if (!sess) 112 84 return NULL; 113 85 … … 117 89 * first argument for non-initial connections. 118 90 */ 119 async_sess_args_set( csess, iface, arg3, 0);91 async_sess_args_set(sess, iface, arg3, 0); 120 92 121 return csess;93 return sess; 122 94 } 123 95 … … 125 97 int ns_ping(void) 126 98 { 127 async_sess_t *sess = ns_session_get(); 128 if (sess == NULL) 129 return EIO; 130 131 async_exch_t *exch = async_exchange_begin(sess); 99 async_exch_t *exch = async_exchange_begin(session_ns); 132 100 int rc = async_req_0_0(exch, NS_PING); 133 101 async_exchange_end(exch); … … 138 106 int ns_intro(task_id_t id) 139 107 { 140 async_exch_t *exch; 141 async_sess_t *sess = ns_session_get(); 142 if (sess == NULL) 143 return EIO; 144 145 exch = async_exchange_begin(sess); 108 async_exch_t *exch = async_exchange_begin(session_ns); 146 109 int rc = async_req_2_0(exch, NS_ID_INTRO, LOWER32(id), UPPER32(id)); 147 110 async_exchange_end(exch); … … 150 113 } 151 114 152 async_sess_t *ns_session_get(void)153 {154 async_exch_t *exch;155 156 if (sess_ns == NULL) {157 exch = async_exchange_begin(session_ns);158 sess_ns = async_connect_me_to_iface(exch, 0, 0, 0);159 async_exchange_end(exch);160 if (sess_ns == NULL)161 return NULL;162 }163 164 return sess_ns;165 }166 167 115 /** @} 168 116 */
Note:
See TracChangeset
for help on using the changeset viewer.