Changeset 9b1baac in mainline for uspace/lib/c
- Timestamp:
- 2018-07-18T08:35:42Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 0b05082
- Parents:
- edc64c0
- Location:
- uspace/lib/c
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/async/server.c
redc64c0 r9b1baac 1317 1317 * Ask through phone for a new connection to some service. 1318 1318 * 1319 * @param exch Exchange for sending the message.1320 * @param arg1 User defined argument.1321 * @param arg2 User defined argument.1322 * @param arg3 User defined argument.1319 * @param exch Exchange for sending the message. 1320 * @param iface Callback interface. 1321 * @param arg2 User defined argument. 1322 * @param arg3 User defined argument. 1323 1323 * 1324 1324 * @return Zero on success or an error code. 1325 1325 * 1326 1326 */ 1327 errno_t async_connect_to_me(async_exch_t *exch, sysarg_t arg1, sysarg_t arg2,1327 errno_t async_connect_to_me(async_exch_t *exch, iface_t iface, sysarg_t arg2, 1328 1328 sysarg_t arg3) 1329 1329 { … … 1332 1332 1333 1333 ipc_call_t answer; 1334 aid_t req = async_send_3(exch, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3,1334 aid_t req = async_send_3(exch, IPC_M_CONNECT_TO_ME, iface, arg2, arg3, 1335 1335 &answer); 1336 1336 -
uspace/lib/c/generic/devman.c
redc64c0 r9b1baac 192 192 193 193 exch = devman_exchange_begin(INTERFACE_DDF_DRIVER); 194 async_connect_to_me(exch, 0, 0, 0);194 async_connect_to_me(exch, INTERFACE_ANY, 0, 0); 195 195 devman_exchange_end(exch); 196 196 -
uspace/lib/c/generic/loc.c
redc64c0 r9b1baac 255 255 } 256 256 257 async_connect_to_me(exch, 0, 0, 0);257 async_connect_to_me(exch, INTERFACE_ANY, 0, 0); 258 258 259 259 /* -
uspace/lib/c/generic/ns.c
redc64c0 r9b1baac 46 46 static async_sess_t *sess_ns = NULL; 47 47 48 errno_t service_register(service_t service) 49 { 50 errno_t retval; 48 errno_t service_register(service_t service, iface_t iface, 49 async_port_handler_t handler, void *data) 50 { 51 async_sess_t *sess = ns_session_get(); 52 if (sess == NULL) 53 return EIO; 54 55 port_id_t port; 56 errno_t rc = async_create_port(iface, handler, data, &port); 57 if (rc != EOK) 58 return rc; 59 60 async_exch_t *exch = async_exchange_begin(sess); 61 51 62 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); 59 errno_t rc = async_connect_to_me(exch, 0, service, 0); 63 aid_t req = async_send_2(exch, NS_REGISTER, service, iface, &answer); 64 rc = async_connect_to_me(exch, iface, service, 0); 60 65 61 66 async_exchange_end(exch); … … 66 71 } 67 72 73 errno_t retval; 74 async_wait_for(req, &retval); 75 return rc; 76 } 77 78 errno_t service_register_broker(service_t service, async_port_handler_t handler, 79 void *data) 80 { 81 async_set_fallback_port_handler(handler, data); 82 83 async_sess_t *sess = ns_session_get(); 84 if (sess == NULL) 85 return EIO; 86 87 async_exch_t *exch = async_exchange_begin(sess); 88 89 ipc_call_t answer; 90 aid_t req = async_send_1(exch, NS_REGISTER_BROKER, service, &answer); 91 errno_t rc = async_connect_to_me(exch, INTERFACE_ANY, service, 0); 92 93 async_exchange_end(exch); 94 95 if (rc != EOK) { 96 async_forget(req); 97 return rc; 98 } 99 100 errno_t retval; 68 101 async_wait_for(req, &retval); 69 102 return rc; -
uspace/lib/c/include/async.h
redc64c0 r9b1baac 342 342 extern async_sess_t *async_connect_kbox(task_id_t); 343 343 344 extern errno_t async_connect_to_me(async_exch_t *, sysarg_t, sysarg_t, sysarg_t);344 extern errno_t async_connect_to_me(async_exch_t *, iface_t, sysarg_t, sysarg_t); 345 345 346 346 extern errno_t async_hangup(async_sess_t *); -
uspace/lib/c/include/ipc/ns.h
redc64c0 r9b1baac 41 41 NS_PING = IPC_FIRST_USER_METHOD, 42 42 NS_REGISTER, 43 NS_REGISTER_BROKER, 43 44 NS_TASK_WAIT, 44 45 NS_ID_INTRO, -
uspace/lib/c/include/ns.h
redc64c0 r9b1baac 40 40 #include <async.h> 41 41 42 extern errno_t service_register(service_t); 42 extern errno_t service_register(service_t, iface_t, async_port_handler_t, 43 void *); 44 extern errno_t service_register_broker(service_t, async_port_handler_t, void *); 43 45 extern async_sess_t *service_connect(service_t, iface_t, sysarg_t); 44 46 extern async_sess_t *service_connect_blocking(service_t, iface_t, sysarg_t);
Note:
See TracChangeset
for help on using the changeset viewer.