Changes in uspace/drv/vhc/hc.c [f8597ca:e63a4e1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/hc.c
rf8597ca re63a4e1 68 68 static link_t transaction_list; 69 69 70 #define TRANSACTION_FORMAT "T[%d :%d%s (%d)]"70 #define TRANSACTION_FORMAT "T[%d.%d %s/%s (%d)]" 71 71 #define TRANSACTION_PRINTF(t) \ 72 72 (t).target.address, (t).target.endpoint, \ 73 usb_str_transfer_type((t).transfer_type), \ 73 74 usbvirt_str_transaction_type((t).type), \ 74 75 (int)(t).len … … 76 77 #define transaction_get_instance(lnk) \ 77 78 list_get_instance(lnk, transaction_t, link) 79 80 #define HUB_STATUS_MAX_LEN (HUB_PORT_COUNT + 64) 78 81 79 82 static inline unsigned int pseudo_random(unsigned int *seed) … … 99 102 /** Host controller manager main function. 100 103 */ 101 void hc_manager(void)104 static int hc_manager_fibril(void *arg) 102 105 { 103 106 list_initialize(&transaction_list); … … 114 117 } 115 118 116 char ports[HUB_PORT_COUNT + 2]; 117 hub_get_port_statuses(ports, HUB_PORT_COUNT + 1); 118 dprintf(4, "virtual hub: addr=%d ports=%s", 119 virthub_dev.address, ports); 119 char ports[HUB_STATUS_MAX_LEN + 1]; 120 virthub_get_status(&virtual_hub_device, ports, HUB_STATUS_MAX_LEN); 120 121 121 122 link_t *first_transaction_link = transaction_list.next; … … 125 126 126 127 127 dprintf(0, "about to process " TRANSACTION_FORMAT " (vhub:%s)",128 dprintf(0, "about to process " TRANSACTION_FORMAT " [%s]", 128 129 TRANSACTION_PRINTF(*transaction), ports); 129 130 … … 138 139 free(transaction); 139 140 } 141 142 assert(false && "unreachable"); 143 return EOK; 144 } 145 146 void hc_manager(void) 147 { 148 fid_t fid = fibril_create(hc_manager_fibril, NULL); 149 if (fid == 0) { 150 printf(NAME ": failed to start HC manager fibril\n"); 151 return; 152 } 153 fibril_add_ready(fid); 140 154 } 141 155 … … 143 157 */ 144 158 static transaction_t *transaction_create(usbvirt_transaction_type_t type, 145 usb_target_t target, 159 usb_target_t target, usb_transfer_type_t transfer_type, 146 160 void * buffer, size_t len, 147 161 hc_transaction_done_callback_t callback, void * arg) … … 151 165 list_initialize(&transaction->link); 152 166 transaction->type = type; 167 transaction->transfer_type = transfer_type; 153 168 transaction->target = target; 154 169 transaction->buffer = buffer; … … 166 181 */ 167 182 void hc_add_transaction_to_device(bool setup, usb_target_t target, 183 usb_transfer_type_t transfer_type, 168 184 void * buffer, size_t len, 169 185 hc_transaction_done_callback_t callback, void * arg) 170 186 { 171 187 transaction_t *transaction = transaction_create( 172 setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT, target, 188 setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT, 189 target, transfer_type, 173 190 buffer, len, callback, arg); 174 191 list_append(&transaction->link, &transaction_list); … … 178 195 */ 179 196 void hc_add_transaction_from_device(usb_target_t target, 197 usb_transfer_type_t transfer_type, 180 198 void * buffer, size_t len, 181 199 hc_transaction_done_callback_t callback, void * arg) 182 200 { 183 201 transaction_t *transaction = transaction_create(USBVIRT_TRANSACTION_IN, 184 target, buffer, len, callback, arg); 202 target, transfer_type, 203 buffer, len, callback, arg); 185 204 list_append(&transaction->link, &transaction_list); 186 205 }
Note:
See TracChangeset
for help on using the changeset viewer.