Changeset cce8a83 in mainline for uspace/srv/loc
- Timestamp:
- 2011-08-16T17:31:34Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 45058baa
- Parents:
- 6d605e6
- File:
-
- 1 edited
-
uspace/srv/loc/loc.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/loc/loc.c
r6d605e6 rcce8a83 44 44 #include <bool.h> 45 45 #include <fibril_synch.h> 46 #include <macros.h> 46 47 #include <stdlib.h> 47 48 #include <str.h> … … 532 533 } 533 534 535 static void loc_service_get_name(ipc_callid_t iid, ipc_call_t *icall) 536 { 537 ipc_callid_t callid; 538 size_t size; 539 size_t act_size; 540 loc_service_t *svc; 541 542 if (!async_data_read_receive(&callid, &size)) { 543 async_answer_0(callid, EREFUSED); 544 async_answer_0(iid, EREFUSED); 545 return; 546 } 547 548 fibril_mutex_lock(&services_list_mutex); 549 550 svc = loc_service_find_id(IPC_GET_ARG1(*icall)); 551 if (svc == NULL) { 552 fibril_mutex_unlock(&services_list_mutex); 553 async_answer_0(callid, ENOENT); 554 async_answer_0(iid, ENOENT); 555 return; 556 } 557 558 act_size = str_size(svc->name); 559 if (act_size > size) { 560 fibril_mutex_unlock(&services_list_mutex); 561 async_answer_0(callid, EOVERFLOW); 562 async_answer_0(iid, EOVERFLOW); 563 return; 564 } 565 566 sysarg_t retval = async_data_read_finalize(callid, svc->name, 567 min(size, act_size)); 568 569 fibril_mutex_unlock(&services_list_mutex); 570 571 async_answer_0(iid, retval); 572 } 573 574 534 575 /** Connect client to the service. 535 576 * … … 1197 1238 loc_service_get_id(callid, &call); 1198 1239 break; 1240 case LOC_SERVICE_GET_NAME: 1241 loc_service_get_name(callid, &call); 1242 break; 1199 1243 case LOC_NAMESPACE_GET_ID: 1200 1244 loc_namespace_get_id(callid, &call);
Note:
See TracChangeset
for help on using the changeset viewer.
