Changes in uspace/srv/locsrv/locsrv.c [372df8f:8a637a4] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/locsrv/locsrv.c
r372df8f r8a637a4 412 412 { 413 413 if (server == NULL) 414 return EEXIST S;414 return EEXIST; 415 415 416 416 fibril_mutex_lock(&servers_list_mutex); … … 467 467 } 468 468 469 /* Set the interface, if any. */470 service->forward_interface = IPC_GET_ARG1(*icall);471 472 469 /* Get fqsn */ 473 470 char *fqsn; … … 514 511 free(service->name); 515 512 free(service); 516 async_answer_0(iid, EEXIST S);513 async_answer_0(iid, EEXIST); 517 514 return; 518 515 } … … 702 699 * 703 700 */ 704 static void loc_forward(ipc_callid_t callid, ipc_call_t *call )701 static void loc_forward(ipc_callid_t callid, ipc_call_t *call, void *arg) 705 702 { 706 703 fibril_mutex_lock(&services_list_mutex); … … 709 706 * Get ID from request 710 707 */ 708 iface_t iface = IPC_GET_ARG1(*call); 711 709 service_id_t id = IPC_GET_ARG2(*call); 712 710 loc_service_t *svc = loc_service_find_id(id); … … 719 717 720 718 async_exch_t *exch = async_exchange_begin(svc->server->sess); 721 722 if (svc->forward_interface == 0) 723 async_forward_fast(callid, exch, svc->id, 0, 0, IPC_FF_NONE); 724 else 725 async_forward_fast(callid, exch, svc->forward_interface, 726 svc->id, 0, IPC_FF_NONE); 727 719 async_forward_fast(callid, exch, iface, svc->id, 0, IPC_FF_NONE); 728 720 async_exchange_end(exch); 729 721 … … 959 951 loc_namespace_find_id(IPC_GET_ARG1(*icall)); 960 952 if (namespace == NULL) 961 async_answer_0(iid, EEXIST S);953 async_answer_0(iid, EEXIST); 962 954 else 963 955 async_answer_1(iid, EOK, namespace->refcnt); … … 1325 1317 categ_dir_add_cat(&cdir, cat); 1326 1318 1327 cat = category_new("disk");1328 categ_dir_add_cat(&cdir, cat);1329 1330 cat = category_new("partition");1331 categ_dir_add_cat(&cdir, cat);1332 1333 1319 cat = category_new("iplink"); 1334 1320 categ_dir_add_cat(&cdir, cat); … … 1382 1368 * 1383 1369 */ 1384 static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall )1370 static void loc_connection_supplier(ipc_callid_t iid, ipc_call_t *icall, void *arg) 1385 1371 { 1386 1372 /* Accept connection */ … … 1440 1426 * 1441 1427 */ 1442 static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall )1428 static void loc_connection_consumer(ipc_callid_t iid, ipc_call_t *icall, void *arg) 1443 1429 { 1444 1430 /* Accept connection */ … … 1507 1493 } 1508 1494 1509 /** Function for handling connections to location service1510 *1511 */1512 static void loc_connection(ipc_callid_t iid, ipc_call_t *icall, void *arg)1513 {1514 /* Select interface */1515 switch ((sysarg_t) (IPC_GET_ARG1(*icall))) {1516 case LOC_PORT_SUPPLIER:1517 loc_connection_supplier(iid, icall);1518 break;1519 case LOC_PORT_CONSUMER:1520 loc_connection_consumer(iid, icall);1521 break;1522 case LOC_CONNECT_TO_SERVICE:1523 /* Connect client to selected service */1524 loc_forward(iid, icall);1525 break;1526 default:1527 /* No such interface */1528 async_answer_0(iid, ENOENT);1529 }1530 }1531 1532 1495 /** 1533 1496 * … … 1542 1505 } 1543 1506 1544 /* Set a handler of incomming connections */ 1545 async_set_client_connection(loc_connection); 1546 1547 /* Register location service at naming service */ 1548 int rc = service_register(SERVICE_LOC); 1507 port_id_t port; 1508 int rc = async_create_port(INTERFACE_LOC_SUPPLIER, 1509 loc_connection_supplier, NULL, &port); 1549 1510 if (rc != EOK) 1550 1511 return rc; 1551 1512 1513 rc = async_create_port(INTERFACE_LOC_CONSUMER, 1514 loc_connection_consumer, NULL, &port); 1515 if (rc != EOK) 1516 return rc; 1517 1518 /* Set a handler of incomming connections */ 1519 async_set_fallback_port_handler(loc_forward, NULL); 1520 1521 /* Register location service at naming service */ 1522 rc = service_register(SERVICE_LOC); 1523 if (rc != EOK) 1524 return rc; 1525 1552 1526 printf("%s: Accepting connections\n", NAME); 1553 1527 async_manager();
Note:
See TracChangeset
for help on using the changeset viewer.