Changes in uspace/drv/vhc/hc.c [e63a4e1:c4ba29c7] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/vhc/hc.c
re63a4e1 rc4ba29c7 50 50 #include "hub.h" 51 51 52 #define USLEEP_BASE ( 0 * 5* 1000)52 #define USLEEP_BASE (500 * 1000) 53 53 54 #define USLEEP_VAR 50 54 #define USLEEP_VAR 5000 55 55 56 56 #define SHORTENING_VAR 15 … … 68 68 static link_t transaction_list; 69 69 70 #define TRANSACTION_FORMAT "T[%d .%d %s/%s (%d)]"70 #define TRANSACTION_FORMAT "T[%d:%d %s (%d)]" 71 71 #define TRANSACTION_PRINTF(t) \ 72 72 (t).target.address, (t).target.endpoint, \ 73 usb_str_transfer_type((t).transfer_type), \74 73 usbvirt_str_transaction_type((t).type), \ 75 74 (int)(t).len … … 77 76 #define transaction_get_instance(lnk) \ 78 77 list_get_instance(lnk, transaction_t, link) 79 80 #define HUB_STATUS_MAX_LEN (HUB_PORT_COUNT + 64)81 78 82 79 static inline unsigned int pseudo_random(unsigned int *seed) … … 92 89 usb_transaction_outcome_t outcome) 93 90 { 94 dprintf(3, " transaction " TRANSACTION_FORMAT " done, outcome: %s",91 dprintf(3, "processing transaction " TRANSACTION_FORMAT ", outcome: %s", 95 92 TRANSACTION_PRINTF(*transaction), 96 93 usb_str_transaction_outcome(outcome)); … … 102 99 /** Host controller manager main function. 103 100 */ 104 static int hc_manager_fibril(void *arg)101 void hc_manager(void) 105 102 { 106 103 list_initialize(&transaction_list); … … 117 114 } 118 115 119 char ports[HUB_STATUS_MAX_LEN + 1]; 120 virthub_get_status(&virtual_hub_device, ports, HUB_STATUS_MAX_LEN); 116 char ports[HUB_PORT_COUNT + 2]; 117 hub_get_port_statuses(ports, HUB_PORT_COUNT + 1); 118 dprintf(3, "virtual hub: addr=%d ports=%s", 119 virthub_dev.address, ports); 121 120 122 121 link_t *first_transaction_link = transaction_list.next; … … 125 124 list_remove(first_transaction_link); 126 125 127 128 dprintf(0, "about to process " TRANSACTION_FORMAT " [%s]",129 TRANSACTION_PRINTF(*transaction), ports);130 131 126 dprintf(3, "processing transaction " TRANSACTION_FORMAT "", 132 127 TRANSACTION_PRINTF(*transaction)); … … 139 134 free(transaction); 140 135 } 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);154 136 } 155 137 … … 157 139 */ 158 140 static transaction_t *transaction_create(usbvirt_transaction_type_t type, 159 usb_target_t target, usb_transfer_type_t transfer_type,141 usb_target_t target, 160 142 void * buffer, size_t len, 161 143 hc_transaction_done_callback_t callback, void * arg) … … 165 147 list_initialize(&transaction->link); 166 148 transaction->type = type; 167 transaction->transfer_type = transfer_type;168 149 transaction->target = target; 169 150 transaction->buffer = buffer; … … 172 153 transaction->callback_arg = arg; 173 154 174 dprintf( 3, "creating transaction " TRANSACTION_FORMAT,155 dprintf(1, "creating transaction " TRANSACTION_FORMAT, 175 156 TRANSACTION_PRINTF(*transaction)); 176 157 … … 181 162 */ 182 163 void hc_add_transaction_to_device(bool setup, usb_target_t target, 183 usb_transfer_type_t transfer_type,184 164 void * buffer, size_t len, 185 165 hc_transaction_done_callback_t callback, void * arg) 186 166 { 187 167 transaction_t *transaction = transaction_create( 188 setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT, 189 target, transfer_type, 168 setup ? USBVIRT_TRANSACTION_SETUP : USBVIRT_TRANSACTION_OUT, target, 190 169 buffer, len, callback, arg); 191 170 list_append(&transaction->link, &transaction_list); … … 195 174 */ 196 175 void hc_add_transaction_from_device(usb_target_t target, 197 usb_transfer_type_t transfer_type,198 176 void * buffer, size_t len, 199 177 hc_transaction_done_callback_t callback, void * arg) 200 178 { 201 179 transaction_t *transaction = transaction_create(USBVIRT_TRANSACTION_IN, 202 target, transfer_type, 203 buffer, len, callback, arg); 180 target, buffer, len, callback, arg); 204 181 list_append(&transaction->link, &transaction_list); 205 182 }
Note:
See TracChangeset
for help on using the changeset viewer.