Changes in uspace/srv/devman/main.c [431d6d6:3ad7b1c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/main.c
r431d6d6 r3ad7b1c 515 515 } 516 516 517 /** Find device path by its handle. */518 static void devman_get_device_path_by_handle(ipc_callid_t iid,519 ipc_call_t *icall)520 {521 devman_handle_t handle = IPC_GET_ARG1(*icall);522 523 fun_node_t *fun = find_fun_node(&device_tree, handle);524 if (fun == NULL) {525 async_answer_0(iid, ENOMEM);526 return;527 }528 529 ipc_callid_t data_callid;530 size_t data_len;531 if (!async_data_read_receive(&data_callid, &data_len)) {532 async_answer_0(iid, EINVAL);533 return;534 }535 536 void *buffer = malloc(data_len);537 if (buffer == NULL) {538 async_answer_0(data_callid, ENOMEM);539 async_answer_0(iid, ENOMEM);540 return;541 }542 543 size_t sent_length = str_size(fun->pathname);544 if (sent_length > data_len) {545 sent_length = data_len;546 }547 548 async_data_read_finalize(data_callid, fun->pathname, sent_length);549 async_answer_0(iid, EOK);550 551 free(buffer);552 }553 554 517 555 518 /** Function for handling connections from a client to the device manager. */ … … 574 537 devman_function_get_handle_by_class(callid, &call); 575 538 break; 576 case DEVMAN_DEVICE_GET_DEVICE_PATH:577 devman_get_device_path_by_handle(callid, &call);578 break;579 539 default: 580 540 async_answer_0(callid, ENOENT); … … 635 595 if (driver == NULL) { 636 596 log_msg(LVL_ERROR, "IPC forwarding refused - " \ 637 "the device %" PRIun "(%s) is not in usable state.", 638 handle, dev->pfun->pathname); 597 "the device %" PRIun " is not in usable state.", handle); 639 598 async_answer_0(iid, ENOENT); 640 599 return;
Note:
See TracChangeset
for help on using the changeset viewer.