Changes in uspace/srv/devman/match.c [cc70d57:4087a33] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/match.c
rcc70d57 r4087a33 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.