VirtualBox

Ignore:
Timestamp:
Apr 14, 2016 1:45:31 PM (9 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
106599
Message:

ValidationKit/usb: More fixes for the server and client side

Location:
trunk/src/VBox/ValidationKit/utils/usb
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestService.cpp

    r60488 r60493  
    566566    else
    567567        rc = utsReplyBadSize(pClient, pPktHdr, sizeof(UTSPKTHDR));
    568     g_pTransport->pfnNotifyBye(pClient->pTransportClient);
    569568    return rc;
    570569}
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadgetCfg.cpp

    r60303 r60493  
    171171    if (   !pCfgItem
    172172        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_UINT8)
     173    {
    173174        *pu8 = pCfgItem ? pCfgItem->Val.u.u8 : u8Def;
     175        rc = VINF_SUCCESS;
     176    }
    174177
    175178    return rc;
     
    206209    if (   !pCfgItem
    207210        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_UINT16)
     211    {
    208212        *pu16 = pCfgItem ? pCfgItem->Val.u.u16 : u16Def;
     213        rc = VINF_SUCCESS;
     214    }
    209215
    210216    return rc;
     
    241247    if (   !pCfgItem
    242248        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_UINT32)
     249    {
    243250        *pu32 = pCfgItem ? pCfgItem->Val.u.u32 : u32Def;
     251        rc = VINF_SUCCESS;
     252    }
    244253
    245254    return rc;
     
    276285    if (   !pCfgItem
    277286        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_UINT64)
     287    {
    278288        *pu64 = pCfgItem ? pCfgItem->Val.u.u64 : u64Def;
     289        rc = VINF_SUCCESS;
     290    }
    279291
    280292    return rc;
     
    311323    if (   !pCfgItem
    312324        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_INT8)
     325    {
    313326        *pi8 = pCfgItem ? pCfgItem->Val.u.i8 : i8Def;
     327        rc = VINF_SUCCESS;
     328    }
    314329
    315330    return rc;
     
    346361    if (   !pCfgItem
    347362        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_INT16)
     363    {
    348364        *pi16 = pCfgItem ? pCfgItem->Val.u.i16 : i16Def;
     365        rc = VINF_SUCCESS;
     366    }
    349367
    350368    return rc;
     
    381399    if (   !pCfgItem
    382400        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_INT32)
     401    {
    383402        *pi32 = pCfgItem ? pCfgItem->Val.u.i32 : i32Def;
     403        rc = VINF_SUCCESS;
     404    }
    384405
    385406    return rc;
     
    416437    if (   !pCfgItem
    417438        || pCfgItem->Val.enmType == UTSGADGETCFGTYPE_INT64)
     439    {
    418440        *pi64 = pCfgItem ? pCfgItem->Val.u.i64 : i64Def;
    419 
    420     return rc;
    421 }
    422 
     441        rc = VINF_SUCCESS;
     442    }
     443
     444    return rc;
     445}
     446
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadgetClassTest.cpp

    r60394 r60493  
    184184    if (cbStr <= sizeof(aszPathFunc) - 1)
    185185    {
    186         cbStr = RTStrPrintf(&aszPathCfg[0], sizeof(aszPathCfg), "%s/configs/%s",
    187                             pClass->pszGadgetPath, pszCfg);
     186        cbStr = RTStrPrintf(&aszPathCfg[0], sizeof(aszPathCfg), "%s/configs/%s/%s",
     187                            pClass->pszGadgetPath, pszCfg, pszFunc);
    188188        if (cbStr <= sizeof(aszPathCfg) - 1)
    189189            rc = RTSymlinkCreate(&aszPathCfg[0], &aszPathFunc[0], RTSYMLINKTYPE_DIR, 0);
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadgetHostUsbIp.cpp

    r60488 r60493  
    2929#include <iprt/process.h>
    3030#include <iprt/string.h>
     31#include <iprt/thread.h>
     32#include <iprt/time.h>
    3133#include <iprt/types.h>
    3234
     
    98100
    99101    rc = utsGadgetCfgQueryU16Def(paCfg, "UsbIp/Port", &uPort, UTS_GADGET_HOST_USBIP_PORT_DEF);
    100     if (RT_FAILURE(rc))
     102    if (RT_SUCCESS(rc))
    101103    {
    102104        /* Make sure the kernel drivers are loaded. */
     
    107109            if (RT_SUCCESS(rc))
    108110            {
    109                 char aszPort[10];
    110                 char aszPidFile[64];
    111                 const char *apszArgv[6];
    112 
    113                 RTStrPrintf(aszPort, RT_ELEMENTS(aszPort), "%u", uPort);
    114                 RTStrPrintf(aszPidFile, RT_ELEMENTS(aszPidFile), "/var/run/usbipd-%u.pid", uPort);
    115                 /* Start the USB/IP server process. */
    116                 apszArgv[0] = "usbipd";
    117                 apszArgv[1] = "--tcp-port";
    118                 apszArgv[2] = aszPort;
    119                 apszArgv[3] = "--pid";
    120                 apszArgv[4] = aszPidFile;
    121                 apszArgv[5] = NULL;
    122                 rc = RTProcCreate("usbipd", apszArgv, RTENV_DEFAULT, RTPROC_FLAGS_SEARCH_PATH, &pIf->hProcUsbIp);
     111                rc = utsGadgetHostUsbIpLoadModule("libcomposite");
    123112                if (RT_SUCCESS(rc))
    124113                {
    125                     /* We are done setting it up at the moment. */
     114                    char aszPort[10];
     115                    char aszPidFile[64];
     116                    const char *apszArgv[6];
     117
     118                    RTStrPrintf(aszPort, RT_ELEMENTS(aszPort), "%u", uPort);
     119                    RTStrPrintf(aszPidFile, RT_ELEMENTS(aszPidFile), "/var/run/usbipd-%u.pid", uPort);
     120                    /* Start the USB/IP server process. */
     121                    apszArgv[0] = "usbipd";
     122                    apszArgv[1] = "--tcp-port";
     123                    apszArgv[2] = aszPort;
     124                    apszArgv[3] = "--pid";
     125                    apszArgv[4] = aszPidFile;
     126                    apszArgv[5] = NULL;
     127                    rc = RTProcCreate("usbipd", apszArgv, RTENV_DEFAULT, RTPROC_FLAGS_SEARCH_PATH, &pIf->hProcUsbIp);
     128                    if (RT_SUCCESS(rc))
     129                    {
     130                        /* Wait for a bit to make sure the server started up successfully. */
     131                        uint64_t tsStart = RTTimeMilliTS();
     132                        do
     133                        {
     134                            RTPROCSTATUS ProcSts;
     135                            rc = RTProcWait(pIf->hProcUsbIp, RTPROCWAIT_FLAGS_NOBLOCK, &ProcSts);
     136                            if (rc != VERR_PROCESS_RUNNING)
     137                            {
     138                                rc = VERR_INVALID_HANDLE;
     139                                break;
     140                            }
     141                            RTThreadSleep(1);
     142                            rc = VINF_SUCCESS;
     143                        } while (RTTimeMilliTS() - tsStart < 2 * 1000); /* 2 seconds. */
     144                    }
    126145                }
    127146            }
     
    138157static DECLCALLBACK(void) utsGadgetHostUsbIpTerm(PUTSGADGETHOSTTYPEINT pIf)
    139158{
    140     /* Kill the process. */
     159    /* Kill the process and wait for it to terminate. */
    141160    RTProcTerminate(pIf->hProcUsbIp);
     161
     162    RTPROCSTATUS ProcSts;
     163    RTProcWait(pIf->hProcUsbIp, RTPROCWAIT_FLAGS_BLOCK, &ProcSts);
    142164}
    143165
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette