Changeset a3fcfba in mainline for uspace/srv/locsrv/locsrv.c
- Timestamp:
- 2012-06-13T22:03:59Z (12 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 75b9c3d
- Parents:
- 3f57fb7
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/locsrv/locsrv.c
r3f57fb7 ra3fcfba 656 656 } 657 657 658 static void loc_service_get_server_name(ipc_callid_t iid, ipc_call_t *icall) 659 { 660 ipc_callid_t callid; 661 size_t size; 662 size_t act_size; 663 loc_service_t *svc; 664 665 if (!async_data_read_receive(&callid, &size)) { 666 async_answer_0(callid, EREFUSED); 667 async_answer_0(iid, EREFUSED); 668 return; 669 } 670 671 fibril_mutex_lock(&services_list_mutex); 672 673 svc = loc_service_find_id(IPC_GET_ARG1(*icall)); 674 if (svc == NULL) { 675 fibril_mutex_unlock(&services_list_mutex); 676 async_answer_0(callid, ENOENT); 677 async_answer_0(iid, ENOENT); 678 return; 679 } 680 681 if (svc->server == NULL) { 682 fibril_mutex_unlock(&services_list_mutex); 683 async_answer_0(callid, EINVAL); 684 async_answer_0(iid, EINVAL); 685 return; 686 } 687 688 act_size = str_size(svc->server->name); 689 if (act_size > size) { 690 fibril_mutex_unlock(&services_list_mutex); 691 async_answer_0(callid, EOVERFLOW); 692 async_answer_0(iid, EOVERFLOW); 693 return; 694 } 695 696 sysarg_t retval = async_data_read_finalize(callid, svc->server->name, 697 min(size, act_size)); 698 699 fibril_mutex_unlock(&services_list_mutex); 700 701 async_answer_0(iid, retval); 702 } 703 658 704 /** Connect client to the service. 659 705 * … … 1404 1450 case LOC_SERVICE_GET_NAME: 1405 1451 loc_service_get_name(callid, &call); 1452 break; 1453 case LOC_SERVICE_GET_SERVER_NAME: 1454 loc_service_get_server_name(callid, &call); 1406 1455 break; 1407 1456 case LOC_NAMESPACE_GET_ID:
Note:
See TracChangeset
for help on using the changeset viewer.