Changes in / [b12d3cc:bbe7848] in mainline


Ignore:
Location:
uspace
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/generic/driver.c

    rb12d3cc rbbe7848  
    165165       
    166166        devman_handle_t dev_handle =  IPC_GET_ARG1(*icall);
    167         devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall);
    168    
    169167        device_t *dev = create_device();
    170168        dev->handle = dev_handle;
     
    174172       
    175173        add_to_devices_list(dev);
    176         dev->parent = driver_get_device(&devices, parent_dev_handle);
    177        
    178174        res = driver->driver_ops->add_device(dev);
    179175        if (0 == res) {
  • uspace/srv/devman/devman.c

    rb12d3cc rbbe7848  
    651651       
    652652        /* 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);
    661655       
    662656        /* Send the device's name to the driver. */
  • uspace/srv/devman/match.c

    rb12d3cc rbbe7848  
    3535#include "devman.h"
    3636
    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 
    5937int get_match_score(driver_t *drv, node_t *dev)
    6038{
     
    6644       
    6745        /*
    68          * Go through all pairs, return the highest score obtainetd.
     46         * Find first matching pair.
    6947         */
    70         int highest_score = 0;
    71        
    7248        link_t *drv_link = drv->match_ids.ids.next;
    7349        while (drv_link != drv_head) {
    74                 link_t *dev_link = dev_head->next;
     50                link_t *dev_link = dev->match_ids.ids.next;
    7551                while (dev_link != dev_head) {
    7652                        match_id_t *drv_id = list_get_instance(drv_link, match_id_t, link);
    7753                        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;
    8261                        }
    8362
    8463                        dev_link = dev_link->next;
    8564                }
    86                
    8765                drv_link = drv_link->next;
    8866        }
    8967       
    90         return highest_score;
     68        return 0;
    9169}
    9270
Note: See TracChangeset for help on using the changeset viewer.