VirtualBox

Changeset 60375 in vbox for trunk/src/VBox/ValidationKit


Ignore:
Timestamp:
Apr 7, 2016 2:42:20 PM (9 years ago)
Author:
vboxsync
Message:

ValidationKit/usb/UsbTestService: laptop -> desktop

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/ValidationKit/utils/usb/Makefile.kmk

    r60324 r60375  
    4646        UsbTestServiceCfg.cpp \
    4747        UsbTestServiceGadgetCfg.cpp \
     48        UsbTestServiceGadgetClassTest.cpp \
    4849        UsbTestServiceGadgetHost.cpp \
    4950        UsbTestServiceGadgetHostUsbIp.cpp \
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadget.cpp

    r60326 r60375  
    2121*********************************************************************************************************************************/
    2222
     23#include <iprt/asm.h>
    2324#include <iprt/cdefs.h>
    2425#include <iprt/ctype.h>
     
    2728#include <iprt/types.h>
    2829
    29 #include "UsbTestServiceGadget.h"
    30 
     30#include "UsbTestServiceGadgetInternal.h"
    3131
    3232/*********************************************************************************************************************************
     
    3434*********************************************************************************************************************************/
    3535
     36/**
     37 * Internal UTS gadget host instance data.
     38 */
     39typedef struct UTSGADGETINT
     40{
     41    /** Reference counter. */
     42    volatile uint32_t         cRefs;
     43    /** Pointer to the gadget class callback table. */
     44    PCUTSGADGETCLASSIF        pClassIf;
     45    /** The gadget host handle. */
     46    UTSGADGETHOST             hGadgetHost;
     47    /** Class specific instance data - variable in size. */
     48    uint8_t                   abClassInst[1];
     49} UTSGADGETINT;
     50/** Pointer to the internal gadget host instance data. */
     51typedef UTSGADGETINT *PUTSGADGETINT;
     52
     53
     54/*********************************************************************************************************************************
     55*   Global variables                                                                                                             *
     56*********************************************************************************************************************************/
     57
     58/** Known gadget host interfaces. */
     59static const PCUTSGADGETCLASSIF g_apUtsGadgetClass[] =
     60{
     61    &g_UtsGadgetClassTest
     62};
     63
    3664
    3765/*********************************************************************************************************************************
    3866*   Internal Functions                                                                                                           *
    3967*********************************************************************************************************************************/
     68
     69
     70/**
     71 * Destroys a gadget instance.
     72 *
     73 * @returns nothing.
     74 * @param   pThis    The gadget instance.
     75 */
     76static void utsGadgetDestroy(PUTSGADGETINT pThis)
     77{
     78    pThis->pClassIf->pfnTerm((PUTSGADGETCLASSINT)&pThis->abClassInst[0]);
     79    RTMemFree(pThis);
     80}
     81
     82
     83DECLHIDDEN(int) utsGadgetCreate(UTSGADGETHOST hGadgetHost, UTSGADGETCLASS enmClass,
     84                                PCUTSGADGETCFGITEM paCfg, PUTSGADET phGadget)
     85{
     86    int rc = VINF_SUCCESS;
     87    PCUTSGADGETCLASSIF pClassIf = NULL;
     88
     89    /* Get the interface. */
     90    for (unsigned i = 0; i < RT_ELEMENTS(g_apUtsGadgetClass); i++)
     91    {
     92        if (g_apUtsGadgetClass[i]->enmClass == enmClass)
     93        {
     94            pClassIf = g_apUtsGadgetClass[i];
     95            break;
     96        }
     97    }
     98
     99    if (RT_LIKELY(pClassIf))
     100    {
     101        PUTSGADGETINT pThis = (PUTSGADGETINT)RTMemAllocZ(RT_OFFSETOF(UTSGADGETINT, abClassInst[pClassIf->cbClass]));
     102        if (RT_LIKELY(pThis))
     103        {
     104            pThis->cRefs       = 1;
     105            pThis->hGadgetHost = hGadgetHost;
     106            pThis->pClassIf    = pClassIf;
     107            rc = pClassIf->pfnInit((PUTSGADGETCLASSINT)&pThis->abClassInst[0], paCfg);
     108            if (RT_SUCCESS(rc))
     109                *phGadget = pThis;
     110            else
     111                RTMemFree(pThis);
     112        }
     113        else
     114            rc = VERR_NO_MEMORY;
     115    }
     116    else
     117        rc = VERR_INVALID_PARAMETER;
     118
     119    return rc;
     120}
     121
     122
     123DECLHIDDEN(uint32_t) utsGadgetRetain(UTSGADGET hGadget)
     124{
     125    PUTSGADGETINT pThis = hGadget;
     126
     127    AssertPtrReturn(pThis, 0);
     128
     129    return ASMAtomicIncU32(&pThis->cRefs);
     130}
     131
     132
     133DECLHIDDEN(uint32_t) utsGadgetRelease(UTSGADGET hGadget)
     134{
     135    PUTSGADGETINT pThis = hGadget;
     136
     137    AssertPtrReturn(pThis, 0);
     138
     139    uint32_t cRefs = ASMAtomicDecU32(&pThis->cRefs);
     140    if (!cRefs)
     141        utsGadgetDestroy(pThis);
     142
     143    return cRefs;
     144}
     145
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadgetHost.cpp

    r60324 r60375  
    141141    return cRefs;
    142142}
     143
  • trunk/src/VBox/ValidationKit/utils/usb/UsbTestServiceGadgetHostUsbIp.cpp

    r60325 r60375  
    158158{
    159159    /* Nothing to do so far. */
    160     return VINF_SUCCESS; 
     160    return VINF_SUCCESS;
    161161}
    162162
     
    167167static DECLCALLBACK(int) utsGadgetHostUsbIpGadgetConnect(PUTSGADGETHOSTTYPEINT pIf, UTSGADGET hGadget)
    168168{
    169    return VINF_SUCCESS; 
     169   return VINF_SUCCESS;
    170170}
    171171
Note: See TracChangeset for help on using the changeset viewer.

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