Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/addrmgm.c

    rce687bbe rad104e0  
    4949typedef struct {
    5050        usb_address_t address;
    51         devman_handle_t devman_handle;
    5251        bool available;
    5352} address_info_t;
     
    7069                dev_address[i].address = i + 1;
    7170                dev_address[i].available = true;
    72                 dev_address[i].devman_handle = 0;
    7371        }
    7472
     
    122120}
    123121
    124 int bind_address(device_t *dev, usb_address_t address, devman_handle_t handle)
    125 {
    126         if (address == DEFAULT_ADDRESS) {
    127                 return EPERM;
    128         }
    129 
    130         int rc = EPERM;
    131 
    132         fibril_mutex_lock(&address_guard);
    133         usb_address_t i;
    134         for (i = 0; i < ADDRESS_COUNT; i++) {
    135                 if (dev_address[i].address == address) {
    136                         if (dev_address[i].available) {
    137                                 rc = ENOENT;
    138                                 break;
    139                         }
    140 
    141                         dev_address[i].devman_handle = handle;
    142                         rc = EOK;
    143                         break;
    144                 }
    145         }
    146         fibril_mutex_unlock(&address_guard);
    147 
    148         return rc;
    149 }
    150 
    151 int tell_address(device_t *dev, devman_handle_t handle, usb_address_t *address)
    152 {
    153         int rc = ENOENT;
    154 
    155         fibril_mutex_lock(&address_guard);
    156         usb_address_t i;
    157         for (i = 0; i < ADDRESS_COUNT; i++) {
    158                 if (dev_address[i].devman_handle == handle) {
    159                         *address = dev_address[i].address;
    160                         rc = EOK;
    161                         break;
    162                 }
    163         }
    164         fibril_mutex_unlock(&address_guard);
    165 
    166         return rc;
    167 }
    168 
    169122int release_address(device_t *dev, usb_address_t address)
    170123{
     
    185138
    186139                        dev_address[i].available = true;
    187                         dev_address[i].devman_handle = 0;
    188140                        rc = EOK;
    189141                        break;
Note: See TracChangeset for help on using the changeset viewer.