Changes in uspace/drv/vhc/addrmgm.c [ce687bbe:ad104e0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/addrmgm.c
rce687bbe rad104e0 49 49 typedef struct { 50 50 usb_address_t address; 51 devman_handle_t devman_handle;52 51 bool available; 53 52 } address_info_t; … … 70 69 dev_address[i].address = i + 1; 71 70 dev_address[i].available = true; 72 dev_address[i].devman_handle = 0;73 71 } 74 72 … … 122 120 } 123 121 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 169 122 int release_address(device_t *dev, usb_address_t address) 170 123 { … … 185 138 186 139 dev_address[i].available = true; 187 dev_address[i].devman_handle = 0;188 140 rc = EOK; 189 141 break;
Note:
See TracChangeset
for help on using the changeset viewer.