Changes in / [72cd53d:50cd285] in mainline
- Files:
-
- 9 edited
-
HelenOS.config (modified) (1 diff)
-
uspace/app/lsusb/main.c (modified) (2 diffs)
-
uspace/drv/usbhid/main.c (modified) (1 diff)
-
uspace/drv/vhc/conndev.c (modified) (3 diffs)
-
uspace/drv/vhc/transfer.c (modified) (4 diffs)
-
uspace/lib/c/generic/devman.c (modified) (1 diff)
-
uspace/lib/usb/include/usb/debug.h (modified) (1 diff)
-
uspace/lib/usb/src/debug.c (modified) (2 diffs)
-
uspace/lib/usbvirt/include/usbvirt/ipc.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
HelenOS.config
r72cd53d r50cd285 555 555 ! [CONFIG_STRIP_BINARIES!=y] CONFIG_LINE_DEBUG (n/y) 556 556 557 # USB settings558 559 % USB release build (less logging)560 ! CONFIG_USB_RELEASE_BUILD (n/y)561 562 557 % Start virtual USB host controller 563 558 ! CONFIG_RUN_VIRTUAL_USB_HC (n/y) -
uspace/app/lsusb/main.c
r72cd53d r50cd285 49 49 #define NAME "lsusb" 50 50 51 #define MAX_USB_ADDRESS USB11_ADDRESS_MAX52 51 #define MAX_FAILED_ATTEMPTS 10 53 52 #define MAX_PATH_LENGTH 1024 … … 77 76 } 78 77 usb_address_t addr; 79 for (addr = 1; addr < MAX_USB_ADDRESS; addr++) {78 for (addr = 1; addr < 5; addr++) { 80 79 devman_handle_t dev_handle; 81 80 rc = usb_hc_get_handle_by_address(&conn, addr, &dev_handle); -
uspace/drv/usbhid/main.c
r72cd53d r50cd285 202 202 printf(NAME ": HelenOS USB HID driver.\n"); 203 203 204 usb_log_enable(USB_LOG_LEVEL_DE FAULT, NAME);204 usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME); 205 205 206 206 return usb_driver_main(&usb_hid_driver); -
uspace/drv/vhc/conndev.c
r72cd53d r50cd285 37 37 #include <errno.h> 38 38 #include <ddf/driver.h> 39 #include <usbvirt/ipc.h>40 39 #include "conn.h" 41 40 42 41 static fibril_local uintptr_t plugged_device_handle = 0; 43 #define PLUGGED_DEVICE_NAME_MAXLEN 25644 static fibril_local char plugged_device_name[PLUGGED_DEVICE_NAME_MAXLEN + 1] = "<unknown>";45 46 /** Receive device name.47 *48 * @warning Errors are silently ignored.49 *50 * @param phone Phone to the virtual device.51 */52 static void receive_device_name(int phone)53 {54 aid_t opening_request = async_send_0(phone, IPC_M_USBVIRT_GET_NAME, NULL);55 if (opening_request == 0) {56 return;57 }58 59 60 ipc_call_t data_request_call;61 aid_t data_request = async_data_read(phone,62 plugged_device_name, PLUGGED_DEVICE_NAME_MAXLEN,63 &data_request_call);64 65 if (data_request == 0) {66 async_wait_for(opening_request, NULL);67 return;68 }69 70 sysarg_t data_request_rc;71 sysarg_t opening_request_rc;72 async_wait_for(data_request, &data_request_rc);73 async_wait_for(opening_request, &opening_request_rc);74 75 if ((data_request_rc != EOK) || (opening_request_rc != EOK)) {76 return;77 }78 79 size_t len = IPC_GET_ARG2(data_request_call);80 plugged_device_name[len] = 0;81 }82 42 83 43 /** Default handler for IPC methods not handled by DDF. … … 105 65 async_answer_0(icallid, EOK); 106 66 107 receive_device_name(callback); 108 109 usb_log_info("New virtual device `%s' (id: %" PRIxn ").\n", 110 plugged_device_name, plugged_device_handle); 67 usb_log_info("New virtual device `%s' (id = %" PRIxn ").\n", 68 rc == EOK ? "XXX" : "<unknown>", plugged_device_handle); 111 69 112 70 return; … … 127 85 128 86 if (plugged_device_handle != 0) { 129 usb_log_info("Virtual device `%s' disconnected (id:%" PRIxn ").\n",130 plugged_device_ name, plugged_device_handle);87 usb_log_info("Virtual device disconnected (id = %" PRIxn ").\n", 88 plugged_device_handle); 131 89 vhc_virtdev_unplug(vhc, plugged_device_handle); 132 90 } -
uspace/drv/vhc/transfer.c
r72cd53d r50cd285 161 161 } 162 162 163 static vhc_transfer_t *dequeue_first_transfer(vhc_virtdev_t *dev)164 {165 assert(fibril_mutex_is_locked(&dev->guard));166 assert(!list_empty(&dev->transfer_queue));167 168 vhc_transfer_t *transfer = list_get_instance(dev->transfer_queue.next,169 vhc_transfer_t, link);170 list_remove(&transfer->link);171 172 return transfer;173 }174 175 176 static void execute_transfer_callback_and_free(vhc_transfer_t *transfer,177 size_t data_transfer_size, int outcome)178 {179 assert(outcome != ENAK);180 181 usb_log_debug2("Transfer %p ended: %s.\n",182 transfer, str_error(outcome));183 184 if (transfer->direction == USB_DIRECTION_IN) {185 transfer->callback_in(transfer->ddf_fun, outcome,186 data_transfer_size, transfer->callback_arg);187 } else {188 assert(transfer->direction == USB_DIRECTION_OUT);189 transfer->callback_out(transfer->ddf_fun, outcome,190 transfer->callback_arg);191 }192 193 free(transfer);194 }195 163 196 164 int vhc_transfer_queue_processor(void *arg) … … 206 174 } 207 175 208 vhc_transfer_t *transfer = dequeue_first_transfer(dev); 176 vhc_transfer_t *transfer = list_get_instance(dev->transfer_queue.next, 177 vhc_transfer_t, link); 178 list_remove(&transfer->link); 209 179 fibril_mutex_unlock(&dev->guard); 210 180 … … 244 214 245 215 if (rc != ENAK) { 246 execute_transfer_callback_and_free(transfer, 247 data_transfer_size, rc); 216 usb_log_debug2("Transfer %p ended: %s.\n", 217 transfer, str_error(rc)); 218 if (transfer->direction == USB_DIRECTION_IN) { 219 transfer->callback_in(transfer->ddf_fun, rc, 220 data_transfer_size, transfer->callback_arg); 221 } else { 222 assert(transfer->direction == USB_DIRECTION_OUT); 223 transfer->callback_out(transfer->ddf_fun, rc, 224 transfer->callback_arg); 225 } 226 free(transfer); 248 227 } 249 228 … … 252 231 } 253 232 254 /* Immediately fail all remaining transfers. */255 while (!list_empty(&dev->transfer_queue)) {256 vhc_transfer_t *transfer = dequeue_first_transfer(dev);257 execute_transfer_callback_and_free(transfer, 0, EBADCHECKSUM);258 }259 260 233 fibril_mutex_unlock(&dev->guard); 261 234 235 // TODO - destroy pending transfers 236 262 237 return EOK; 263 238 } -
uspace/lib/c/generic/devman.c
r72cd53d r50cd285 415 415 } 416 416 417 /* To be on the safe-side. */418 417 path[path_size - 1] = 0; 419 418 420 size_t transferred_size = IPC_GET_ARG2(data_request_call); 421 422 if (transferred_size >= path_size) { 419 if (IPC_GET_ARG2(data_request_call) >= path_size) { 423 420 return ELIMIT; 424 421 } 425 426 /* Terminate the string (trailing 0 not send over IPC). */427 path[transferred_size] = 0;428 422 429 423 return EOK; -
uspace/lib/usb/include/usb/debug.h
r72cd53d r50cd285 81 81 82 82 /** Default log level. */ 83 #ifdef CONFIG_USB_RELEASE_BUILD 84 # define USB_LOG_LEVEL_DEFAULT USB_LOG_LEVEL_INFO 85 #else 86 # define USB_LOG_LEVEL_DEFAULT USB_LOG_LEVEL_DEBUG 87 #endif 83 #define USB_LOG_LEVEL_DEFAULT USB_LOG_LEVEL_DEBUG 84 88 85 89 86 void usb_log_enable(usb_log_level_t, const char *); -
uspace/lib/usb/src/debug.c
r72cd53d r50cd285 116 116 /* 117 117 * Serialize access to log files. 118 * Print to screen only messages with higher level than the one 119 * specified during logging initialization. 120 * Print also to file, to it print one more (lower) level as well. 118 * Always print to log file, to screen print only when the enabled 119 * log level is high enough. 121 120 */ 122 121 fibril_mutex_lock(&log_serializer); … … 124 123 const char *level_name = log_level_name(level); 125 124 126 if ( (log_stream != NULL) && (level <= log_level + 1)) {125 if (log_stream != NULL) { 127 126 va_start(args, format); 128 127 -
uspace/lib/usbvirt/include/usbvirt/ipc.h
r72cd53d r50cd285 39 39 #include <usb/usb.h> 40 40 #include <bool.h> 41 #include <usbvirt/device.h>42 41 43 42 /** IPC methods communication between host controller and virtual device. */
Note:
See TracChangeset
for help on using the changeset viewer.
