Changes in uspace/srv/loc/loc.c [d0dd7b5:763e0cd] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/loc/loc.c
rd0dd7b5 r763e0cd 67 67 **/ 68 68 69 FIBRIL_MUTEX_INITIALIZE(services_list_mutex);69 static FIBRIL_MUTEX_INITIALIZE(services_list_mutex); 70 70 static FIBRIL_CONDVAR_INITIALIZE(services_list_cv); 71 71 static FIBRIL_MUTEX_INITIALIZE(servers_list_mutex); … … 311 311 { 312 312 assert(fibril_mutex_is_locked(&services_list_mutex)); 313 assert(fibril_mutex_is_locked(&cdir.mutex)); 314 313 315 314 loc_namespace_delref(service->namespace); 316 315 list_remove(&(service->services)); 317 316 list_remove(&(service->server_services)); 318 319 /* Remove service from all categories. */320 while (!list_empty(&service->cat_memb)) {321 link_t *link = list_first(&service->cat_memb);322 svc_categ_t *memb = list_get_instance(link, svc_categ_t,323 svc_link);324 fibril_mutex_lock(&memb->cat->mutex);325 category_remove_service(memb);326 fibril_mutex_unlock(&memb->cat->mutex);327 }328 317 329 318 free(service->name); … … 426 415 fibril_mutex_lock(&services_list_mutex); 427 416 fibril_mutex_lock(&server->services_mutex); 428 fibril_mutex_lock(&cdir.mutex);429 417 430 418 while (!list_empty(&server->services)) { … … 435 423 } 436 424 437 fibril_mutex_unlock(&cdir.mutex);438 425 fibril_mutex_unlock(&server->services_mutex); 439 426 fibril_mutex_unlock(&services_list_mutex); … … 505 492 link_initialize(&service->services); 506 493 link_initialize(&service->server_services); 507 list_initialize(&service->cat_memb);508 494 509 495 /* Check that service is not already registered */ … … 543 529 * 544 530 */ 545 static voidloc_service_unregister(ipc_callid_t iid, ipc_call_t *icall,531 static int loc_service_unregister(ipc_callid_t iid, ipc_call_t *icall, 546 532 loc_server_t *server) 547 533 { 548 loc_service_t *svc; 549 550 fibril_mutex_lock(&services_list_mutex); 551 svc = loc_service_find_id(IPC_GET_ARG1(*icall)); 552 if (svc == NULL) { 553 fibril_mutex_unlock(&services_list_mutex); 554 async_answer_0(iid, ENOENT); 555 return; 556 } 557 558 fibril_mutex_lock(&cdir.mutex); 559 loc_service_unregister_core(svc); 560 fibril_mutex_unlock(&cdir.mutex); 561 fibril_mutex_unlock(&services_list_mutex); 562 async_answer_0(iid, EOK); 534 /* TODO */ 535 return EOK; 563 536 } 564 537 … … 1203 1176 1204 1177 fibril_mutex_lock(&services_list_mutex); 1205 fibril_mutex_lock(&cdir.mutex);1206 1178 loc_service_unregister_core(null_services[i]); 1207 fibril_mutex_unlock(&cdir.mutex);1208 1179 fibril_mutex_unlock(&services_list_mutex); 1209 1180 … … 1271 1242 1272 1243 cat = category_new("usbhc"); 1273 categ_dir_add_cat(&cdir, cat);1274 1275 cat = category_new("virtual");1276 1244 categ_dir_add_cat(&cdir, cat); 1277 1245
Note:
See TracChangeset
for help on using the changeset viewer.