Changes in / [b12d3cc:bbe7848] in mainline
- Location:
- uspace
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
rb12d3cc rbbe7848 165 165 166 166 devman_handle_t dev_handle = IPC_GET_ARG1(*icall); 167 devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall);168 169 167 device_t *dev = create_device(); 170 168 dev->handle = dev_handle; … … 174 172 175 173 add_to_devices_list(dev); 176 dev->parent = driver_get_device(&devices, parent_dev_handle);177 178 174 res = driver->driver_ops->add_device(dev); 179 175 if (0 == res) { -
uspace/srv/devman/devman.c
rb12d3cc rbbe7848 651 651 652 652 /* Send the device to the driver. */ 653 devman_handle_t parent_handle; 654 if (node->parent) { 655 parent_handle = node->parent->handle; 656 } else { 657 parent_handle = 0; 658 } 659 aid_t req = async_send_2(phone, DRIVER_ADD_DEVICE, node->handle, 660 parent_handle, &answer); 653 aid_t req = async_send_1(phone, DRIVER_ADD_DEVICE, node->handle, 654 &answer); 661 655 662 656 /* Send the device's name to the driver. */ -
uspace/srv/devman/match.c
rb12d3cc rbbe7848 35 35 #include "devman.h" 36 36 37 /** Compute compound score of driver and device.38 *39 * @param driver Match id of the driver.40 * @param device Match id of the device.41 * @return Compound score.42 * @retval 0 No match at all.43 */44 static int compute_match_score(match_id_t *driver, match_id_t *device)45 {46 if (str_cmp(driver->id, device->id) == 0) {47 /*48 * The strings matches, return their score multiplied.49 */50 return driver->score * device->score;51 } else {52 /*53 * Different strings, return zero.54 */55 return 0;56 }57 }58 59 37 int get_match_score(driver_t *drv, node_t *dev) 60 38 { … … 66 44 67 45 /* 68 * Go through all pairs, return the highest score obtainetd.46 * Find first matching pair. 69 47 */ 70 int highest_score = 0;71 72 48 link_t *drv_link = drv->match_ids.ids.next; 73 49 while (drv_link != drv_head) { 74 link_t *dev_link = dev _head->next;50 link_t *dev_link = dev->match_ids.ids.next; 75 51 while (dev_link != dev_head) { 76 52 match_id_t *drv_id = list_get_instance(drv_link, match_id_t, link); 77 53 match_id_t *dev_id = list_get_instance(dev_link, match_id_t, link); 78 79 int score = compute_match_score(drv_id, dev_id); 80 if (score > highest_score) { 81 highest_score = score; 54 55 if (str_cmp(drv_id->id, dev_id->id) == 0) { 56 /* 57 * We found a match. 58 * Return the score of the match. 59 */ 60 return drv_id->score * dev_id->score; 82 61 } 83 62 84 63 dev_link = dev_link->next; 85 64 } 86 87 65 drv_link = drv_link->next; 88 66 } 89 67 90 return highest_score;68 return 0; 91 69 } 92 70
Note:
See TracChangeset
for help on using the changeset viewer.