Changes in uspace/srv/devman/devman.c [79ae36dd:c7bbf029] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/devman.c
r79ae36dd rc7bbf029 564 564 dev_node_t *dev; 565 565 link_t *link; 566 int phone; 566 567 567 568 log_msg(LVL_DEBUG, "pass_devices_to_driver(driver=\"%s\")", … … 569 570 570 571 fibril_mutex_lock(&driver->driver_mutex); 571 572 async_exch_t *exch = async_exchange_begin(driver->sess); 573 async_sess_t *sess = async_connect_me_to(EXCHANGE_SERIALIZE, exch, 574 DRIVER_DEVMAN, 0, 0); 575 async_exchange_end(exch); 576 577 if (!sess) { 572 573 phone = async_connect_me_to(driver->phone, DRIVER_DEVMAN, 0, 0); 574 575 if (phone < 0) { 578 576 fibril_mutex_unlock(&driver->driver_mutex); 579 577 return; … … 604 602 fibril_mutex_unlock(&driver->driver_mutex); 605 603 606 add_device( sess, driver, dev, tree);604 add_device(phone, driver, dev, tree); 607 605 608 606 /* … … 625 623 } 626 624 627 async_hangup( sess);625 async_hangup(phone); 628 626 629 627 /* … … 675 673 list_initialize(&drv->devices); 676 674 fibril_mutex_initialize(&drv->driver_mutex); 677 drv-> sess = NULL;675 drv->phone = -1; 678 676 } 679 677 … … 739 737 * @param node The device's node in the device tree. 740 738 */ 741 void add_device(async_sess_t *sess, driver_t *drv, dev_node_t *dev, 742 dev_tree_t *tree) 739 void add_device(int phone, driver_t *drv, dev_node_t *dev, dev_tree_t *tree) 743 740 { 744 741 /* … … 749 746 drv->name, dev->pfun->name); 750 747 748 sysarg_t rc; 749 ipc_call_t answer; 750 751 751 /* Send the device to the driver. */ 752 752 devman_handle_t parent_handle; … … 756 756 parent_handle = 0; 757 757 } 758 759 async_exch_t *exch = async_exchange_begin(sess); 760 761 ipc_call_t answer; 762 aid_t req = async_send_2(exch, DRIVER_ADD_DEVICE, dev->handle, 758 759 aid_t req = async_send_2(phone, DRIVER_ADD_DEVICE, dev->handle, 763 760 parent_handle, &answer); 764 761 765 /* Send the device name to the driver. */766 sysarg_t rc = async_data_write_start(exch, dev->pfun->name,762 /* Send the device's name to the driver. */ 763 rc = async_data_write_start(phone, dev->pfun->name, 767 764 str_size(dev->pfun->name) + 1); 768 769 async_exchange_end(exch);770 771 765 if (rc != EOK) { 772 766 /* TODO handle error */ … … 829 823 if (is_running) { 830 824 /* Notify the driver about the new device. */ 831 async_exch_t *exch = async_exchange_begin(drv->sess); 832 async_sess_t *sess = async_connect_me_to(EXCHANGE_SERIALIZE, exch, 833 DRIVER_DEVMAN, 0, 0); 834 async_exchange_end(exch); 835 836 if (sess) { 837 add_device(sess, drv, dev, tree); 838 async_hangup(sess); 825 int phone = async_connect_me_to(drv->phone, DRIVER_DEVMAN, 0, 0); 826 if (phone >= 0) { 827 add_device(phone, drv, dev, tree); 828 async_hangup(phone); 839 829 } 840 830 }
Note:
See TracChangeset
for help on using the changeset viewer.