Changes in uspace/srv/devman/match.c [4087a33:cc70d57] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified uspace/srv/devman/match.c ¶
r4087a33 rcc70d57 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 37 59 int get_match_score(driver_t *drv, node_t *dev) 38 60 { … … 44 66 45 67 /* 46 * Find first matching pair.68 * Go through all pairs, return the highest score obtainetd. 47 69 */ 70 int highest_score = 0; 71 48 72 link_t *drv_link = drv->match_ids.ids.next; 49 73 while (drv_link != drv_head) { 50 link_t *dev_link = dev ->match_ids.ids.next;74 link_t *dev_link = dev_head->next; 51 75 while (dev_link != dev_head) { 52 76 match_id_t *drv_id = list_get_instance(drv_link, match_id_t, link); 53 77 match_id_t *dev_id = list_get_instance(dev_link, match_id_t, link); 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; 78 79 int score = compute_match_score(drv_id, dev_id); 80 if (score > highest_score) { 81 highest_score = score; 61 82 } 62 83 63 84 dev_link = dev_link->next; 64 85 } 86 65 87 drv_link = drv_link->next; 66 88 } 67 89 68 return 0;90 return highest_score; 69 91 } 70 92
Note:
See TracChangeset
for help on using the changeset viewer.