Changes in / [72cd53d:50cd285] in mainline


Ignore:
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • HelenOS.config

    r72cd53d r50cd285  
    555555! [CONFIG_STRIP_BINARIES!=y] CONFIG_LINE_DEBUG (n/y)
    556556
    557 # USB settings
    558 
    559 % USB release build (less logging)
    560 ! CONFIG_USB_RELEASE_BUILD (n/y)
    561 
    562557% Start virtual USB host controller
    563558! CONFIG_RUN_VIRTUAL_USB_HC (n/y)
  • uspace/app/lsusb/main.c

    r72cd53d r50cd285  
    4949#define NAME "lsusb"
    5050
    51 #define MAX_USB_ADDRESS USB11_ADDRESS_MAX
    5251#define MAX_FAILED_ATTEMPTS 10
    5352#define MAX_PATH_LENGTH 1024
     
    7776        }
    7877        usb_address_t addr;
    79         for (addr = 1; addr < MAX_USB_ADDRESS; addr++) {
     78        for (addr = 1; addr < 5; addr++) {
    8079                devman_handle_t dev_handle;
    8180                rc = usb_hc_get_handle_by_address(&conn, addr, &dev_handle);
  • uspace/drv/usbhid/main.c

    r72cd53d r50cd285  
    202202        printf(NAME ": HelenOS USB HID driver.\n");
    203203
    204         usb_log_enable(USB_LOG_LEVEL_DEFAULT, NAME);
     204        usb_log_enable(USB_LOG_LEVEL_DEBUG, NAME);
    205205
    206206        return usb_driver_main(&usb_hid_driver);
  • uspace/drv/vhc/conndev.c

    r72cd53d r50cd285  
    3737#include <errno.h>
    3838#include <ddf/driver.h>
    39 #include <usbvirt/ipc.h>
    4039#include "conn.h"
    4140
    4241static fibril_local uintptr_t plugged_device_handle = 0;
    43 #define PLUGGED_DEVICE_NAME_MAXLEN 256
    44 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 }
    8242
    8343/** Default handler for IPC methods not handled by DDF.
     
    10565                async_answer_0(icallid, EOK);
    10666
    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);
    11169
    11270                return;
     
    12785
    12886        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);
    13189                vhc_virtdev_unplug(vhc, plugged_device_handle);
    13290        }
  • uspace/drv/vhc/transfer.c

    r72cd53d r50cd285  
    161161}
    162162
    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 }
    195163
    196164int vhc_transfer_queue_processor(void *arg)
     
    206174                }
    207175
    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);
    209179                fibril_mutex_unlock(&dev->guard);
    210180
     
    244214
    245215                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);
    248227                }
    249228
     
    252231        }
    253232
    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 
    260233        fibril_mutex_unlock(&dev->guard);
    261234
     235        // TODO - destroy pending transfers
     236
    262237        return EOK;
    263238}
  • uspace/lib/c/generic/devman.c

    r72cd53d r50cd285  
    415415        }
    416416
    417         /* To be on the safe-side. */
    418417        path[path_size - 1] = 0;
    419418
    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) {
    423420                return ELIMIT;
    424421        }
    425 
    426         /* Terminate the string (trailing 0 not send over IPC). */
    427         path[transferred_size] = 0;
    428422
    429423        return EOK;
  • uspace/lib/usb/include/usb/debug.h

    r72cd53d r50cd285  
    8181
    8282/** 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
    8885
    8986void usb_log_enable(usb_log_level_t, const char *);
  • uspace/lib/usb/src/debug.c

    r72cd53d r50cd285  
    116116        /*
    117117         * 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.
    121120         */
    122121        fibril_mutex_lock(&log_serializer);
     
    124123        const char *level_name = log_level_name(level);
    125124
    126         if ((log_stream != NULL) && (level <= log_level + 1)) {
     125        if (log_stream != NULL) {
    127126                va_start(args, format);
    128127
  • uspace/lib/usbvirt/include/usbvirt/ipc.h

    r72cd53d r50cd285  
    3939#include <usb/usb.h>
    4040#include <bool.h>
    41 #include <usbvirt/device.h>
    4241
    4342/** IPC methods communication between host controller and virtual device. */
Note: See TracChangeset for help on using the changeset viewer.