Changeset 7dd3318 in mainline for uspace/drv/uhci-hcd/uhci.c
- Timestamp:
- 2011-02-12T02:00:54Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 83c439c
- Parents:
- f6309b6
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/uhci-hcd/uhci.c
rf6309b6 r7dd3318 158 158 const int low_speed = (tracker->speed == LOW_SPEED); 159 159 if (!allowed_usb_packet( 160 low_speed, tracker->transfer_type, tracker-> packet_size)) {160 low_speed, tracker->transfer_type, tracker->max_packet_size)) { 161 161 usb_log_warning("Invalid USB packet specified %s SPEED %d %zu.\n", 162 162 low_speed ? "LOW" : "FULL" , tracker->transfer_type, 163 tracker-> packet_size);163 tracker->max_packet_size); 164 164 return ENOTSUP; 165 165 } 166 166 /* TODO: check available bandwith here */ 167 168 usb_log_debug2("Scheduler(%d) acquiring tracker list mutex.\n",169 fibril_get_id());170 fibril_mutex_lock(&instance->tracker_list_mutex);171 usb_log_debug2("Scheduler(%d) acquired tracker list mutex.\n",172 fibril_get_id());173 167 174 168 transfer_list_t *list = … … 176 170 assert(list); 177 171 transfer_list_add_tracker(list, tracker); 178 list_append(&tracker->link, &instance->tracker_list);179 180 tracker->scheduled_list = list;181 182 usb_log_debug2("Scheduler(%d) releasing tracker list mutex.\n",183 fibril_get_id());184 fibril_mutex_unlock(&instance->tracker_list_mutex);185 usb_log_debug2("Scheduler(%d) released tracker list mutex.\n",186 fibril_get_id());187 172 188 173 return EOK; … … 196 181 197 182 while(1) { 198 LIST_INITIALIZE(done_trackers); 199 /* tracker iteration */ 200 201 usb_log_debug2("Cleaner(%d) acquiring tracker list mutex.\n", 202 fibril_get_id()); 203 fibril_mutex_lock(&instance->tracker_list_mutex); 204 usb_log_debug2("Cleaner(%d) acquired tracker list mutex.\n", 205 fibril_get_id()); 206 207 link_t *current = instance->tracker_list.next; 208 while (current != &instance->tracker_list) 209 { 210 211 link_t *next = current->next; 212 tracker_t *tracker = list_get_instance(current, tracker_t, link); 213 214 assert(current == &tracker->link); 215 assert(tracker); 216 assert(tracker->next_step); 217 assert(tracker->td); 218 219 if (!transfer_descriptor_is_active(tracker->td)) { 220 usb_log_info("Found inactive tracker with status: %x:%x.\n", 221 tracker->td->status, tracker->td->device); 222 list_remove(current); 223 list_append(current, &done_trackers); 224 } 225 current = next; 226 } 227 228 usb_log_debug2("Cleaner(%d) releasing tracker list mutex.\n", 229 fibril_get_id()); 230 fibril_mutex_unlock(&instance->tracker_list_mutex); 231 usb_log_debug2("Cleaner(%d) released tracker list mutex.\n", 232 fibril_get_id()); 233 234 while (!list_empty(&done_trackers)) { 235 tracker_t *tracker = list_get_instance( 236 done_trackers.next, tracker_t, link); 237 list_remove(&tracker->link); 238 tracker->next_step(tracker); 239 } 183 transfer_list_check(&instance->transfers_interrupt); 184 transfer_list_check(&instance->transfers_control_slow); 185 transfer_list_check(&instance->transfers_control_full); 186 transfer_list_check(&instance->transfers_bulk_full); 240 187 async_usleep(UHCI_CLEANER_TIMEOUT); 241 188 }
Note:
See TracChangeset
for help on using the changeset viewer.