VirtualBox

Changeset 11269 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Aug 8, 2008 4:24:48 PM (17 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
34351
Message:

Devices: pData -> pThis.

Location:
trunk/src/VBox/Devices
Files:
31 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Audio/DevIchAc97.cpp

    r11266 r11269  
    13901390    PPDMDEVINS  pDevIns = pPciDev->pDevIns;
    13911391    RTIOPORT    Port = (RTIOPORT)GCPhysAddress;
    1392     PCIAC97LinkState *pData = PCIDEV_2_ICHAC97STATE(pPciDev);
     1392    PCIAC97LinkState *pThis = PCIDEV_2_ICHAC97STATE(pPciDev);
    13931393
    13941394    Assert(enmType == PCI_ADDRESS_SPACE_IO);
     
    13961396
    13971397    if (iRegion == 0)
    1398         rc = PDMDevHlpIOPortRegister (pDevIns, Port, 256, pData,
     1398        rc = PDMDevHlpIOPortRegister (pDevIns, Port, 256, pThis,
    13991399                                      ichac97IOPortNAMWrite, ichac97IOPortNAMRead,
    14001400                                      NULL, NULL, "ICHAC97 NAM");
    14011401    else
    1402         rc = PDMDevHlpIOPortRegister (pDevIns, Port, 64, pData,
     1402        rc = PDMDevHlpIOPortRegister (pDevIns, Port, 64, pThis,
    14031403                                      ichac97IOPortNABMWrite, ichac97IOPortNABMRead,
    14041404                                      NULL, NULL, "ICHAC97 NABM");
     
    14061406        return rc;
    14071407
    1408     pData->ac97.IOPortBase[iRegion] = Port;
     1408    pThis->ac97.IOPortBase[iRegion] = Port;
    14091409    return VINF_SUCCESS;
    14101410}
     
    14191419static DECLCALLBACK(int) ichac97SaveExec (PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    14201420{
    1421     PCIAC97LinkState *pData = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
     1421    PCIAC97LinkState *pThis = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
    14221422    size_t  i;
    14231423    uint8_t active[LAST_INDEX];
    1424     AC97LinkState *s = &pData->ac97;
     1424    AC97LinkState *s = &pThis->ac97;
    14251425
    14261426    SSMR3PutU32 (pSSMHandle, s->glob_cnt);
     
    14631463                                          uint32_t u32Version)
    14641464{
    1465     PCIAC97LinkState *pData = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
     1465    PCIAC97LinkState *pThis = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
    14661466    size_t  i;
    14671467    uint8_t active[LAST_INDEX];
    1468     AC97LinkState *s = &pData->ac97;
     1468    AC97LinkState *s = &pThis->ac97;
    14691469
    14701470    if (u32Version != AC97_SSM_VERSION)
     
    15221522static DECLCALLBACK(void)  ac97Reset (PPDMDEVINS pDevIns)
    15231523{
    1524     PCIAC97LinkState *pData = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
     1524    PCIAC97LinkState *pThis = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
    15251525
    15261526    /*
    15271527     * Reset the device state (will need pDrv later).
    15281528     */
    1529     reset_bm_regs (&pData->ac97, &pData->ac97.bm_regs[0]);
    1530     reset_bm_regs (&pData->ac97, &pData->ac97.bm_regs[1]);
    1531     reset_bm_regs (&pData->ac97, &pData->ac97.bm_regs[2]);
     1529    reset_bm_regs (&pThis->ac97, &pThis->ac97.bm_regs[0]);
     1530    reset_bm_regs (&pThis->ac97, &pThis->ac97.bm_regs[1]);
     1531    reset_bm_regs (&pThis->ac97, &pThis->ac97.bm_regs[2]);
    15321532
    15331533    /*
     
    15361536     * the codec manually.
    15371537     */
    1538     mixer_reset (&pData->ac97);
     1538    mixer_reset (&pThis->ac97);
    15391539}
    15401540
     
    15511551                                                   PDMINTERFACE enmInterface)
    15521552{
    1553     PCIAC97LinkState *pData =
     1553    PCIAC97LinkState *pThis =
    15541554        (PCIAC97LinkState *)((uintptr_t)pInterface
    15551555                             - RT_OFFSETOF(PCIAC97LinkState, ac97.IBase));
    1556     Assert(&pData->ac97.IBase == pInterface);
     1556    Assert(&pThis->ac97.IBase == pInterface);
    15571557    switch (enmInterface)
    15581558    {
    15591559        case PDMINTERFACE_BASE:
    1560             return &pData->ac97.IBase;
     1560            return &pThis->ac97.IBase;
    15611561        default:
    15621562            return NULL;
     
    15851585                                           PCFGMNODE pCfgHandle)
    15861586{
    1587     PCIAC97LinkState *pData = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
    1588     AC97LinkState    *s     = &pData->ac97;
     1587    PCIAC97LinkState *pThis = PDMINS_2_DATA(pDevIns, PCIAC97LinkState *);
     1588    AC97LinkState    *s     = &pThis->ac97;
    15891589    int               rc;
    15901590
     
    15991599
    16001600    /* PCI Device (the assertions will be removed later) */
    1601     PCIDevSetVendorId           (&pData->dev, 0x8086); /* 00 ro - intel. */             Assert (pData->dev.config[0x00] == 0x86); Assert (pData->dev.config[0x01] == 0x80);
    1602     PCIDevSetDeviceId           (&pData->dev, 0x2415); /* 02 ro - 82801 / 82801aa(?). */Assert (pData->dev.config[0x02] == 0x15); Assert (pData->dev.config[0x03] == 0x24);
    1603     PCIDevSetCommand            (&pData->dev, 0x0000); /* 04 rw,ro - pcicmd. */         Assert (pData->dev.config[0x04] == 0x00); Assert (pData->dev.config[0x05] == 0x00);
    1604     PCIDevSetStatus             (&pData->dev, 0x0280); /* 06 rwc?,ro? - pcists. */      Assert (pData->dev.config[0x06] == 0x80); Assert (pData->dev.config[0x07] == 0x02);
    1605     PCIDevSetRevisionId         (&pData->dev, 0x01);   /* 08 ro - rid. */               Assert (pData->dev.config[0x08] == 0x01);
    1606     PCIDevSetClassProg          (&pData->dev, 0x00);   /* 09 ro - pi. */                Assert (pData->dev.config[0x09] == 0x00);
    1607     PCIDevSetClassSub           (&pData->dev, 0x01);   /* 0a ro - scc; 01 == Audio. */  Assert (pData->dev.config[0x0a] == 0x01);
    1608     PCIDevSetClassBase          (&pData->dev, 0x04);   /* 0b ro - bcc; 04 == multimedia. */ Assert (pData->dev.config[0x0b] == 0x04);
    1609     PCIDevSetHeaderType         (&pData->dev, 0x00);   /* 0e ro - headtyp. */           Assert (pData->dev.config[0x0e] == 0x00);
    1610     PCIDevSetBaseAddress        (&pData->dev, 0,       /* 10 rw - nambar - native audio mixer base. */
    1611                                  true /* fIoSpace */, false /* fPrefetchable */, false /* f64Bit */, 0x00000000); Assert (pData->dev.config[0x10] == 0x01); Assert (pData->dev.config[0x11] == 0x00); Assert (pData->dev.config[0x12] == 0x00); Assert (pData->dev.config[0x13] == 0x00);
    1612     PCIDevSetBaseAddress        (&pData->dev, 1,       /* 14 rw - nabmbar - native audio bus mastering. */
    1613                                  true /* fIoSpace */, false /* fPrefetchable */, false /* f64Bit */, 0x00000000); Assert (pData->dev.config[0x14] == 0x01); Assert (pData->dev.config[0x15] == 0x00); Assert (pData->dev.config[0x16] == 0x00); Assert (pData->dev.config[0x17] == 0x00);
    1614     PCIDevSetSubSystemVendorId  (&pData->dev, 0x8086); /* 2c ro - intel.) */            Assert (pData->dev.config[0x2c] == 0x86); Assert (pData->dev.config[0x2d] == 0x80);
    1615     PCIDevSetSubSystemId        (&pData->dev, 0x0000); /* 2e ro. */                     Assert (pData->dev.config[0x2e] == 0x00); Assert (pData->dev.config[0x2f] == 0x00);
    1616     PCIDevSetInterruptLine      (&pData->dev, 0x00);   /* 3c rw. */                     Assert (pData->dev.config[0x3c] == 0x00);
    1617     PCIDevSetInterruptPin       (&pData->dev, 0x01);   /* 3d ro - INTA#. */             Assert (pData->dev.config[0x3d] == 0x01);
     1601    PCIDevSetVendorId           (&pThis->dev, 0x8086); /* 00 ro - intel. */             Assert (pThis->dev.config[0x00] == 0x86); Assert (pThis->dev.config[0x01] == 0x80);
     1602    PCIDevSetDeviceId           (&pThis->dev, 0x2415); /* 02 ro - 82801 / 82801aa(?). */Assert (pThis->dev.config[0x02] == 0x15); Assert (pThis->dev.config[0x03] == 0x24);
     1603    PCIDevSetCommand            (&pThis->dev, 0x0000); /* 04 rw,ro - pcicmd. */         Assert (pThis->dev.config[0x04] == 0x00); Assert (pThis->dev.config[0x05] == 0x00);
     1604    PCIDevSetStatus             (&pThis->dev, 0x0280); /* 06 rwc?,ro? - pcists. */      Assert (pThis->dev.config[0x06] == 0x80); Assert (pThis->dev.config[0x07] == 0x02);
     1605    PCIDevSetRevisionId         (&pThis->dev, 0x01);   /* 08 ro - rid. */               Assert (pThis->dev.config[0x08] == 0x01);
     1606    PCIDevSetClassProg          (&pThis->dev, 0x00);   /* 09 ro - pi. */                Assert (pThis->dev.config[0x09] == 0x00);
     1607    PCIDevSetClassSub           (&pThis->dev, 0x01);   /* 0a ro - scc; 01 == Audio. */  Assert (pThis->dev.config[0x0a] == 0x01);
     1608    PCIDevSetClassBase          (&pThis->dev, 0x04);   /* 0b ro - bcc; 04 == multimedia. */ Assert (pThis->dev.config[0x0b] == 0x04);
     1609    PCIDevSetHeaderType         (&pThis->dev, 0x00);   /* 0e ro - headtyp. */           Assert (pThis->dev.config[0x0e] == 0x00);
     1610    PCIDevSetBaseAddress        (&pThis->dev, 0,       /* 10 rw - nambar - native audio mixer base. */
     1611                                 true /* fIoSpace */, false /* fPrefetchable */, false /* f64Bit */, 0x00000000); Assert (pThis->dev.config[0x10] == 0x01); Assert (pThis->dev.config[0x11] == 0x00); Assert (pThis->dev.config[0x12] == 0x00); Assert (pThis->dev.config[0x13] == 0x00);
     1612    PCIDevSetBaseAddress        (&pThis->dev, 1,       /* 14 rw - nabmbar - native audio bus mastering. */
     1613                                 true /* fIoSpace */, false /* fPrefetchable */, false /* f64Bit */, 0x00000000); Assert (pThis->dev.config[0x14] == 0x01); Assert (pThis->dev.config[0x15] == 0x00); Assert (pThis->dev.config[0x16] == 0x00); Assert (pThis->dev.config[0x17] == 0x00);
     1614    PCIDevSetSubSystemVendorId  (&pThis->dev, 0x8086); /* 2c ro - intel.) */            Assert (pThis->dev.config[0x2c] == 0x86); Assert (pThis->dev.config[0x2d] == 0x80);
     1615    PCIDevSetSubSystemId        (&pThis->dev, 0x0000); /* 2e ro. */                     Assert (pThis->dev.config[0x2e] == 0x00); Assert (pThis->dev.config[0x2f] == 0x00);
     1616    PCIDevSetInterruptLine      (&pThis->dev, 0x00);   /* 3c rw. */                     Assert (pThis->dev.config[0x3c] == 0x00);
     1617    PCIDevSetInterruptPin       (&pThis->dev, 0x01);   /* 3d ro - INTA#. */             Assert (pThis->dev.config[0x3d] == 0x01);
    16181618
    16191619    /*
     
    16211621     * saved state item.
    16221622     */
    1623     rc = PDMDevHlpPCIRegister (pDevIns, &pData->dev);
     1623    rc = PDMDevHlpPCIRegister (pDevIns, &pThis->dev);
    16241624    if (RT_FAILURE (rc))
    16251625        return rc;
     
    16361636
    16371637    rc = PDMDevHlpSSMRegister (pDevIns, pDevIns->pDevReg->szDeviceName,
    1638                                iInstance, AC97_SSM_VERSION, sizeof(*pData),
     1638                               iInstance, AC97_SSM_VERSION, sizeof(*pThis),
    16391639                               NULL, ichac97SaveExec, NULL,
    16401640                               NULL, ichac97LoadExec, NULL);
  • trunk/src/VBox/Devices/Audio/DevSB16.cpp

    r11266 r11269  
    17131713                                                PDMINTERFACE enmInterface)
    17141714{
    1715     SB16State *pData = (SB16State *)((uintptr_t)pInterface
     1715    SB16State *pThis = (SB16State *)((uintptr_t)pInterface
    17161716                     - RT_OFFSETOF(SB16State, IBase));
    1717     Assert(&pData->IBase == pInterface);
     1717    Assert(&pThis->IBase == pInterface);
    17181718    switch (enmInterface)
    17191719    {
    17201720        case PDMINTERFACE_BASE:
    1721             return &pData->IBase;
     1721            return &pThis->IBase;
    17221722        default:
    17231723            return NULL;
  • trunk/src/VBox/Devices/Audio/audio.c

    r11267 r11269  
    19291929{
    19301930    PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    1931     PDRVAUDIO  pData = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
     1931    PDRVAUDIO  pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
    19321932    switch (enmInterface)
    19331933    {
     
    19351935            return &pDrvIns->IBase;
    19361936        case PDMINTERFACE_AUDIO_CONNECTOR:
    1937             return &pData->IAudioConnector;
     1937            return &pThis->IAudioConnector;
    19381938        default:
    19391939            return NULL;
     
    19801980{
    19811981    int rc;
    1982     PDRVAUDIO pData = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
     1982    PDRVAUDIO pThis = PDMINS_2_DATA(pDrvIns, PDRVAUDIO);
    19831983    char *drvname;
    19841984
     
    19931993     * Init the static parts.
    19941994     */
    1995     pData->pDrvIns                    = pDrvIns;
     1995    pThis->pDrvIns                    = pDrvIns;
    19961996    /* IBase */
    19971997    pDrvIns->IBase.pfnQueryInterface  = drvAudioQueryInterface;
    19981998    /* IAudio */
    1999     /* pData->IAudioConnector.pfn; */
     1999    /* pThis->IAudioConnector.pfn; */
    20002000
    20012001    glob_audio_state.pDrvIns = pDrvIns;
  • trunk/src/VBox/Devices/Audio/audiosniffer.c

    r11267 r11269  
    113113static DECLCALLBACK(int) iface_Setup (PPDMIAUDIOSNIFFERPORT pInterface, bool fEnable, bool fKeepHostAudio)
    114114{
    115     AUDIOSNIFFERSTATE *pData = IAUDIOSNIFFERPORT_2_AUDIOSNIFFERSTATE(pInterface);
    116 
    117     Assert(g_pData == pData);
    118 
    119     pData->fEnabled = fEnable;
    120     pData->fKeepHostAudio = fKeepHostAudio;
     115    AUDIOSNIFFERSTATE *pThis = IAUDIOSNIFFERPORT_2_AUDIOSNIFFERSTATE(pInterface);
     116
     117    Assert(g_pData == pThis);
     118
     119    pThis->fEnabled = fEnable;
     120    pThis->fKeepHostAudio = fKeepHostAudio;
    121121
    122122    return VINF_SUCCESS;
     
    133133static DECLCALLBACK(void *) iface_QueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    134134{
    135     AUDIOSNIFFERSTATE *pData = (AUDIOSNIFFERSTATE *)((uintptr_t)pInterface - RT_OFFSETOF(AUDIOSNIFFERSTATE, Base));
     135    AUDIOSNIFFERSTATE *pThis = (AUDIOSNIFFERSTATE *)((uintptr_t)pInterface - RT_OFFSETOF(AUDIOSNIFFERSTATE, Base));
    136136
    137137    switch (enmInterface)
    138138    {
    139139        case PDMINTERFACE_BASE:
    140             return &pData->Base;
     140            return &pThis->Base;
    141141        case PDMINTERFACE_AUDIO_SNIFFER_PORT:
    142             return &pData->Port;
     142            return &pThis->Port;
    143143        default:
    144144            return NULL;
     
    163163    int rc = VINF_SUCCESS;
    164164
    165     AUDIOSNIFFERSTATE *pData = PDMINS_2_DATA(pDevIns, AUDIOSNIFFERSTATE *);
     165    AUDIOSNIFFERSTATE *pThis = PDMINS_2_DATA(pDevIns, AUDIOSNIFFERSTATE *);
    166166
    167167    Assert(iInstance == 0);
     
    178178     * Initialize data.
    179179     */
    180     pData->fEnabled = false;
    181     pData->fKeepHostAudio = true;
    182     pData->pDrv = NULL;
     180    pThis->fEnabled = false;
     181    pThis->fKeepHostAudio = true;
     182    pThis->pDrv = NULL;
    183183
    184184    /*
     
    186186     */
    187187    /* Base */
    188     pData->Base.pfnQueryInterface = iface_QueryInterface;
     188    pThis->Base.pfnQueryInterface = iface_QueryInterface;
    189189
    190190    /* Audio Sniffer port */
    191     pData->Port.pfnSetup = iface_Setup;
     191    pThis->Port.pfnSetup = iface_Setup;
    192192
    193193    /*
    194194     * Get the corresponding connector interface
    195195     */
    196     rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->Base, &pData->pDrvBase, "Audio Sniffer Port");
     196    rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThis->Base, &pThis->pDrvBase, "Audio Sniffer Port");
    197197
    198198    if (RT_SUCCESS(rc))
    199199    {
    200         pData->pDrv = (PPDMIAUDIOSNIFFERCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_AUDIO_SNIFFER_CONNECTOR);
    201 
    202         if (!pData->pDrv)
     200        pThis->pDrv = (PPDMIAUDIOSNIFFERCONNECTOR)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_AUDIO_SNIFFER_CONNECTOR);
     201
     202        if (!pThis->pDrv)
    203203        {
    204204            AssertMsgFailed(("LUN #0 doesn't have a Audio Sniffer connector interface rc=%Vrc\n", rc));
     
    219219    {
    220220        /* Save PDM device instance data for future reference. */
    221         pData->pDevIns = pDevIns;
     221        pThis->pDevIns = pDevIns;
    222222
    223223        /* Save the pointer to created instance in the global variable, so other
    224224         * functions could reach it.
    225225         */
    226         g_pData = pData;
     226        g_pData = pThis;
    227227    }
    228228
  • trunk/src/VBox/Devices/Bus/DevPCI.cpp

    r11268 r11269  
    996996{
    997997    uint32_t    i;
    998     PPCIBUS     pData = PDMINS_2_DATA(pDevIns, PPCIBUS);
    999     PPCIGLOBALS pGlobals = PCIBUS_2_PCIGLOBALS(pData);
     998    PPCIBUS     pThis = PDMINS_2_DATA(pDevIns, PPCIBUS);
     999    PPCIGLOBALS pGlobals = PCIBUS_2_PCIGLOBALS(pThis);
    10001000
    10011001    /*
    10021002     * Bus state data.
    10031003     */
    1004     SSMR3PutU32(pSSMHandle, pData->uConfigReg);
     1004    SSMR3PutU32(pSSMHandle, pThis->uConfigReg);
    10051005    SSMR3PutBool(pSSMHandle, pGlobals->fUseIoApic);
    10061006    SSMR3PutU32(pSSMHandle, ~0);        /* separator */
     
    10091009     * Iterate all the devices.
    10101010     */
    1011     for (i = 0; i < RT_ELEMENTS(pData->devices); i++)
    1012     {
    1013         PPCIDEVICE pDev = pData->devices[i];
     1011    for (i = 0; i < RT_ELEMENTS(pThis->devices); i++)
     1012    {
     1013        PPCIDEVICE pDev = pThis->devices[i];
    10141014        if (pDev)
    10151015        {
     
    10351035static DECLCALLBACK(int) pciLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle, uint32_t u32Version)
    10361036{
    1037     PPCIBUS     pData = PDMINS_2_DATA(pDevIns, PPCIBUS);
    1038     PPCIGLOBALS  pGlobals = PCIBUS_2_PCIGLOBALS(pData);
     1037    PPCIBUS     pThis = PDMINS_2_DATA(pDevIns, PPCIBUS);
     1038    PPCIGLOBALS  pGlobals = PCIBUS_2_PCIGLOBALS(pThis);
    10391039    uint32_t    u32;
    10401040    uint32_t    i;
     
    10531053     * Bus state data.
    10541054     */
    1055     SSMR3GetU32(pSSMHandle, &pData->uConfigReg);
     1055    SSMR3GetU32(pSSMHandle, &pThis->uConfigReg);
    10561056    if (u32Version > 1)
    10571057        SSMR3GetBool(pSSMHandle, &pGlobals->fUseIoApic);
     
    10781078        if (u32 == (uint32_t)~0)
    10791079            break;
    1080         if (    u32 >= RT_ELEMENTS(pData->devices)
     1080        if (    u32 >= RT_ELEMENTS(pThis->devices)
    10811081            ||  u32 < i)
    10821082        {
     
    10881088        for (; i < u32; i++)
    10891089        {
    1090             if (pData->devices[i])
     1090            if (pThis->devices[i])
    10911091            {
    1092                 LogRel(("New device in slot %#x, %s (vendor=%#06x device=%#06x)\n", i, pData->devices[i]->name,
    1093                         PCIDevGetVendorId(pData->devices[i]), PCIDevGetDeviceId(pData->devices[i])));
     1092                LogRel(("New device in slot %#x, %s (vendor=%#06x device=%#06x)\n", i, pThis->devices[i]->name,
     1093                        PCIDevGetVendorId(pThis->devices[i]), PCIDevGetDeviceId(pThis->devices[i])));
    10941094                if (SSMR3HandleGetAfter(pSSMHandle) != SSMAFTER_DEBUG_IT)
    10951095                    AssertFailedReturn(VERR_SSM_LOAD_CONFIG_MISMATCH);
     
    11041104
    11051105        /* check that it's still around. */
    1106         pDev = pData->devices[i];
     1106        pDev = pThis->devices[i];
    11071107        if (!pDev)
    11081108        {
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r11193 r11269  
    340340 * Set a VRAM page dirty.
    341341 *
    342  * @param   pData       VGA instance data.
     342 * @param   pThis       VGA instance data.
    343343 * @param   offVRAM     The VRAM offset of the page to set.
    344344 */
    345 DECLINLINE(void) vga_set_dirty(VGAState *pData, RTGCPHYS offVRAM)
    346 {
    347     AssertMsg(offVRAM < pData->vram_size, ("offVRAM = %p, pData->vram_size = %p\n", offVRAM, pData->vram_size));
    348     ASMBitSet(&pData->au32DirtyBitmap[0], offVRAM >> PAGE_SHIFT);
    349     pData->fHaveDirtyBits = true;
     345DECLINLINE(void) vga_set_dirty(VGAState *pThis, RTGCPHYS offVRAM)
     346{
     347    AssertMsg(offVRAM < pThis->vram_size, ("offVRAM = %p, pThis->vram_size = %p\n", offVRAM, pThis->vram_size));
     348    ASMBitSet(&pThis->au32DirtyBitmap[0], offVRAM >> PAGE_SHIFT);
     349    pThis->fHaveDirtyBits = true;
    350350}
    351351
     
    355355 * @returns true if dirty.
    356356 * @returns false if clean.
    357  * @param   pData       VGA instance data.
     357 * @param   pThis       VGA instance data.
    358358 * @param   offVRAM     The VRAM offset of the page to check.
    359359 */
    360 DECLINLINE(bool) vga_is_dirty(VGAState *pData, RTGCPHYS offVRAM)
    361 {
    362     AssertMsg(offVRAM < pData->vram_size, ("offVRAM = %p, pData->vram_size = %p\n", offVRAM, pData->vram_size));
    363     return ASMBitTest(&pData->au32DirtyBitmap[0], offVRAM >> PAGE_SHIFT);
     360DECLINLINE(bool) vga_is_dirty(VGAState *pThis, RTGCPHYS offVRAM)
     361{
     362    AssertMsg(offVRAM < pThis->vram_size, ("offVRAM = %p, pThis->vram_size = %p\n", offVRAM, pThis->vram_size));
     363    return ASMBitTest(&pThis->au32DirtyBitmap[0], offVRAM >> PAGE_SHIFT);
    364364}
    365365
     
    367367 * Reset dirty flags in a give range.
    368368 *
    369  * @param   pData           VGA instance data.
     369 * @param   pThis           VGA instance data.
    370370 * @param   offVRAMStart    Offset into the VRAM buffer of the first page.
    371371 * @param   offVRAMEnd      Offset into the VRAM buffer of the last page - exclusive.
    372372 */
    373 DECLINLINE(void) vga_reset_dirty(VGAState *pData, RTGCPHYS offVRAMStart, RTGCPHYS offVRAMEnd)
    374 {
    375     Assert(offVRAMStart < pData->vram_size);
    376     Assert(offVRAMEnd <= pData->vram_size);
     373DECLINLINE(void) vga_reset_dirty(VGAState *pThis, RTGCPHYS offVRAMStart, RTGCPHYS offVRAMEnd)
     374{
     375    Assert(offVRAMStart < pThis->vram_size);
     376    Assert(offVRAMEnd <= pThis->vram_size);
    377377    Assert(offVRAMStart < offVRAMEnd);
    378     ASMBitClearRange(&pData->au32DirtyBitmap[0], offVRAMStart >> PAGE_SHIFT, offVRAMEnd >> PAGE_SHIFT);
     378    ASMBitClearRange(&pThis->au32DirtyBitmap[0], offVRAMStart >> PAGE_SHIFT, offVRAMEnd >> PAGE_SHIFT);
    379379}
    380380
     
    32113211PDMBOTHCBDECL(int) vgaMMIOFill(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, uint32_t u32Item, unsigned cbItem, unsigned cItems)
    32123212{
    3213     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3213    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    32143214    uint32_t b;
    32153215    uint32_t write_mask, bit_mask, set_mask;
     
    32263226    /// @todo add check for the end of region
    32273227    GCPhysAddr &= 0x1ffff;
    3228     switch((pData->gr[6] >> 2) & 3) {
     3228    switch((pThis->gr[6] >> 2) & 3) {
    32293229    case 0:
    32303230        break;
     
    32323232        if (GCPhysAddr >= 0x10000)
    32333233            return VINF_SUCCESS;
    3234         GCPhysAddr += pData->bank_offset;
     3234        GCPhysAddr += pThis->bank_offset;
    32353235        break;
    32363236    case 2:
     
    32473247    }
    32483248
    3249     if (pData->sr[4] & 0x08) {
     3249    if (pThis->sr[4] & 0x08) {
    32503250        /* chain 4 mode : simplest access */
    32513251#ifdef IN_GC
     
    32533253            return VINF_IOM_HC_MMIO_WRITE;
    32543254#else
    3255         if (GCPhysAddr + cItems * cbItem >= pData->vram_size)
     3255        if (GCPhysAddr + cItems * cbItem >= pThis->vram_size)
    32563256        {
    32573257            AssertMsgFailed(("GCPhysAddr=%VGp cItems=%#x cbItem=%d\n", GCPhysAddr, cItems, cbItem));
     
    32633263            for (i = 0; i < cbItem; i++)
    32643264            {
    3265                 if (pData->sr[2] & (1 << (GCPhysAddr & 3)))
     3265                if (pThis->sr[2] & (1 << (GCPhysAddr & 3)))
    32663266                {
    3267                     pData->CTX_SUFF(vram_ptr)[GCPhysAddr] = aVal[i];
    3268                     vga_set_dirty(pData, GCPhysAddr);
     3267                    pThis->CTX_SUFF(vram_ptr)[GCPhysAddr] = aVal[i];
     3268                    vga_set_dirty(pThis, GCPhysAddr);
    32693269                }
    32703270                GCPhysAddr++;
    32713271            }
    3272     } else if (pData->gr[5] & 0x10) {
     3272    } else if (pThis->gr[5] & 0x10) {
    32733273        /* odd/even mode (aka text mode mapping) */
    32743274#ifdef IN_GC
     
    32763276            return VINF_IOM_HC_MMIO_WRITE;
    32773277#else
    3278         if (GCPhysAddr * 2 + cItems * cbItem >= pData->vram_size)
     3278        if (GCPhysAddr * 2 + cItems * cbItem >= pThis->vram_size)
    32793279        {
    32803280            AssertMsgFailed(("GCPhysAddr=%VGp cItems=%#x cbItem=%d\n", GCPhysAddr, cItems, cbItem));
     
    32853285            for (i = 0; i < cbItem; i++)
    32863286            {
    3287                 unsigned plane = (pData->gr[4] & 2) | (GCPhysAddr & 1);
    3288                 if (pData->sr[2] & (1 << plane)) {
     3287                unsigned plane = (pThis->gr[4] & 2) | (GCPhysAddr & 1);
     3288                if (pThis->sr[2] & (1 << plane)) {
    32893289                    RTGCPHYS PhysAddr2 = ((GCPhysAddr & ~1) << 2) | plane;
    3290                     pData->CTX_SUFF(vram_ptr)[PhysAddr2] = aVal[i];
    3291                     vga_set_dirty(pData, PhysAddr2);
     3290                    pThis->CTX_SUFF(vram_ptr)[PhysAddr2] = aVal[i];
     3291                    vga_set_dirty(pThis, PhysAddr2);
    32923292                }
    32933293                GCPhysAddr++;
     
    32983298            return VINF_IOM_HC_MMIO_WRITE;
    32993299#else
    3300         if (GCPhysAddr + cItems * cbItem >= pData->vram_size)
     3300        if (GCPhysAddr + cItems * cbItem >= pThis->vram_size)
    33013301        {
    33023302            AssertMsgFailed(("GCPhysAddr=%VGp cItems=%#x cbItem=%d\n", GCPhysAddr, cItems, cbItem));
     
    33063306
    33073307        /* standard VGA latched access */
    3308         switch(pData->gr[5] & 3) {
     3308        switch(pThis->gr[5] & 3) {
    33093309        default:
    33103310        case 0:
    33113311            /* rotate */
    3312             b = pData->gr[3] & 7;
    3313             bit_mask = pData->gr[8];
     3312            b = pThis->gr[3] & 7;
     3313            bit_mask = pThis->gr[8];
    33143314            bit_mask |= bit_mask << 8;
    33153315            bit_mask |= bit_mask << 16;
    3316             set_mask = mask16[pData->gr[1]];
     3316            set_mask = mask16[pThis->gr[1]];
    33173317
    33183318            for (i = 0; i < cbItem; i++)
     
    33233323
    33243324                /* apply set/reset mask */
    3325                 aVal[i] = (aVal[i] & ~set_mask) | (mask16[pData->gr[0]] & set_mask);
    3326 
    3327                 APPLY_LOGICAL_AND_MASK(pData, aVal[i], bit_mask);
     3325                aVal[i] = (aVal[i] & ~set_mask) | (mask16[pThis->gr[0]] & set_mask);
     3326
     3327                APPLY_LOGICAL_AND_MASK(pThis, aVal[i], bit_mask);
    33283328            }
    33293329            break;
    33303330        case 1:
    33313331            for (i = 0; i < cbItem; i++)
    3332                 aVal[i] = pData->latch;
     3332                aVal[i] = pThis->latch;
    33333333            break;
    33343334        case 2:
    3335             bit_mask = pData->gr[8];
     3335            bit_mask = pThis->gr[8];
    33363336            bit_mask |= bit_mask << 8;
    33373337            bit_mask |= bit_mask << 16;
     
    33403340                aVal[i] = mask16[aVal[i] & 0x0f];
    33413341
    3342                 APPLY_LOGICAL_AND_MASK(pData, aVal[i], bit_mask);
     3342                APPLY_LOGICAL_AND_MASK(pThis, aVal[i], bit_mask);
    33433343            }
    33443344            break;
    33453345        case 3:
    33463346            /* rotate */
    3347             b = pData->gr[3] & 7;
     3347            b = pThis->gr[3] & 7;
    33483348
    33493349            for (i = 0; i < cbItem; i++)
    33503350            {
    33513351                aVal[i] = (aVal[i] >> b) | (aVal[i] << (8 - b));
    3352                 bit_mask = pData->gr[8] & aVal[i];
     3352                bit_mask = pThis->gr[8] & aVal[i];
    33533353                bit_mask |= bit_mask << 8;
    33543354                bit_mask |= bit_mask << 16;
    3355                 aVal[i] = mask16[pData->gr[0]];
    3356 
    3357                 APPLY_LOGICAL_AND_MASK(pData, aVal[i], bit_mask);
     3355                aVal[i] = mask16[pThis->gr[0]];
     3356
     3357                APPLY_LOGICAL_AND_MASK(pThis, aVal[i], bit_mask);
    33583358            }
    33593359            break;
     
    33613361
    33623362        /* mask data according to sr[2] */
    3363         write_mask = mask16[pData->sr[2]];
     3363        write_mask = mask16[pThis->sr[2]];
    33643364
    33653365        /* actually write data */
     
    33693369            while (cItems-- > 0)
    33703370            {
    3371                 ((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[0] & write_mask);
    3372                 vga_set_dirty(pData, GCPhysAddr << 2);
     3371                ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[0] & write_mask);
     3372                vga_set_dirty(pThis, GCPhysAddr << 2);
    33733373                GCPhysAddr++;
    33743374            }
     
    33793379            while (cItems-- > 0)
    33803380            {
    3381                 ((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[0] & write_mask);
    3382                 vga_set_dirty(pData, GCPhysAddr << 2);
     3381                ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[0] & write_mask);
     3382                vga_set_dirty(pThis, GCPhysAddr << 2);
    33833383                GCPhysAddr++;
    33843384
    3385                 ((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[1] & write_mask);
    3386                 vga_set_dirty(pData, GCPhysAddr << 2);
     3385                ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[1] & write_mask);
     3386                vga_set_dirty(pThis, GCPhysAddr << 2);
    33873387                GCPhysAddr++;
    33883388            }
     
    33953395                for (i = 0; i < cbItem; i++)
    33963396                {
    3397                     ((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pData->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[i] & write_mask);
    3398                     vga_set_dirty(pData, GCPhysAddr << 2);
     3397                    ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] = (((uint32_t *)pThis->CTX_SUFF(vram_ptr))[GCPhysAddr] & ~write_mask) | (aVal[i] & write_mask);
     3398                    vga_set_dirty(pThis, GCPhysAddr << 2);
    33993399                    GCPhysAddr++;
    34003400                }
     
    34183418PDMBOTHCBDECL(int) vgaMMIORead(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    34193419{
    3420     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
    3421     STAM_PROFILE_START(&pData->StatGCMemoryRead, a);
     3420    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3421    STAM_PROFILE_START(&pThis->StatGCMemoryRead, a);
    34223422    NOREF(pvUser);
    34233423    switch (cb)
    34243424    {
    34253425        case 1:
    3426             *(uint8_t  *)pv = vga_mem_readb(pData, GCPhysAddr); break;
     3426            *(uint8_t  *)pv = vga_mem_readb(pThis, GCPhysAddr); break;
    34273427        case 2:
    3428             *(uint16_t *)pv = vga_mem_readb(pData, GCPhysAddr)
    3429                            | (vga_mem_readb(pData, GCPhysAddr + 1) << 8);
     3428            *(uint16_t *)pv = vga_mem_readb(pThis, GCPhysAddr)
     3429                           | (vga_mem_readb(pThis, GCPhysAddr + 1) << 8);
    34303430            break;
    34313431        case 4:
    3432             *(uint32_t *)pv = vga_mem_readb(pData, GCPhysAddr)
    3433                            | (vga_mem_readb(pData, GCPhysAddr + 1) <<  8)
    3434                            | (vga_mem_readb(pData, GCPhysAddr + 2) << 16)
    3435                            | (vga_mem_readb(pData, GCPhysAddr + 3) << 24);
     3432            *(uint32_t *)pv = vga_mem_readb(pThis, GCPhysAddr)
     3433                           | (vga_mem_readb(pThis, GCPhysAddr + 1) <<  8)
     3434                           | (vga_mem_readb(pThis, GCPhysAddr + 2) << 16)
     3435                           | (vga_mem_readb(pThis, GCPhysAddr + 3) << 24);
    34363436            break;
    34373437
    34383438        case 8:
    3439             *(uint64_t *)pv = (uint64_t)vga_mem_readb(pData, GCPhysAddr)
    3440                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 1) <<  8)
    3441                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 2) << 16)
    3442                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 3) << 24)
    3443                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 4) << 32)
    3444                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 5) << 40)
    3445                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 6) << 48)
    3446                            | ((uint64_t)vga_mem_readb(pData, GCPhysAddr + 7) << 56);
     3439            *(uint64_t *)pv = (uint64_t)vga_mem_readb(pThis, GCPhysAddr)
     3440                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 1) <<  8)
     3441                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 2) << 16)
     3442                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 3) << 24)
     3443                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 4) << 32)
     3444                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 5) << 40)
     3445                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 6) << 48)
     3446                           | ((uint64_t)vga_mem_readb(pThis, GCPhysAddr + 7) << 56);
    34473447            break;
    34483448
     
    34513451            uint8_t *pu8Data = (uint8_t *)pv;
    34523452            while (cb-- > 0)
    3453                 *pu8Data++ = vga_mem_readb(pData, GCPhysAddr++);
    3454         }
    3455     }
    3456     STAM_PROFILE_STOP(&pData->StatGCMemoryRead, a);
     3453                *pu8Data++ = vga_mem_readb(pThis, GCPhysAddr++);
     3454        }
     3455    }
     3456    STAM_PROFILE_STOP(&pThis->StatGCMemoryRead, a);
    34573457    return VINF_SUCCESS;
    34583458}
     
    34703470PDMBOTHCBDECL(int) vgaMMIOWrite(PPDMDEVINS pDevIns, void *pvUser, RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    34713471{
    3472     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3472    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    34733473    uint8_t  *pu8 = (uint8_t *)pv;
    34743474    int rc = VINF_SUCCESS;
    3475     STAM_PROFILE_START(&pData->StatGCMemoryWrite, a);
     3475    STAM_PROFILE_START(&pThis->StatGCMemoryWrite, a);
    34763476
    34773477    switch (cb)
    34783478    {
    34793479        case 1:
    3480             rc = vga_mem_writeb(pData, GCPhysAddr, *pu8);
     3480            rc = vga_mem_writeb(pThis, GCPhysAddr, *pu8);
    34813481            break;
    34823482#if 1
    34833483        case 2:
    3484             rc = vga_mem_writeb(pData, GCPhysAddr + 0, pu8[0]);
     3484            rc = vga_mem_writeb(pThis, GCPhysAddr + 0, pu8[0]);
    34853485            if (RT_LIKELY(rc == VINF_SUCCESS))
    3486                 rc = vga_mem_writeb(pData, GCPhysAddr + 1, pu8[1]);
     3486                rc = vga_mem_writeb(pThis, GCPhysAddr + 1, pu8[1]);
    34873487            break;
    34883488        case 4:
    3489             rc = vga_mem_writeb(pData, GCPhysAddr + 0, pu8[0]);
     3489            rc = vga_mem_writeb(pThis, GCPhysAddr + 0, pu8[0]);
    34903490            if (RT_LIKELY(rc == VINF_SUCCESS))
    3491                 rc = vga_mem_writeb(pData, GCPhysAddr + 1, pu8[1]);
     3491                rc = vga_mem_writeb(pThis, GCPhysAddr + 1, pu8[1]);
    34923492            if (RT_LIKELY(rc == VINF_SUCCESS))
    3493                 rc = vga_mem_writeb(pData, GCPhysAddr + 2, pu8[2]);
     3493                rc = vga_mem_writeb(pThis, GCPhysAddr + 2, pu8[2]);
    34943494            if (RT_LIKELY(rc == VINF_SUCCESS))
    3495                 rc = vga_mem_writeb(pData, GCPhysAddr + 3, pu8[3]);
     3495                rc = vga_mem_writeb(pThis, GCPhysAddr + 3, pu8[3]);
    34963496            break;
    34973497        case 8:
    3498             rc = vga_mem_writeb(pData, GCPhysAddr + 0, pu8[0]);
     3498            rc = vga_mem_writeb(pThis, GCPhysAddr + 0, pu8[0]);
    34993499            if (RT_LIKELY(rc == VINF_SUCCESS))
    3500                 rc = vga_mem_writeb(pData, GCPhysAddr + 1, pu8[1]);
     3500                rc = vga_mem_writeb(pThis, GCPhysAddr + 1, pu8[1]);
    35013501            if (RT_LIKELY(rc == VINF_SUCCESS))
    3502                 rc = vga_mem_writeb(pData, GCPhysAddr + 2, pu8[2]);
     3502                rc = vga_mem_writeb(pThis, GCPhysAddr + 2, pu8[2]);
    35033503            if (RT_LIKELY(rc == VINF_SUCCESS))
    3504                 rc = vga_mem_writeb(pData, GCPhysAddr + 3, pu8[3]);
     3504                rc = vga_mem_writeb(pThis, GCPhysAddr + 3, pu8[3]);
    35053505            if (RT_LIKELY(rc == VINF_SUCCESS))
    3506                 rc = vga_mem_writeb(pData, GCPhysAddr + 4, pu8[4]);
     3506                rc = vga_mem_writeb(pThis, GCPhysAddr + 4, pu8[4]);
    35073507            if (RT_LIKELY(rc == VINF_SUCCESS))
    3508                 rc = vga_mem_writeb(pData, GCPhysAddr + 5, pu8[5]);
     3508                rc = vga_mem_writeb(pThis, GCPhysAddr + 5, pu8[5]);
    35093509            if (RT_LIKELY(rc == VINF_SUCCESS))
    3510                 rc = vga_mem_writeb(pData, GCPhysAddr + 6, pu8[6]);
     3510                rc = vga_mem_writeb(pThis, GCPhysAddr + 6, pu8[6]);
    35113511            if (RT_LIKELY(rc == VINF_SUCCESS))
    3512                 rc = vga_mem_writeb(pData, GCPhysAddr + 7, pu8[7]);
     3512                rc = vga_mem_writeb(pThis, GCPhysAddr + 7, pu8[7]);
    35133513            break;
    35143514#else
     
    35253525        default:
    35263526            while (cb-- > 0 && rc == VINF_SUCCESS)
    3527                 rc = vga_mem_writeb(pData, GCPhysAddr++, *pu8++);
    3528             break;
    3529 
    3530     }
    3531     STAM_PROFILE_STOP(&pData->StatGCMemoryWrite, a);
     3527                rc = vga_mem_writeb(pThis, GCPhysAddr++, *pu8++);
     3528            break;
     3529
     3530    }
     3531    STAM_PROFILE_STOP(&pThis->StatGCMemoryWrite, a);
    35323532    return rc;
    35333533}
     
    35383538 * @returns VBox status code.
    35393539 * @param   pVM         VM handle.
    3540  * @param   pData       VGA device instance data.
     3540 * @param   pThis       VGA device instance data.
    35413541 * @param   GCPhys      The access physical address.
    35423542 * @param   GCPtr       The access virtual address (only GC).
    35433543 */
    3544 static int vgaLFBAccess(PVM pVM, PVGASTATE pData, RTGCPHYS GCPhys, RTGCPTR GCPtr)
     3544static int vgaLFBAccess(PVM pVM, PVGASTATE pThis, RTGCPHYS GCPhys, RTGCPTR GCPtr)
    35453545{
    35463546    int rc;
     
    35493549     * Set page dirty bit.
    35503550     */
    3551     vga_set_dirty(pData, GCPhys - pData->GCPhysVRAM);
    3552     pData->fLFBUpdated = true;
     3551    vga_set_dirty(pThis, GCPhys - pThis->GCPhysVRAM);
     3552    pThis->fLFBUpdated = true;
    35533553
    35543554    /*
     
    35573557     * ASSUME: the guest always maps video memory RW.
    35583558     */
    3559     rc = PGMHandlerPhysicalPageTempOff(pVM, pData->GCPhysVRAM, GCPhys);
     3559    rc = PGMHandlerPhysicalPageTempOff(pVM, pThis->GCPhysVRAM, GCPhys);
    35603560    if (RT_SUCCESS(rc))
    35613561    {
     
    35923592PDMBOTHCBDECL(int) vgaGCLFBAccessHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)
    35933593{
    3594     PVGASTATE   pData = (PVGASTATE)pvUser;
    3595     Assert(pData);
    3596     Assert(GCPhysFault >= pData->GCPhysVRAM);
     3594    PVGASTATE   pThis = (PVGASTATE)pvUser;
     3595    Assert(pThis);
     3596    Assert(GCPhysFault >= pThis->GCPhysVRAM);
    35973597    AssertMsg(uErrorCode & X86_TRAP_PF_RW, ("uErrorCode=%#x\n", uErrorCode));
    35983598
    3599     return vgaLFBAccess(pVM, pData, GCPhysFault, pvFault);
     3599    return vgaLFBAccess(pVM, pThis, GCPhysFault, pvFault);
    36003600}
    36013601
     
    36153615PDMBOTHCBDECL(int) vgaR0LFBAccessHandler(PVM pVM, RTGCUINT uErrorCode, PCPUMCTXCORE pRegFrame, RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)
    36163616{
    3617     PVGASTATE   pData = (PVGASTATE)pvUser;
    3618     Assert(pData);
    3619     Assert(GCPhysFault >= pData->GCPhysVRAM);
     3617    PVGASTATE   pThis = (PVGASTATE)pvUser;
     3618    Assert(pThis);
     3619    Assert(GCPhysFault >= pThis->GCPhysVRAM);
    36203620    AssertMsg(uErrorCode & X86_TRAP_PF_RW, ("uErrorCode=%#x\n", uErrorCode));
    36213621
    3622     return vgaLFBAccess(pVM, pData, GCPhysFault, pvFault);
     3622    return vgaLFBAccess(pVM, pThis, GCPhysFault, pvFault);
    36233623}
    36243624
     
    36403640static DECLCALLBACK(int) vgaR3LFBAccessHandler(PVM pVM, RTGCPHYS GCPhys, void *pvPhys, void *pvBuf, size_t cbBuf, PGMACCESSTYPE enmAccessType, void *pvUser)
    36413641{
    3642     PVGASTATE   pData = (PVGASTATE)pvUser;
     3642    PVGASTATE   pThis = (PVGASTATE)pvUser;
    36433643    int         rc;
    3644     Assert(pData);
    3645     Assert(GCPhys >= pData->GCPhysVRAM);
    3646     rc = vgaLFBAccess(pVM, pData, GCPhys, 0);
     3644    Assert(pThis);
     3645    Assert(GCPhys >= pThis->GCPhysVRAM);
     3646    rc = vgaLFBAccess(pVM, pThis, GCPhys, 0);
    36473647    if (RT_SUCCESS(rc))
    36483648        return VINF_PGM_HANDLER_DO_DEFAULT;
     
    36713671PDMBOTHCBDECL(int) vbeIOPortWriteVBEExtra(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    36723672{
    3673     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3673    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    36743674    NOREF(pvUser);
    36753675    NOREF(Port);
     
    36783678    {
    36793679        Log(("vbeIOPortWriteVBEExtra: addr=%#RX32\n", u32));
    3680         pData->u16VBEExtraAddress = u32;
     3680        pThis->u16VBEExtraAddress = u32;
    36813681        return VINF_SUCCESS;
    36823682    }
     
    37003700PDMBOTHCBDECL(int) vbeIOPortReadVBEExtra(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb)
    37013701{
    3702     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3702    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    37033703    NOREF(pvUser);
    37043704    NOREF(Port);
    37053705
    3706     if (pData->u16VBEExtraAddress == 0xffff)
     3706    if (pThis->u16VBEExtraAddress == 0xffff)
    37073707    {
    37083708        Log(("vbeIOPortReadVBEExtra: Requested number of 64k video banks\n"));
    3709         *pu32 = pData->vram_size / _64K;
     3709        *pu32 = pThis->vram_size / _64K;
    37103710        return VINF_SUCCESS;
    37113711    }
    37123712
    3713     if (    pData->u16VBEExtraAddress >= pData->cbVBEExtraData
    3714         ||  pData->u16VBEExtraAddress + cb > pData->cbVBEExtraData)
     3713    if (    pThis->u16VBEExtraAddress >= pThis->cbVBEExtraData
     3714        ||  pThis->u16VBEExtraAddress + cb > pThis->cbVBEExtraData)
    37153715    {
    37163716        *pu32 = 0;
    37173717        Log(("vbeIOPortReadVBEExtra: Requested address is out of VBE data!!! Address=%#x(%d) cbVBEExtraData=%#x(%d)\n",
    3718              pData->u16VBEExtraAddress, pData->u16VBEExtraAddress, pData->cbVBEExtraData, pData->cbVBEExtraData));
     3718             pThis->u16VBEExtraAddress, pThis->u16VBEExtraAddress, pThis->cbVBEExtraData, pThis->cbVBEExtraData));
    37193719        return VINF_SUCCESS;
    37203720    }
     
    37223722    if (cb == 1)
    37233723    {
    3724         *pu32 = pData->pu8VBEExtraData[pData->u16VBEExtraAddress] & 0xFF;
     3724        *pu32 = pThis->pu8VBEExtraData[pThis->u16VBEExtraAddress] & 0xFF;
    37253725
    37263726        Log(("vbeIOPortReadVBEExtra: cb=%#x %.*Vhxs\n", cb, cb, pu32));
     
    37303730    if (cb == 2)
    37313731    {
    3732         *pu32 = pData->pu8VBEExtraData[pData->u16VBEExtraAddress]
    3733               | pData->pu8VBEExtraData[pData->u16VBEExtraAddress + 1] << 8;
     3732        *pu32 = pThis->pu8VBEExtraData[pThis->u16VBEExtraAddress]
     3733              | pThis->pu8VBEExtraData[pThis->u16VBEExtraAddress + 1] << 8;
    37343734
    37353735        Log(("vbeIOPortReadVBEExtra: cb=%#x %.*Vhxs\n", cb, cb, pu32));
     
    37473747 * @returns VBox status code.
    37483748 *
    3749  * @param   pData       The VGA instance data.
     3749 * @param   pThis       The VGA instance data.
    37503750 */
    3751 static int vbeParseBitmap(PVGASTATE pData)
     3751static int vbeParseBitmap(PVGASTATE pThis)
    37523752{
    37533753    uint16_t    i;
     
    37603760     * Get bitmap header data
    37613761     */
    3762     bmpInfo = (PBMPINFO)(pData->pu8Logo + sizeof(LOGOHDR));
    3763     pWinHdr = (PWINHDR)(pData->pu8Logo + sizeof(LOGOHDR) + sizeof(BMPINFO));
     3762    bmpInfo = (PBMPINFO)(pThis->pu8Logo + sizeof(LOGOHDR));
     3763    pWinHdr = (PWINHDR)(pThis->pu8Logo + sizeof(LOGOHDR) + sizeof(BMPINFO));
    37643764
    37653765    if (bmpInfo->Type == BMP_ID)
     
    37693769            case BMP_HEADER_OS21:
    37703770                pOs2Hdr = (POS2HDR)pWinHdr;
    3771                 pData->cxLogo = pOs2Hdr->Width;
    3772                 pData->cyLogo = pOs2Hdr->Height;
    3773                 pData->cLogoPlanes = pOs2Hdr->Planes;
    3774                 pData->cLogoBits = pOs2Hdr->BitCount;
    3775                 pData->LogoCompression = BMP_COMPRESS_NONE;
    3776                 pData->cLogoUsedColors = 0;
     3771                pThis->cxLogo = pOs2Hdr->Width;
     3772                pThis->cyLogo = pOs2Hdr->Height;
     3773                pThis->cLogoPlanes = pOs2Hdr->Planes;
     3774                pThis->cLogoBits = pOs2Hdr->BitCount;
     3775                pThis->LogoCompression = BMP_COMPRESS_NONE;
     3776                pThis->cLogoUsedColors = 0;
    37773777                break;
    37783778
    37793779            case BMP_HEADER_OS22:
    37803780                pOs22Hdr = (POS22HDR)pWinHdr;
    3781                 pData->cxLogo = pOs22Hdr->Width;
    3782                 pData->cyLogo = pOs22Hdr->Height;
    3783                 pData->cLogoPlanes = pOs22Hdr->Planes;
    3784                 pData->cLogoBits = pOs22Hdr->BitCount;
    3785                 pData->LogoCompression = pOs22Hdr->Compression;
    3786                 pData->cLogoUsedColors = pOs22Hdr->ClrUsed;
     3781                pThis->cxLogo = pOs22Hdr->Width;
     3782                pThis->cyLogo = pOs22Hdr->Height;
     3783                pThis->cLogoPlanes = pOs22Hdr->Planes;
     3784                pThis->cLogoBits = pOs22Hdr->BitCount;
     3785                pThis->LogoCompression = pOs22Hdr->Compression;
     3786                pThis->cLogoUsedColors = pOs22Hdr->ClrUsed;
    37873787                break;
    37883788
    37893789            case BMP_HEADER_WIN3:
    3790                 pData->cxLogo = pWinHdr->Width;
    3791                 pData->cyLogo = pWinHdr->Height;
    3792                 pData->cLogoPlanes = pWinHdr->Planes;
    3793                 pData->cLogoBits = pWinHdr->BitCount;
    3794                 pData->LogoCompression = pWinHdr->Compression;
    3795                 pData->cLogoUsedColors = pWinHdr->ClrUsed;
     3790                pThis->cxLogo = pWinHdr->Width;
     3791                pThis->cyLogo = pWinHdr->Height;
     3792                pThis->cLogoPlanes = pWinHdr->Planes;
     3793                pThis->cLogoBits = pWinHdr->BitCount;
     3794                pThis->LogoCompression = pWinHdr->Compression;
     3795                pThis->cLogoUsedColors = pWinHdr->ClrUsed;
    37963796                break;
    37973797
     
    38013801        }
    38023802
    3803         if (pData->cxLogo > LOGO_MAX_WIDTH || pData->cyLogo > LOGO_MAX_HEIGHT)
     3803        if (pThis->cxLogo > LOGO_MAX_WIDTH || pThis->cyLogo > LOGO_MAX_HEIGHT)
    38043804        {
    3805             AssertMsgFailed(("Bitmap %ux%u is too big.\n", pData->cxLogo, pData->cyLogo));
     3805            AssertMsgFailed(("Bitmap %ux%u is too big.\n", pThis->cxLogo, pThis->cyLogo));
    38063806            return VERR_INVALID_PARAMETER;
    38073807        }
    38083808
    3809         if (pData->cLogoPlanes != 1)
     3809        if (pThis->cLogoPlanes != 1)
    38103810        {
    3811             AssertMsgFailed(("Bitmap planes %u != 1.\n", pData->cLogoPlanes));
     3811            AssertMsgFailed(("Bitmap planes %u != 1.\n", pThis->cLogoPlanes));
    38123812            return VERR_INVALID_PARAMETER;
    38133813        }
    38143814
    3815         if (pData->cLogoBits != 4 && pData->cLogoBits != 8 && pData->cLogoBits != 24)
     3815        if (pThis->cLogoBits != 4 && pThis->cLogoBits != 8 && pThis->cLogoBits != 24)
    38163816        {
    3817             AssertMsgFailed(("Unsupported %u depth.\n", pData->cLogoBits));
     3817            AssertMsgFailed(("Unsupported %u depth.\n", pThis->cLogoBits));
    38183818            return VERR_INVALID_PARAMETER;
    38193819        }
    38203820
    3821         if (pData->cLogoUsedColors > 256)
     3821        if (pThis->cLogoUsedColors > 256)
    38223822        {
    3823             AssertMsgFailed(("Unsupported %u colors.\n", pData->cLogoUsedColors));
     3823            AssertMsgFailed(("Unsupported %u colors.\n", pThis->cLogoUsedColors));
    38243824            return VERR_INVALID_PARAMETER;
    38253825        }
    38263826
    3827         if (pData->LogoCompression != BMP_COMPRESS_NONE)
     3827        if (pThis->LogoCompression != BMP_COMPRESS_NONE)
    38283828        {
    3829             AssertMsgFailed(("Unsupported %u compression.\n", pData->LogoCompression));
     3829            AssertMsgFailed(("Unsupported %u compression.\n", pThis->LogoCompression));
    38303830            return VERR_INVALID_PARAMETER;
    38313831        }
     
    38343834         * Read bitmap palette
    38353835         */
    3836         if (!pData->cLogoUsedColors)
    3837             pData->cLogoPalEntries = 1 << (pData->cLogoPlanes * pData->cLogoBits);
     3836        if (!pThis->cLogoUsedColors)
     3837            pThis->cLogoPalEntries = 1 << (pThis->cLogoPlanes * pThis->cLogoBits);
    38383838        else
    3839             pData->cLogoPalEntries = pData->cLogoUsedColors;
    3840 
    3841         if (pData->cLogoPalEntries)
     3839            pThis->cLogoPalEntries = pThis->cLogoUsedColors;
     3840
     3841        if (pThis->cLogoPalEntries)
    38423842        {
    3843             const uint8_t *pu8Pal = pData->pu8Logo + sizeof(LOGOHDR) + sizeof(BMPINFO) + pWinHdr->Size; /* ASSUMES Size location (safe) */
    3844 
    3845             for (i = 0; i < pData->cLogoPalEntries; i++)
     3843            const uint8_t *pu8Pal = pThis->pu8Logo + sizeof(LOGOHDR) + sizeof(BMPINFO) + pWinHdr->Size; /* ASSUMES Size location (safe) */
     3844
     3845            for (i = 0; i < pThis->cLogoPalEntries; i++)
    38463846            {
    38473847                uint16_t j;
     
    38563856
    38573857                pu8Pal++; /* skip unused byte */
    3858                 pData->au32LogoPalette[i] = u32Pal;
     3858                pThis->au32LogoPalette[i] = u32Pal;
    38593859            }
    38603860        }
     
    38633863         * Bitmap data offset
    38643864         */
    3865         pData->pu8LogoBitmap = pData->pu8Logo + sizeof(LOGOHDR) + bmpInfo->Offset;
     3865        pThis->pu8LogoBitmap = pThis->pu8Logo + sizeof(LOGOHDR) + bmpInfo->Offset;
    38663866    }
    38673867
     
    40204020PDMBOTHCBDECL(int) vbeIOPortWriteCMDLogo(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    40214021{
    4022     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4022    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    40234023    NOREF(pvUser);
    40244024    NOREF(Port);
     
    40324032        {
    40334033            case LOGO_CMD_SET_OFFSET:
    4034                 pData->offLogoData = u32 & 0xFF;
     4034                pThis->offLogoData = u32 & 0xFF;
    40354035                break;
    40364036
     
    40384038            {
    40394039                uint8_t         iStep = u32 & 0xFF;
    4040                 const uint8_t  *pu8Src = pData->pu8LogoBitmap;
     4040                const uint8_t  *pu8Src = pThis->pu8LogoBitmap;
    40414041                uint8_t        *pu8Dst;
    4042                 PLOGOHDR        pLogoHdr = (PLOGOHDR)pData->pu8Logo;
     4042                PLOGOHDR        pLogoHdr = (PLOGOHDR)pThis->pu8Logo;
    40434043                uint32_t        offDirty = 0;
    4044                 uint16_t        xLogo = (LOGO_MAX_WIDTH - pData->cxLogo) / 2;
    4045                 uint16_t        yLogo = LOGO_MAX_HEIGHT - (LOGO_MAX_HEIGHT - pData->cyLogo) / 2;
     4044                uint16_t        xLogo = (LOGO_MAX_WIDTH - pThis->cxLogo) / 2;
     4045                uint16_t        yLogo = LOGO_MAX_HEIGHT - (LOGO_MAX_HEIGHT - pThis->cyLogo) / 2;
    40464046
    40474047                /* Check VRAM size */
    4048                 if (pData->vram_size < LOGO_MAX_SIZE)
     4048                if (pThis->vram_size < LOGO_MAX_SIZE)
    40494049                    break;
    40504050
    4051                 if (pData->vram_size >= LOGO_MAX_SIZE * 2)
    4052                     pu8Dst = pData->vram_ptrR3 + LOGO_MAX_SIZE;
     4051                if (pThis->vram_size >= LOGO_MAX_SIZE * 2)
     4052                    pu8Dst = pThis->vram_ptrR3 + LOGO_MAX_SIZE;
    40534053                else
    4054                     pu8Dst = pData->vram_ptrR3;
     4054                    pu8Dst = pThis->vram_ptrR3;
    40554055
    40564056                /* Clear screen - except on power on... */
    4057                 if (!pData->fLogoClearScreen)
     4057                if (!pThis->fLogoClearScreen)
    40584058                {
    40594059                    uint32_t *pu32TmpPtr = (uint32_t *)pu8Dst;
     
    40654065                            *pu32TmpPtr++ = 0;
    40664066                    }
    4067                     pData->fLogoClearScreen = true;
     4067                    pThis->fLogoClearScreen = true;
    40684068                }
    40694069
    40704070                /* Show the bitmap. */
    4071                 vbeShowBitmap(pData->cLogoBits, xLogo, yLogo,
    4072                               pData->cxLogo, pData->cyLogo,
    4073                               iStep, &pData->au32LogoPalette[0],
     4071                vbeShowBitmap(pThis->cLogoBits, xLogo, yLogo,
     4072                              pThis->cxLogo, pThis->cyLogo,
     4073                              iStep, &pThis->au32LogoPalette[0],
    40744074                              pu8Src, pu8Dst);
    40754075
     
    40784078                    vbeShowBitmap(1, LOGO_F12TEXT_X, LOGO_F12TEXT_Y,
    40794079                                  LOGO_F12TEXT_WIDTH, LOGO_F12TEXT_HEIGHT,
    4080                                   iStep, &pData->au32LogoPalette[0],
     4080                                  iStep, &pThis->au32LogoPalette[0],
    40814081                                  &g_abLogoF12BootText[0], pu8Dst);
    40824082
    40834083                /* Blit the offscreen buffer. */
    4084                 if (pData->vram_size >= LOGO_MAX_SIZE * 2)
     4084                if (pThis->vram_size >= LOGO_MAX_SIZE * 2)
    40854085                {
    4086                     uint32_t *pu32TmpDst = (uint32_t *)pData->vram_ptrR3;
    4087                     uint32_t *pu32TmpSrc = (uint32_t *)(pData->vram_ptrR3 + LOGO_MAX_SIZE);
     4086                    uint32_t *pu32TmpDst = (uint32_t *)pThis->vram_ptrR3;
     4087                    uint32_t *pu32TmpSrc = (uint32_t *)(pThis->vram_ptrR3 + LOGO_MAX_SIZE);
    40884088                    for (int i = 0; i < LOGO_MAX_WIDTH; i++)
    40894089                    {
     
    40964096                while (offDirty <= LOGO_MAX_SIZE)
    40974097                {
    4098                     vga_set_dirty(pData, offDirty);
     4098                    vga_set_dirty(pThis, offDirty);
    40994099                    offDirty += PAGE_SIZE;
    41004100                }
     
    41044104            default:
    41054105                Log(("vbeIOPortWriteCMDLogo: invalid command %d\n", u32));
    4106                 pData->LogoCommand = LOGO_CMD_NOP;
     4106                pThis->LogoCommand = LOGO_CMD_NOP;
    41074107                break;
    41084108        }
     
    41294129PDMBOTHCBDECL(int) vbeIOPortReadCMDLogo(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb)
    41304130{
    4131     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4131    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    41324132    NOREF(pvUser);
    41334133    NOREF(Port);
     
    41354135    PRTUINT64U  p;
    41364136
    4137     if (pData->offLogoData + cb > pData->cbLogo)
     4137    if (pThis->offLogoData + cb > pThis->cbLogo)
    41384138    {
    41394139        Log(("vbeIOPortReadCMDLogo: Requested address is out of Logo data!!! offLogoData=%#x(%d) cbLogo=%#x(%d)\n",
    4140              pData->offLogoData, pData->offLogoData, pData->cbLogo, pData->cbLogo));
     4140             pThis->offLogoData, pThis->offLogoData, pThis->cbLogo, pThis->cbLogo));
    41414141        return VINF_SUCCESS;
    41424142    }
    4143     p = (PRTUINT64U)&pData->pu8Logo[pData->offLogoData];
     4143    p = (PRTUINT64U)&pThis->pu8Logo[pThis->offLogoData];
    41444144
    41454145    switch (cb)
     
    41514151        default: AssertFailed(); break;
    41524152    }
    4153     Log(("vbeIOPortReadCMDLogo: LogoOffset=%#x(%d) cb=%#x %.*Vhxs\n", pData->offLogoData, pData->offLogoData, cb, cb, pu32));
    4154 
    4155     pData->LogoCommand = LOGO_CMD_NOP;
    4156     pData->offLogoData += cb;
     4153    Log(("vbeIOPortReadCMDLogo: LogoOffset=%#x(%d) cb=%#x %.*Vhxs\n", pThis->offLogoData, pThis->offLogoData, cb, cb, pu32));
     4154
     4155    pThis->LogoCommand = LOGO_CMD_NOP;
     4156    pThis->offLogoData += cb;
    41574157
    41584158    return VINF_SUCCESS;
     
    42454245static DECLCALLBACK(void *) vgaPortQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    42464246{
    4247     PVGASTATE pData = (PVGASTATE)((uintptr_t)pInterface - RT_OFFSETOF(VGASTATE, Base));
     4247    PVGASTATE pThis = (PVGASTATE)((uintptr_t)pInterface - RT_OFFSETOF(VGASTATE, Base));
    42484248    switch (enmInterface)
    42494249    {
    42504250        case PDMINTERFACE_BASE:
    4251             return &pData->Base;
     4251            return &pThis->Base;
    42524252        case PDMINTERFACE_DISPLAY_PORT:
    4253             return &pData->Port;
     4253            return &pThis->Port;
    42544254        default:
    42554255            return NULL;
     
    43234323static DECLCALLBACK(int) vgaPortUpdateDisplay(PPDMIDISPLAYPORT pInterface)
    43244324{
    4325     PVGASTATE pData = IDISPLAYPORT_2_VGASTATE(pInterface);
    4326     PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pData));
     4325    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
     4326    PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pThis));
    43274327
    43284328#ifdef DEBUG_sunlover
     
    43324332    /* This should be called only in non VBVA mode. */
    43334333
    4334     int rc = vga_update_display(pData);
     4334    int rc = vga_update_display(pThis);
    43354335    if (rc != VINF_SUCCESS)
    43364336        return rc;
    43374337
    4338     if (pData->fHaveDirtyBits && pData->GCPhysVRAM && pData->GCPhysVRAM != NIL_RTGCPHYS32)
    4339     {
    4340         PPDMDEVINS pDevIns = pData->CTX_SUFF(pDevIns);
    4341         PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pData->GCPhysVRAM);
    4342         pData->fHaveDirtyBits = false;
     4338    if (pThis->fHaveDirtyBits && pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS32)
     4339    {
     4340        PPDMDEVINS pDevIns = pThis->CTX_SUFF(pDevIns);
     4341        PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
     4342        pThis->fHaveDirtyBits = false;
    43434343    }
    43444344
     
    43554355static DECLCALLBACK(int) vgaPortUpdateDisplayAll(PPDMIDISPLAYPORT pInterface)
    43564356{
    4357     PVGASTATE pData = IDISPLAYPORT_2_VGASTATE(pInterface);
    4358     PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pData));
     4357    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
     4358    PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pThis));
    43594359
    43604360    /* This is called both in VBVA mode and normal modes. */
     
    43644364#endif /* DEBUG_sunlover */
    43654365
    4366     pData->graphic_mode = -1; /* force full update */
    4367 
    4368     int rc = vga_update_display(pData);
     4366    pThis->graphic_mode = -1; /* force full update */
     4367
     4368    int rc = vga_update_display(pThis);
    43694369
    43704370    /* The dirty bits array has been just cleared, reset handlers as well. */
    4371     if (pData->GCPhysVRAM && pData->GCPhysVRAM != NIL_RTGCPHYS32)
    4372     {
    4373         PPDMDEVINS pDevIns = pData->CTX_SUFF(pDevIns);
    4374         PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pData->GCPhysVRAM);
     4371    if (pThis->GCPhysVRAM && pThis->GCPhysVRAM != NIL_RTGCPHYS32)
     4372    {
     4373        PPDMDEVINS pDevIns = pThis->CTX_SUFF(pDevIns);
     4374        PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
    43754375    }
    43764376
     
    43894389static DECLCALLBACK(int) vgaPortSetRefreshRate(PPDMIDISPLAYPORT pInterface, uint32_t cMilliesInterval)
    43904390{
    4391     PVGASTATE pData = IDISPLAYPORT_2_VGASTATE(pInterface);
    4392 
    4393     pData->cMilliesRefreshInterval = cMilliesInterval;
     4391    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
     4392
     4393    pThis->cMilliesRefreshInterval = cMilliesInterval;
    43944394    if (cMilliesInterval)
    4395         return TMTimerSetMillies(pData->RefreshTimer, cMilliesInterval);
    4396     return TMTimerStop(pData->RefreshTimer);
     4395        return TMTimerSetMillies(pThis->RefreshTimer, cMilliesInterval);
     4396    return TMTimerStop(pThis->RefreshTimer);
    43974397}
    43984398
     
    44014401static DECLCALLBACK(int) vgaPortQueryColorDepth(PPDMIDISPLAYPORT pInterface, uint32_t *pcBits)
    44024402{
    4403     PVGASTATE pData = IDISPLAYPORT_2_VGASTATE(pInterface);
     4403    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    44044404
    44054405    if (!pcBits)
    44064406        return VERR_INVALID_PARAMETER;
    4407     *pcBits = vga_get_bpp(pData);
     4407    *pcBits = vga_get_bpp(pThis);
    44084408    return VINF_SUCCESS;
    44094409}
     
    44284428    uint32_t                fRenderVRAM;
    44294429    size_t                  cbRequired;
    4430     PVGASTATE               pData = IDISPLAYPORT_2_VGASTATE(pInterface);
    4431     PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pData));
     4430    PVGASTATE               pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
     4431    PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pThis));
    44324432    LogFlow(("vgaPortSnapshot: pvData=%p cbData=%d pcx=%p pcy=%p pcbData=%p\n", pvData, cbData, pcx, pcy, pcbData));
    44334433
     
    44514451     * Validate the buffer size.
    44524452     */
    4453     cbRequired = RT_ALIGN_Z(pData->last_scr_width, 4) * pData->last_scr_height * 4;
     4453    cbRequired = RT_ALIGN_Z(pThis->last_scr_width, 4) * pThis->last_scr_height * 4;
    44544454    if (cbRequired > cbData)
    44554455    {
     
    44634463    Connector.pu8Data       = (uint8_t*)pvData;
    44644464    Connector.cBits         = 32;
    4465     Connector.cx            = pData->pDrv->cx;
    4466     Connector.cy            = pData->pDrv->cy;
     4465    Connector.cx            = pThis->pDrv->cx;
     4466    Connector.cy            = pThis->pDrv->cy;
    44674467    Connector.cbScanline    = RT_ALIGN_32(Connector.cx, 4) * 4;
    44684468    Connector.pfnRefresh    = vgaDummyRefresh;
     
    44714471
    44724472    /* save & replace state data. */
    4473     pConnector = pData->pDrv;
    4474     pData->pDrv = &Connector;
    4475     graphic_mode = pData->graphic_mode;
    4476     pData->graphic_mode = -1;           /* force a full refresh. */
    4477     fRenderVRAM = pData->fRenderVRAM;
    4478     pData->fRenderVRAM = 1;             /* force the guest VRAM rendering to the given buffer. */
     4473    pConnector = pThis->pDrv;
     4474    pThis->pDrv = &Connector;
     4475    graphic_mode = pThis->graphic_mode;
     4476    pThis->graphic_mode = -1;           /* force a full refresh. */
     4477    fRenderVRAM = pThis->fRenderVRAM;
     4478    pThis->fRenderVRAM = 1;             /* force the guest VRAM rendering to the given buffer. */
    44794479
    44804480    /* make the snapshot. */
    4481     int rc = vga_update_display(pData);
     4481    int rc = vga_update_display(pThis);
    44824482
    44834483    /* restore */
    4484     pData->pDrv = pConnector;
    4485     pData->graphic_mode = graphic_mode;
    4486     pData->fRenderVRAM = fRenderVRAM;
     4484    pThis->pDrv = pConnector;
     4485    pThis->graphic_mode = graphic_mode;
     4486    pThis->fRenderVRAM = fRenderVRAM;
    44874487
    44884488    if (rc != VINF_SUCCESS)
     
    45164516static DECLCALLBACK(int) vgaPortDisplayBlt(PPDMIDISPLAYPORT pInterface, const void *pvData, uint32_t x, uint32_t y, uint32_t cx, uint32_t cy)
    45174517{
    4518     PVGASTATE       pData = IDISPLAYPORT_2_VGASTATE(pInterface);
     4518    PVGASTATE       pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    45194519    int             rc = VINF_SUCCESS;
    4520     PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pData));
     4520    PDMDEV_ASSERT_EMT(VGASTATE2DEVINS(pThis));
    45214521    LogFlow(("vgaPortDisplayBlt: pvData=%p x=%d y=%d cx=%d cy=%d\n", pvData, x, y, cx, cy));
    45224522
     
    45254525     */
    45264526    if (    pvData
    4527         &&  x      <  pData->pDrv->cx
    4528         &&  cx     <= pData->pDrv->cx
    4529         &&  cx + x <= pData->pDrv->cx
    4530         &&  y      <  pData->pDrv->cy
    4531         &&  cy     <= pData->pDrv->cy
    4532         &&  cy + y <= pData->pDrv->cy)
     4527        &&  x      <  pThis->pDrv->cx
     4528        &&  cx     <= pThis->pDrv->cx
     4529        &&  cx + x <= pThis->pDrv->cx
     4530        &&  y      <  pThis->pDrv->cy
     4531        &&  cy     <= pThis->pDrv->cy
     4532        &&  cy + y <= pThis->pDrv->cy)
    45334533    {
    45344534        /*
     
    45364536         */
    45374537        size_t  cbPixelDst = 0;
    4538         switch (pData->pDrv->cBits)
     4538        switch (pThis->pDrv->cBits)
    45394539        {
    45404540            case 8:
     
    45624562            size_t      cbLineSrc   = RT_ALIGN_Z(cx, 4) * 4;
    45634563            uint8_t    *pu8Src      = (uint8_t *)pvData;
    4564             size_t      cbLineDst   = pData->pDrv->cbScanline;
    4565             uint8_t    *pu8Dst      = pData->pDrv->pu8Data + y * cbLineDst + x * cbPixelDst;
     4564            size_t      cbLineDst   = pThis->pDrv->cbScanline;
     4565            uint8_t    *pu8Dst      = pThis->pDrv->pu8Data + y * cbLineDst + x * cbPixelDst;
    45664566            uint32_t    cyLeft      = cy;
    4567             vga_draw_line_func *pfnVgaDrawLine = vga_draw_line_table[VGA_DRAW_LINE32 * 4 + get_depth_index(pData->pDrv->cBits)];
     4567            vga_draw_line_func *pfnVgaDrawLine = vga_draw_line_table[VGA_DRAW_LINE32 * 4 + get_depth_index(pThis->pDrv->cBits)];
    45684568            Assert(pfnVgaDrawLine);
    45694569            while (cyLeft-- > 0)
    45704570            {
    4571                 pfnVgaDrawLine(pData, pu8Dst, pu8Src, cx);
     4571                pfnVgaDrawLine(pThis, pu8Dst, pu8Src, cx);
    45724572                pu8Dst += cbLineDst;
    45734573                pu8Src += cbLineSrc;
     
    45774577             * Invalidate the area.
    45784578             */
    4579             pData->pDrv->pfnUpdateRect(pData->pDrv, x, y, cx, cy);
     4579            pThis->pDrv->pfnUpdateRect(pThis->pDrv, x, y, cx, cy);
    45804580        }
    45814581    }
     
    47504750static DECLCALLBACK(void) vgaTimerRefresh(PPDMDEVINS pDevIns, PTMTIMER pTimer)
    47514751{
    4752     PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
    4753     if (pData->pDrv)
    4754         pData->pDrv->pfnRefresh(pData->pDrv);
    4755     if (pData->cMilliesRefreshInterval)
    4756         TMTimerSetMillies(pTimer, pData->cMilliesRefreshInterval);
     4752    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4753    if (pThis->pDrv)
     4754        pThis->pDrv->pfnRefresh(pThis->pDrv);
     4755    if (pThis->cMilliesRefreshInterval)
     4756        TMTimerSetMillies(pTimer, pThis->cMilliesRefreshInterval);
    47574757}
    47584758
     
    47754775    int         rc;
    47764776    PPDMDEVINS  pDevIns = pPciDev->pDevIns;
    4777     PVGASTATE   pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4777    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    47784778    LogFlow(("vgaR3IORegionMap: iRegion=%d GCPhysAddress=%VGp cb=%#x enmType=%d\n", iRegion, GCPhysAddress, cb, enmType));
    47794779    AssertReturn(iRegion == 0 && enmType == PCI_ADDRESS_SPACE_MEM_PREFETCH, VERR_INTERNAL_ERROR);
     
    47904790            rc = PGMR3HandlerPhysicalRegister(PDMDevHlpGetVM(pDevIns),
    47914791                                              PGMPHYSHANDLERTYPE_PHYSICAL_WRITE,
    4792                                               GCPhysAddress, GCPhysAddress + (pData->vram_size - 1),
    4793                                               vgaR3LFBAccessHandler, pData,
     4792                                              GCPhysAddress, GCPhysAddress + (pThis->vram_size - 1),
     4793                                              vgaR3LFBAccessHandler, pThis,
    47944794                                              g_DeviceVga.szR0Mod, "vgaR0LFBAccessHandler", pDevIns->pvInstanceDataR0,
    47954795                                              g_DeviceVga.szGCMod, "vgaGCLFBAccessHandler", pDevIns->pvInstanceDataGC,
     
    47974797            AssertRC(rc);
    47984798            if (RT_SUCCESS(rc))
    4799                 pData->GCPhysVRAM = GCPhysAddress;
     4799                pThis->GCPhysVRAM = GCPhysAddress;
    48004800        }
    48014801    }
     
    48064806         * Deregister the access handler so PGM doesn't get upset.
    48074807         */
    4808         Assert(pData->GCPhysVRAM);
    4809         rc = PGMHandlerPhysicalDeregister(PDMDevHlpGetVM(pDevIns), pData->GCPhysVRAM);
     4808        Assert(pThis->GCPhysVRAM);
     4809        rc = PGMHandlerPhysicalDeregister(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
    48104810        AssertRC(rc);
    4811         pData->GCPhysVRAM = 0;
     4811        pThis->GCPhysVRAM = 0;
    48124812    }
    48134813    return rc;
     
    48574857static DECLCALLBACK(void)  vgaR3Reset(PPDMDEVINS pDevIns)
    48584858{
    4859     PVGASTATE       pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4859    PVGASTATE       pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    48604860    char           *pchStart;
    48614861    char           *pchEnd;
     
    48634863
    48644864    /* Clear the VRAM ourselves. */
    4865     if (pData->vram_ptrR3 && pData->vram_size)
     4865    if (pThis->vram_ptrR3 && pThis->vram_size)
    48664866    {
    48674867#ifdef LOG_ENABLED /** @todo separate function. */
    48684868        /* First dump the textmode contents to the log; handy for capturing Windows blue screens. */
    48694869        uint8_t graphic_mode;
    4870         VGAState *s = pData;
     4870        VGAState *s = pThis;
    48714871
    48724872        if (!(s->ar_index & 0x20)) {
     
    49404940
    49414941#endif /* LOG_ENABLED */
    4942         memset(pData->vram_ptrR3, 0, pData->vram_size);
     4942        memset(pThis->vram_ptrR3, 0, pThis->vram_size);
    49434943    }
    49444944
     
    49504950     */
    49514951    /* 1st part. */
    4952     pchStart = (char *)&pData->latch;
    4953     pchEnd   = (char *)&pData->invalidated_y_table;
     4952    pchStart = (char *)&pThis->latch;
     4953    pchEnd   = (char *)&pThis->invalidated_y_table;
    49544954    memset(pchStart, 0, pchEnd - pchStart);
    49554955
    49564956    /* 2nd part. */
    4957     pchStart = (char *)&pData->last_palette;
    4958     pchEnd   = (char *)&pData->u32Marker;
     4957    pchStart = (char *)&pThis->last_palette;
     4958    pchEnd   = (char *)&pThis->u32Marker;
    49594959    memset(pchStart, 0, pchEnd - pchStart);
    49604960
     
    49634963     * Restore and re-init some bits.
    49644964     */
    4965     pData->get_bpp        = vga_get_bpp;
    4966     pData->get_offsets    = vga_get_offsets;
    4967     pData->get_resolution = vga_get_resolution;
    4968     pData->graphic_mode   = -1;         /* Force full update. */
     4965    pThis->get_bpp        = vga_get_bpp;
     4966    pThis->get_offsets    = vga_get_offsets;
     4967    pThis->get_resolution = vga_get_resolution;
     4968    pThis->graphic_mode   = -1;         /* Force full update. */
    49694969#ifdef CONFIG_BOCHS_VBE
    4970     pData->vbe_regs[VBE_DISPI_INDEX_ID] = VBE_DISPI_ID0;
    4971     pData->vbe_regs[VBE_DISPI_INDEX_VBOX_VIDEO] = 0;
    4972     pData->vbe_bank_mask    = ((pData->vram_size >> 16) - 1);
     4970    pThis->vbe_regs[VBE_DISPI_INDEX_ID] = VBE_DISPI_ID0;
     4971    pThis->vbe_regs[VBE_DISPI_INDEX_VBOX_VIDEO] = 0;
     4972    pThis->vbe_bank_mask    = ((pThis->vram_size >> 16) - 1);
    49734973#endif /* CONFIG_BOCHS_VBE */
    49744974
     
    49764976     * Reset the LBF mapping.
    49774977     */
    4978     pData->fLFBUpdated = false;
    4979     if (    (   pData->fGCEnabled
    4980              || pData->fR0Enabled)
    4981         &&  pData->GCPhysVRAM
    4982         &&  pData->GCPhysVRAM != NIL_RTGCPHYS32)
    4983     {
    4984         int rc = PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pData->GCPhysVRAM);
     4978    pThis->fLFBUpdated = false;
     4979    if (    (   pThis->fGCEnabled
     4980             || pThis->fR0Enabled)
     4981        &&  pThis->GCPhysVRAM
     4982        &&  pThis->GCPhysVRAM != NIL_RTGCPHYS32)
     4983    {
     4984        int rc = PGMHandlerPhysicalReset(PDMDevHlpGetVM(pDevIns), pThis->GCPhysVRAM);
    49854985        AssertRC(rc);
    49864986    }
     
    49894989     * Reset the logo data.
    49904990     */
    4991     pData->LogoCommand = LOGO_CMD_NOP;
    4992     pData->offLogoData = 0;
     4991    pThis->LogoCommand = LOGO_CMD_NOP;
     4992    pThis->offLogoData = 0;
    49934993
    49944994    /* notify port handler */
    4995     if (pData->pDrv)
    4996         pData->pDrv->pfnReset(pData->pDrv);
     4995    if (pThis->pDrv)
     4996        pThis->pDrv->pfnReset(pThis->pDrv);
    49974997}
    49984998
     
    50105010    if (offDelta)
    50115011    {
    5012         PVGASTATE pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     5012        PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    50135013        LogFlow(("vgaRelocate: offDelta = %08X\n", offDelta));
    50145014
    5015         pData->RCPtrLFBHandler += offDelta;
    5016         pData->vram_ptrRC += offDelta;
    5017         pData->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     5015        pThis->RCPtrLFBHandler += offDelta;
     5016        pThis->vram_ptrRC += offDelta;
     5017        pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    50185018    }
    50195019}
     
    50355035static DECLCALLBACK(int)  vgaAttach(PPDMDEVINS pDevIns, unsigned iLUN)
    50365036{
    5037     PVGASTATE   pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     5037    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    50385038    switch (iLUN)
    50395039    {
     
    50415041        case 0:
    50425042        {
    5043             int rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pData->Base, &pData->pDrvBase, "Display Port");
     5043            int rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pThis->Base, &pThis->pDrvBase, "Display Port");
    50445044            if (RT_SUCCESS(rc))
    50455045            {
    5046                 pData->pDrv = (PDMIDISPLAYCONNECTOR*)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_DISPLAY_CONNECTOR);
    5047                 if (pData->pDrv)
     5046                pThis->pDrv = (PDMIDISPLAYCONNECTOR*)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_DISPLAY_CONNECTOR);
     5047                if (pThis->pDrv)
    50485048                {
    5049                     /* pData->pDrv->pu8Data can be NULL when there is no framebuffer. */
    5050                     if (    pData->pDrv->pfnRefresh
    5051                         &&  pData->pDrv->pfnResize
    5052                         &&  pData->pDrv->pfnUpdateRect)
     5049                    /* pThis->pDrv->pu8Data can be NULL when there is no framebuffer. */
     5050                    if (    pThis->pDrv->pfnRefresh
     5051                        &&  pThis->pDrv->pfnResize
     5052                        &&  pThis->pDrv->pfnUpdateRect)
    50535053                        rc = VINF_SUCCESS;
    50545054                    else
    50555055                    {
    5056                         Assert(pData->pDrv->pfnRefresh);
    5057                         Assert(pData->pDrv->pfnResize);
    5058                         Assert(pData->pDrv->pfnUpdateRect);
    5059                         pData->pDrv = NULL;
    5060                         pData->pDrvBase = NULL;
     5056                        Assert(pThis->pDrv->pfnRefresh);
     5057                        Assert(pThis->pDrv->pfnResize);
     5058                        Assert(pThis->pDrv->pfnUpdateRect);
     5059                        pThis->pDrv = NULL;
     5060                        pThis->pDrvBase = NULL;
    50615061                        rc = VERR_INTERNAL_ERROR;
    50625062                    }
     
    50655065                {
    50665066                    AssertMsgFailed(("LUN #0 doesn't have a display connector interface! rc=%Vrc\n", rc));
    5067                     pData->pDrvBase = NULL;
     5067                    pThis->pDrvBase = NULL;
    50685068                    rc = VERR_PDM_MISSING_INTERFACE;
    50695069                }
     
    51025102     * Reset the interfaces and update the controller state.
    51035103     */
    5104     PVGASTATE   pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     5104    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    51055105    switch (iLUN)
    51065106    {
    51075107        /* LUN #0: Display port. */
    51085108        case 0:
    5109             pData->pDrv = NULL;
    5110             pData->pDrvBase = NULL;
     5109            pThis->pDrv = NULL;
     5110            pThis->pDrvBase = NULL;
    51115111            break;
    51125112
     
    51385138    int         rc;
    51395139    unsigned i;
    5140     PVGASTATE   pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     5140    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    51415141    PVM         pVM = PDMDevHlpGetVM(pDevIns);
    51425142#ifdef VBE_NEW_DYN_LIST
     
    51945194     * Init state data.
    51955195     */
    5196     rc = CFGMR3QueryU32Def(pCfgHandle, "VRamSize", &pData->vram_size, VGA_VRAM_DEFAULT);
     5196    rc = CFGMR3QueryU32Def(pCfgHandle, "VRamSize", &pThis->vram_size, VGA_VRAM_DEFAULT);
    51975197    AssertLogRelRCReturn(rc, rc);
    5198     if (pData->vram_size > VGA_VRAM_MAX)
     5198    if (pThis->vram_size > VGA_VRAM_MAX)
    51995199        return PDMDevHlpVMSetError(pDevIns, VERR_INVALID_PARAMETER, RT_SRC_POS,
    5200                                    "VRamSize is too large, %#x, max %#x", pData->vram_size, VGA_VRAM_MAX);
    5201     if (pData->vram_size < VGA_VRAM_MIN)
     5200                                   "VRamSize is too large, %#x, max %#x", pThis->vram_size, VGA_VRAM_MAX);
     5201    if (pThis->vram_size < VGA_VRAM_MIN)
    52025202        return PDMDevHlpVMSetError(pDevIns, VERR_INVALID_PARAMETER, RT_SRC_POS,
    5203                                    "VRamSize is too small, %#x, max %#x", pData->vram_size, VGA_VRAM_MIN);
     5203                                   "VRamSize is too small, %#x, max %#x", pThis->vram_size, VGA_VRAM_MIN);
    52045204
    52055205    rc = CFGMR3QueryBoolDef(pCfgHandle, "GCEnabled", &f, true);
    52065206    AssertLogRelRCReturn(rc, rc);
    5207     Log(("VGA: fGCEnabled=%d\n", pData->fGCEnabled));
     5207    Log(("VGA: fGCEnabled=%d\n", pThis->fGCEnabled));
    52085208
    52095209    rc = CFGMR3QueryBoolDef(pCfgHandle, "R0Enabled", &f, true);
    52105210    AssertLogRelRCReturn(rc, rc);
    5211     Log(("VGA: VRamSize=%#x fGCenabled=%RTbool fR0Enabled=%RTbool\n", pData->vram_size, pData->fGCEnabled, pData->fR0Enabled));
    5212 
    5213     pData->pDevInsR3 = pDevIns;
    5214     pData->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    5215     pData->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     5211    Log(("VGA: VRamSize=%#x fGCenabled=%RTbool fR0Enabled=%RTbool\n", pThis->vram_size, pThis->fGCEnabled, pThis->fR0Enabled));
     5212
     5213    pThis->pDevInsR3 = pDevIns;
     5214    pThis->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
     5215    pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    52165216
    52175217    vgaR3Reset(pDevIns);
    52185218
    52195219    /* The PCI devices configuration. */
    5220     PCIDevSetVendorId(  &pData->Dev, 0x80ee);   /* PCI vendor, just a free bogus value */
    5221     PCIDevSetDeviceId(  &pData->Dev, 0xbeef);
    5222     PCIDevSetClassSub(  &pData->Dev,   0x00);   /* VGA controller */
    5223     PCIDevSetClassBase( &pData->Dev,   0x03);
    5224     PCIDevSetHeaderType(&pData->Dev,   0x00);
     5220    PCIDevSetVendorId(  &pThis->Dev, 0x80ee);   /* PCI vendor, just a free bogus value */
     5221    PCIDevSetDeviceId(  &pThis->Dev, 0xbeef);
     5222    PCIDevSetClassSub(  &pThis->Dev,   0x00);   /* VGA controller */
     5223    PCIDevSetClassBase( &pThis->Dev,   0x03);
     5224    PCIDevSetHeaderType(&pThis->Dev,   0x00);
    52255225
    52265226    /* The LBF access handler - error handling is better here than in the map function.  */
    5227     rc = PDMR3GetSymbolGCLazy(pVM, pDevIns->pDevReg->szGCMod, "vgaGCLFBAccessHandler", &pData->RCPtrLFBHandler);
     5227    rc = PDMR3GetSymbolGCLazy(pVM, pDevIns->pDevReg->szGCMod, "vgaGCLFBAccessHandler", &pThis->RCPtrLFBHandler);
    52285228    if (RT_FAILURE(rc))
    52295229    {
     
    52335233
    52345234    /* the interfaces. */
    5235     pData->Base.pfnQueryInterface       = vgaPortQueryInterface;
    5236 
    5237     pData->Port.pfnUpdateDisplay        = vgaPortUpdateDisplay;
    5238     pData->Port.pfnUpdateDisplayAll     = vgaPortUpdateDisplayAll;
    5239     pData->Port.pfnQueryColorDepth      = vgaPortQueryColorDepth;
    5240     pData->Port.pfnSetRefreshRate       = vgaPortSetRefreshRate;
    5241     pData->Port.pfnSnapshot             = vgaPortSnapshot;
    5242     pData->Port.pfnDisplayBlt           = vgaPortDisplayBlt;
    5243     pData->Port.pfnUpdateDisplayRect    = vgaPortUpdateDisplayRect;
    5244     pData->Port.pfnSetRenderVRAM        = vgaPortSetRenderVRAM;
     5235    pThis->Base.pfnQueryInterface       = vgaPortQueryInterface;
     5236
     5237    pThis->Port.pfnUpdateDisplay        = vgaPortUpdateDisplay;
     5238    pThis->Port.pfnUpdateDisplayAll     = vgaPortUpdateDisplayAll;
     5239    pThis->Port.pfnQueryColorDepth      = vgaPortQueryColorDepth;
     5240    pThis->Port.pfnSetRefreshRate       = vgaPortSetRefreshRate;
     5241    pThis->Port.pfnSnapshot             = vgaPortSnapshot;
     5242    pThis->Port.pfnDisplayBlt           = vgaPortDisplayBlt;
     5243    pThis->Port.pfnUpdateDisplayRect    = vgaPortUpdateDisplayRect;
     5244    pThis->Port.pfnSetRenderVRAM        = vgaPortSetRenderVRAM;
    52455245
    52465246
     
    52485248     * Allocate the VRAM and map the first 256KB of it into GC so we can speed up VGA support.
    52495249     */
    5250     rc = PDMDevHlpMMIO2Register(pDevIns, 0 /* iRegion */, pData->vram_size, 0, (void **)&pData->vram_ptrR3, "VRam");
    5251     AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMMIO2Register(%#x,) -> %Rrc\n", pData->vram_size, rc), rc);
    5252     pData->vram_ptrR0 = (RTR0PTR)pData->vram_ptrR3; /** @todo #1865 Map parts into R0 or just use PGM access (Mac only). */
     5250    rc = PDMDevHlpMMIO2Register(pDevIns, 0 /* iRegion */, pThis->vram_size, 0, (void **)&pThis->vram_ptrR3, "VRam");
     5251    AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMMIO2Register(%#x,) -> %Rrc\n", pThis->vram_size, rc), rc);
     5252    pThis->vram_ptrR0 = (RTR0PTR)pThis->vram_ptrR3; /** @todo #1865 Map parts into R0 or just use PGM access (Mac only). */
    52535253
    52545254    RTRCPTR pRCMapping = 0;
    52555255    rc = PDMDevHlpMMHyperMapMMIO2(pDevIns, 0 /* iRegion */, 0 /* off */,  VGA_MAPPING_SIZE, "VGA VRam", &pRCMapping);
    5256     AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMMHyperMapMMIO2(%#x,) -> %Rrc\n", pData->vram_size, rc), rc);
    5257     pData->vram_ptrRC = pRCMapping;
     5256    AssertLogRelMsgRCReturn(rc, ("PDMDevHlpMMHyperMapMMIO2(%#x,) -> %Rrc\n", pThis->vram_size, rc), rc);
     5257    pThis->vram_ptrRC = pRCMapping;
    52585258
    52595259    /*
     
    52975297
    52985298    /* guest context extension */
    5299     if (pData->fGCEnabled)
     5299    if (pThis->fGCEnabled)
    53005300    {
    53015301        rc = PDMDevHlpIOPortRegisterGC(pDevIns,  0x3c0, 16, 0, "vgaIOPortWrite",       "vgaIOPortRead", NULL, NULL,     "VGA - 3c0 (GC)");
     
    53385338
    53395339    /* R0 context extension */
    5340     if (pData->fR0Enabled)
     5340    if (pThis->fR0Enabled)
    53415341    {
    53425342        rc = PDMDevHlpIOPortRegisterR0(pDevIns,  0x3c0, 16, 0, "vgaIOPortWrite",       "vgaIOPortRead", NULL, NULL,     "VGA - 3c0 (GC)");
     
    53825382    if (RT_FAILURE(rc))
    53835383        return rc;
    5384     if (pData->fGCEnabled)
     5384    if (pThis->fGCEnabled)
    53855385    {
    53865386        rc = PDMDevHlpMMIORegisterGC(pDevIns, 0x000a0000, 0x00020000, 0, "vgaMMIOWrite", "vgaMMIORead", "vgaMMIOFill");
     
    53885388            return rc;
    53895389    }
    5390     if (pData->fR0Enabled)
     5390    if (pThis->fR0Enabled)
    53915391    {
    53925392        rc = PDMDevHlpMMIORegisterR0(pDevIns, 0x000a0000, 0x00020000, 0, "vgaMMIOWrite", "vgaMMIORead", "vgaMMIOFill");
     
    54075407
    54085408    /* save */
    5409     rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */, sizeof(*pData),
     5409    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */, sizeof(*pThis),
    54105410                                          NULL, vgaR3SaveExec, NULL,
    54115411                                          NULL, vgaR3LoadExec, NULL);
     
    54145414
    54155415    /* PCI */
    5416     rc = PDMDevHlpPCIRegister(pDevIns, &pData->Dev);
     5416    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->Dev);
    54175417    if (RT_FAILURE(rc))
    54185418        return rc;
    5419     /*AssertMsg(pData->Dev.devfn == 16 || iInstance != 0, ("pData->Dev.devfn=%d\n", pData->Dev.devfn));*/
    5420     if (pData->Dev.devfn != 16 && iInstance == 0)
    5421         Log(("!!WARNING!!: pData->dev.devfn=%d (ignore if testcase or not started by Main)\n", pData->Dev.devfn));
    5422 
    5423     rc = PDMDevHlpPCIIORegionRegister(pDevIns, 0 /* iRegion */, pData->vram_size, PCI_ADDRESS_SPACE_MEM_PREFETCH, vgaR3IORegionMap);
     5419    /*AssertMsg(pThis->Dev.devfn == 16 || iInstance != 0, ("pThis->Dev.devfn=%d\n", pThis->Dev.devfn));*/
     5420    if (pThis->Dev.devfn != 16 && iInstance == 0)
     5421        Log(("!!WARNING!!: pThis->dev.devfn=%d (ignore if testcase or not started by Main)\n", pThis->Dev.devfn));
     5422
     5423    rc = PDMDevHlpPCIIORegionRegister(pDevIns, 0 /* iRegion */, pThis->vram_size, PCI_ADDRESS_SPACE_MEM_PREFETCH, vgaR3IORegionMap);
    54245424    if (RT_FAILURE(rc))
    54255425        return rc;
     
    54285428     * Create the refresh timer.
    54295429     */
    5430     rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_REAL, vgaTimerRefresh, "VGA Refresh Timer", &pData->RefreshTimer);
     5430    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_REAL, vgaTimerRefresh, "VGA Refresh Timer", &pThis->RefreshTimer);
    54315431    if (RT_FAILURE(rc))
    54325432        return rc;
     
    54605460     * Allocate and initialize buffer for the VBE BIOS Extra Data.
    54615461     */
    5462     pData->cbVBEExtraData = sizeof(VBEHEADER) + cb;
    5463     pData->pu8VBEExtraData = (uint8_t *)PDMDevHlpMMHeapAllocZ(pDevIns, pData->cbVBEExtraData);
    5464     if (!pData->pu8VBEExtraData)
     5462    pThis->cbVBEExtraData = sizeof(VBEHEADER) + cb;
     5463    pThis->pu8VBEExtraData = (uint8_t *)PDMDevHlpMMHeapAllocZ(pDevIns, pThis->cbVBEExtraData);
     5464    if (!pThis->pu8VBEExtraData)
    54655465        return VERR_NO_MEMORY;
    54665466
    5467     pVBEDataHdr = (PVBEHEADER)pData->pu8VBEExtraData;
     5467    pVBEDataHdr = (PVBEHEADER)pThis->pu8VBEExtraData;
    54685468    pVBEDataHdr->u16Signature = VBEHEADER_MAGIC;
    54695469    pVBEDataHdr->cbData = cb;
     
    54845484                * mode_info_list[i].info.YResolution
    54855485                * pixelWidth;
    5486         if (reqSize >= pData->vram_size)
     5486        if (reqSize >= pThis->vram_size)
    54875487            continue;
    54885488        *pCurMode = mode_info_list[i];
     
    55145514                pixelWidth = (pDefMode->info.BitsPerPixel + 7) / 8;
    55155515            reqSize = pDefMode->info.XResolution * pDefMode->info.YResolution *  pixelWidth;
    5516             if (reqSize >= pData->vram_size)
     5516            if (reqSize >= pThis->vram_size)
    55175517                continue;
    55185518            *pCurMode = *pDefMode;
     
    55535553                }
    55545554#ifdef VRAM_SIZE_FIX
    5555                 if (cx * cy * cBits / 8 >= pData->vram_size)
     5555                if (cx * cy * cBits / 8 >= pThis->vram_size)
    55565556                {
    55575557                    AssertMsgFailed(("Configuration error: custom video mode %dx%dx%dbits is too large for the virtual video memory of %dMb.  Please increase the video memory size.\n",
    5558                                      cx, cy, cBits, pData->vram_size / _1M));
     5558                                     cx, cy, cBits, pThis->vram_size / _1M));
    55595559                    return VERR_VGA_INVALID_CUSTOM_MODE;
    55605560                }
     
    56845684     * Get the Logo file name.
    56855685     */
    5686     rc = CFGMR3QueryStringAlloc(pCfgHandle, "LogoFile", &pData->pszLogoFile);
     5686    rc = CFGMR3QueryStringAlloc(pCfgHandle, "LogoFile", &pThis->pszLogoFile);
    56875687    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    5688         pData->pszLogoFile = NULL;
     5688        pThis->pszLogoFile = NULL;
    56895689    else if (RT_FAILURE(rc))
    56905690        return PDMDEV_SET_ERROR(pDevIns, rc,
    56915691                                N_("Configuration error: Querying \"LogoFile\" as a string failed"));
    5692     else if (!*pData->pszLogoFile)
    5693     {
    5694         MMR3HeapFree(pData->pszLogoFile);
    5695         pData->pszLogoFile = NULL;
     5692    else if (!*pThis->pszLogoFile)
     5693    {
     5694        MMR3HeapFree(pThis->pszLogoFile);
     5695        pThis->pszLogoFile = NULL;
    56965696    }
    56975697
     
    57015701    LogoHdr.cbLogo = g_cbVgaDefBiosLogo;
    57025702    RTFILE FileLogo = NIL_RTFILE;
    5703     if (pData->pszLogoFile)
    5704     {
    5705         rc = RTFileOpen(&FileLogo, pData->pszLogoFile,
     5703    if (pThis->pszLogoFile)
     5704    {
     5705        rc = RTFileOpen(&FileLogo, pThis->pszLogoFile,
    57065706                        RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
    57075707        if (RT_SUCCESS(rc))
     
    57225722             * Ignore failure and fall back to the default logo.
    57235723             */
    5724             LogRel(("vgaR3Construct: Failed to open logo file '%s', rc=%Vrc!\n", pData->pszLogoFile, rc));
     5724            LogRel(("vgaR3Construct: Failed to open logo file '%s', rc=%Vrc!\n", pThis->pszLogoFile, rc));
    57255725            if (FileLogo != NIL_RTFILE)
    57265726                RTFileClose(FileLogo);
    57275727            FileLogo = NIL_RTFILE;
    5728             MMR3HeapFree(pData->pszLogoFile);
    5729             pData->pszLogoFile = NULL;
     5728            MMR3HeapFree(pThis->pszLogoFile);
     5729            pThis->pszLogoFile = NULL;
    57305730        }
    57315731    }
     
    57345734     * Disable graphic splash screen if it doesn't fit into VRAM.
    57355735     */
    5736     if (pData->vram_size < LOGO_MAX_SIZE)
     5736    if (pThis->vram_size < LOGO_MAX_SIZE)
    57375737        LogoHdr.fu8FadeIn = LogoHdr.fu8FadeOut = LogoHdr.u16LogoMillies = 0;
    57385738
     
    57415741     * RT_MAX() is applied to let us fall back to default logo on read failure.
    57425742     */
    5743     pData->cbLogo = sizeof(LogoHdr) + LogoHdr.cbLogo;
    5744     pData->pu8Logo = (uint8_t *)PDMDevHlpMMHeapAlloc(pDevIns, RT_MAX(pData->cbLogo, g_cbVgaDefBiosLogo + sizeof(LogoHdr)));
    5745     if (pData->pu8Logo)
     5743    pThis->cbLogo = sizeof(LogoHdr) + LogoHdr.cbLogo;
     5744    pThis->pu8Logo = (uint8_t *)PDMDevHlpMMHeapAlloc(pDevIns, RT_MAX(pThis->cbLogo, g_cbVgaDefBiosLogo + sizeof(LogoHdr)));
     5745    if (pThis->pu8Logo)
    57465746    {
    57475747        /*
    57485748         * Write the logo header.
    57495749         */
    5750         PLOGOHDR pLogoHdr = (PLOGOHDR)pData->pu8Logo;
     5750        PLOGOHDR pLogoHdr = (PLOGOHDR)pThis->pu8Logo;
    57515751        *pLogoHdr = LogoHdr;
    57525752
     
    57545754         * Write the logo bitmap.
    57555755         */
    5756         if (pData->pszLogoFile)
     5756        if (pThis->pszLogoFile)
    57575757        {
    57585758            rc = RTFileRead(FileLogo, pLogoHdr + 1, LogoHdr.cbLogo, NULL);
     
    57675767            memcpy(pLogoHdr + 1, g_abVgaDefBiosLogo, LogoHdr.cbLogo);
    57685768
    5769         rc = vbeParseBitmap(pData);
     5769        rc = vbeParseBitmap(pThis);
    57705770        if (RT_FAILURE(rc))
    57715771        {
     
    57755775        }
    57765776
    5777         rc = vbeParseBitmap(pData);
     5777        rc = vbeParseBitmap(pThis);
    57785778        if (RT_FAILURE(rc))
    57795779            AssertReleaseMsgFailed(("Internal bitmap failed! vbeParseBitmap() -> %Vrc\n", rc));
     
    57935793     * Statistics.
    57945794     */
    5795     STAM_REG(pVM, &pData->StatGCMemoryRead,     STAMTYPE_PROFILE, "/Devices/VGA/GC/Memory/Read",         STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCMemoryRead() body.");
    5796     STAM_REG(pVM, &pData->StatGCMemoryWrite,    STAMTYPE_PROFILE, "/Devices/VGA/GC/Memory/Write",        STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCMemoryWrite() body.");
    5797     STAM_REG(pVM, &pData->StatGCIOPortRead,     STAMTYPE_PROFILE, "/Devices/VGA/GC/IOPort/Read",         STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCIOPortRead() body.");
    5798     STAM_REG(pVM, &pData->StatGCIOPortWrite,    STAMTYPE_PROFILE, "/Devices/VGA/GC/IOPort/Write",        STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCIOPortWrite() body.");
     5795    STAM_REG(pVM, &pThis->StatGCMemoryRead,     STAMTYPE_PROFILE, "/Devices/VGA/GC/Memory/Read",         STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCMemoryRead() body.");
     5796    STAM_REG(pVM, &pThis->StatGCMemoryWrite,    STAMTYPE_PROFILE, "/Devices/VGA/GC/Memory/Write",        STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCMemoryWrite() body.");
     5797    STAM_REG(pVM, &pThis->StatGCIOPortRead,     STAMTYPE_PROFILE, "/Devices/VGA/GC/IOPort/Read",         STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCIOPortRead() body.");
     5798    STAM_REG(pVM, &pThis->StatGCIOPortWrite,    STAMTYPE_PROFILE, "/Devices/VGA/GC/IOPort/Write",        STAMUNIT_TICKS_PER_CALL, "Profiling of the VGAGCIOPortWrite() body.");
    57995799
    58005800    return rc;
     
    58135813{
    58145814#ifdef VBE_NEW_DYN_LIST
    5815     PVGASTATE   pData = PDMINS_2_DATA(pDevIns, PVGASTATE);
     5815    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    58165816    LogFlow(("vgaR3Destruct:\n"));
    58175817
     
    58195819     * Free MM heap pointers.
    58205820     */
    5821     if (pData->pu8VBEExtraData)
    5822     {
    5823         MMR3HeapFree(pData->pu8VBEExtraData);
    5824         pData->pu8VBEExtraData = NULL;
     5821    if (pThis->pu8VBEExtraData)
     5822    {
     5823        MMR3HeapFree(pThis->pu8VBEExtraData);
     5824        pThis->pu8VBEExtraData = NULL;
    58255825    }
    58265826#endif
  • trunk/src/VBox/Devices/Input/DevPS2.cpp

    r11268 r11269  
    14271427static DECLCALLBACK(void *)  kbdKeyboardQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    14281428{
    1429     KBDState *pData = (KBDState *)((uintptr_t)pInterface -  RT_OFFSETOF(KBDState, Keyboard.Base));
     1429    KBDState *pThis = (KBDState *)((uintptr_t)pInterface -  RT_OFFSETOF(KBDState, Keyboard.Base));
    14301430    switch (enmInterface)
    14311431    {
    14321432        case PDMINTERFACE_BASE:
    1433             return &pData->Keyboard.Base;
     1433            return &pThis->Keyboard.Base;
    14341434        case PDMINTERFACE_KEYBOARD_PORT:
    1435             return &pData->Keyboard.Port;
     1435            return &pThis->Keyboard.Port;
    14361436        default:
    14371437            return NULL;
     
    14541454static DECLCALLBACK(int) kbdKeyboardPutEvent(PPDMIKEYBOARDPORT pInterface, uint8_t u8KeyCode)
    14551455{
    1456     KBDState *pData = IKEYBOARDPORT_2_KBDSTATE(pInterface);
    1457     pc_kbd_put_keycode(pData, u8KeyCode);
     1456    KBDState *pThis = IKEYBOARDPORT_2_KBDSTATE(pInterface);
     1457    pc_kbd_put_keycode(pThis, u8KeyCode);
    14581458    return VINF_SUCCESS;
    14591459}
     
    14721472static DECLCALLBACK(void *)  kbdMouseQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    14731473{
    1474     KBDState *pData = (KBDState *)((uintptr_t)pInterface -  RT_OFFSETOF(KBDState, Mouse.Base));
     1474    KBDState *pThis = (KBDState *)((uintptr_t)pInterface -  RT_OFFSETOF(KBDState, Mouse.Base));
    14751475    switch (enmInterface)
    14761476    {
    14771477        case PDMINTERFACE_BASE:
    1478             return &pData->Mouse.Base;
     1478            return &pThis->Mouse.Base;
    14791479        case PDMINTERFACE_MOUSE_PORT:
    1480             return &pData->Mouse.Port;
     1480            return &pThis->Mouse.Port;
    14811481        default:
    14821482            return NULL;
     
    15021502static DECLCALLBACK(int) kbdMousePutEvent(PPDMIMOUSEPORT pInterface, int32_t i32DeltaX, int32_t i32DeltaY, int32_t i32DeltaZ, uint32_t fButtonStates)
    15031503{
    1504     KBDState *pData = IMOUSEPORT_2_KBDSTATE(pInterface);
    1505     pc_kbd_mouse_event(pData, i32DeltaX, i32DeltaY, i32DeltaZ, fButtonStates);
     1504    KBDState *pThis = IMOUSEPORT_2_KBDSTATE(pInterface);
     1505    pc_kbd_mouse_event(pThis, i32DeltaX, i32DeltaY, i32DeltaZ, fButtonStates);
    15061506    return VINF_SUCCESS;
    15071507}
     
    15291529{
    15301530    int         rc;
    1531     KBDState   *pData = PDMINS_2_DATA(pDevIns, KBDState *);
     1531    KBDState   *pThis = PDMINS_2_DATA(pDevIns, KBDState *);
    15321532    switch (iLUN)
    15331533    {
    15341534        /* LUN #0: keyboard */
    15351535        case 0:
    1536             rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pData->Keyboard.Base, &pData->Keyboard.pDrvBase, "Keyboard Port");
     1536            rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pThis->Keyboard.Base, &pThis->Keyboard.pDrvBase, "Keyboard Port");
    15371537            if (RT_SUCCESS(rc))
    15381538            {
    1539                 pData->Keyboard.pDrv = (PDMIKEYBOARDCONNECTOR*)(pData->Keyboard.pDrvBase->pfnQueryInterface(pData->Keyboard.pDrvBase, PDMINTERFACE_KEYBOARD_CONNECTOR));
    1540                 if (!pData->Keyboard.pDrv)
     1539                pThis->Keyboard.pDrv = (PDMIKEYBOARDCONNECTOR*)(pThis->Keyboard.pDrvBase->pfnQueryInterface(pThis->Keyboard.pDrvBase, PDMINTERFACE_KEYBOARD_CONNECTOR));
     1540                if (!pThis->Keyboard.pDrv)
    15411541                {
    15421542                    AssertLogRelMsgFailed(("LUN #0 doesn't have a keyboard interface! rc=%Vrc\n", rc));
     
    15551555        /* LUN #1: aux/mouse */
    15561556        case 1:
    1557             rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pData->Mouse.Base, &pData->Mouse.pDrvBase, "Aux (Mouse) Port");
     1557            rc = PDMDevHlpDriverAttach(pDevIns, iLUN, &pThis->Mouse.Base, &pThis->Mouse.pDrvBase, "Aux (Mouse) Port");
    15581558            if (RT_SUCCESS(rc))
    15591559            {
    1560                 pData->Mouse.pDrv = (PDMIMOUSECONNECTOR*)(pData->Mouse.pDrvBase->pfnQueryInterface(pData->Mouse.pDrvBase, PDMINTERFACE_MOUSE_CONNECTOR));
    1561                 if (!pData->Mouse.pDrv)
     1560                pThis->Mouse.pDrv = (PDMIMOUSECONNECTOR*)(pThis->Mouse.pDrvBase->pfnQueryInterface(pThis->Mouse.pDrvBase, PDMINTERFACE_MOUSE_CONNECTOR));
     1561                if (!pThis->Mouse.pDrv)
    15621562                {
    15631563                    AssertLogRelMsgFailed(("LUN #1 doesn't have a mouse interface! rc=%Vrc\n", rc));
     
    16031603     * Reset the interfaces and update the controller state.
    16041604     */
    1605     KBDState   *pData = PDMINS_2_DATA(pDevIns, KBDState *);
     1605    KBDState   *pThis = PDMINS_2_DATA(pDevIns, KBDState *);
    16061606    switch (iLUN)
    16071607    {
    16081608        /* LUN #0: keyboard */
    16091609        case 0:
    1610             pData->Keyboard.pDrv = NULL;
    1611             pData->Keyboard.pDrvBase = NULL;
     1610            pThis->Keyboard.pDrv = NULL;
     1611            pThis->Keyboard.pDrvBase = NULL;
    16121612            break;
    16131613
    16141614        /* LUN #1: aux/mouse */
    16151615        case 1:
    1616             pData->Mouse.pDrv = NULL;
    1617             pData->Mouse.pDrvBase = NULL;
     1616            pThis->Mouse.pDrv = NULL;
     1617            pThis->Mouse.pDrvBase = NULL;
    16181618            break;
    16191619
     
    16301630static DECLCALLBACK(void) kdbRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    16311631{
    1632     KBDState   *pData = PDMINS_2_DATA(pDevIns, KBDState *);
    1633     pData->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     1632    KBDState   *pThis = PDMINS_2_DATA(pDevIns, KBDState *);
     1633    pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    16341634}
    16351635
     
    16501650static DECLCALLBACK(int) kbdConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    16511651{
    1652     KBDState   *pData = PDMINS_2_DATA(pDevIns, KBDState *);
     1652    KBDState   *pThis = PDMINS_2_DATA(pDevIns, KBDState *);
    16531653    int         rc;
    16541654    bool        fGCEnabled;
     
    16731673     * Initialize the interfaces.
    16741674     */
    1675     pData->pDevInsR3 = pDevIns;
    1676     pData->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    1677     pData->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    1678     pData->Keyboard.Base.pfnQueryInterface  = kbdKeyboardQueryInterface;
    1679     pData->Keyboard.Port.pfnPutEvent        = kbdKeyboardPutEvent;
    1680 
    1681     pData->Mouse.Base.pfnQueryInterface     = kbdMouseQueryInterface;
    1682     pData->Mouse.Port.pfnPutEvent           = kbdMousePutEvent;
     1675    pThis->pDevInsR3 = pDevIns;
     1676    pThis->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
     1677    pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     1678    pThis->Keyboard.Base.pfnQueryInterface  = kbdKeyboardQueryInterface;
     1679    pThis->Keyboard.Port.pfnPutEvent        = kbdKeyboardPutEvent;
     1680
     1681    pThis->Mouse.Base.pfnQueryInterface     = kbdMouseQueryInterface;
     1682    pThis->Mouse.Port.pfnPutEvent           = kbdMousePutEvent;
    16831683
    16841684    /*
     
    17091709            return rc;
    17101710    }
    1711     rc = PDMDevHlpSSMRegister(pDevIns, g_DevicePS2KeyboardMouse.szDeviceName, iInstance, PCKBD_SAVED_STATE_VERSION, sizeof(*pData),
     1711    rc = PDMDevHlpSSMRegister(pDevIns, g_DevicePS2KeyboardMouse.szDeviceName, iInstance, PCKBD_SAVED_STATE_VERSION, sizeof(*pThis),
    17121712                              NULL, kbdSaveExec, NULL,
    17131713                              NULL, kbdLoadExec, NULL);
  • trunk/src/VBox/Devices/Input/DrvKeyboardQueue.cpp

    r11267 r11269  
    164164static DECLCALLBACK(bool) drvKbdQueueConsumer(PPDMDRVINS pDrvIns, PPDMQUEUEITEMCORE pItemCore)
    165165{
    166     PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     166    PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    167167    PDRVKBDQUEUEITEM    pItem = (PDRVKBDQUEUEITEM)pItemCore;
    168     int rc = pData->pUpPort->pfnPutEvent(pData->pUpPort, pItem->u8KeyCode);
     168    int rc = pThis->pUpPort->pfnPutEvent(pThis->pUpPort, pItem->u8KeyCode);
    169169    return RT_SUCCESS(rc);
    170170}
     
    181181static DECLCALLBACK(void) drvKbdQueuePowerOn(PPDMDRVINS pDrvIns)
    182182{
    183     PDRVKBDQUEUE    pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    184     pData->fInactive = false;
     183    PDRVKBDQUEUE    pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     184    pThis->fInactive = false;
    185185}
    186186
     
    194194static DECLCALLBACK(void)  drvKbdQueueReset(PPDMDRVINS pDrvIns)
    195195{
    196     //PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     196    //PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    197197    /** @todo purge the queue on reset. */
    198198}
     
    207207static DECLCALLBACK(void)  drvKbdQueueSuspend(PPDMDRVINS pDrvIns)
    208208{
    209     PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    210     pData->fInactive = true;
     209    PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     210    pThis->fInactive = true;
    211211}
    212212
     
    220220static DECLCALLBACK(void)  drvKbdQueueResume(PPDMDRVINS pDrvIns)
    221221{
    222     PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    223     pData->fInactive = false;
     222    PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     223    pThis->fInactive = false;
    224224}
    225225
     
    232232static DECLCALLBACK(void) drvKbdQueuePowerOff(PPDMDRVINS pDrvIns)
    233233{
    234     PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    235     pData->fInactive = true;
     234    PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     235    pThis->fInactive = true;
    236236}
    237237
  • trunk/src/VBox/Devices/Input/DrvMouseQueue.cpp

    r11267 r11269  
    152152static DECLCALLBACK(bool) drvMouseQueueConsumer(PPDMDRVINS pDrvIns, PPDMQUEUEITEMCORE pItemCore)
    153153{
    154     PDRVMOUSEQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
     154    PDRVMOUSEQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
    155155    PDRVMOUSEQUEUEITEM    pItem = (PDRVMOUSEQUEUEITEM)pItemCore;
    156     int rc = pData->pUpPort->pfnPutEvent(pData->pUpPort, pItem->i32DeltaX, pItem->i32DeltaY, pItem->i32DeltaZ, pItem->fButtonStates);
     156    int rc = pThis->pUpPort->pfnPutEvent(pThis->pUpPort, pItem->i32DeltaX, pItem->i32DeltaY, pItem->i32DeltaZ, pItem->fButtonStates);
    157157    return RT_SUCCESS(rc);
    158158}
     
    169169static DECLCALLBACK(void) drvMouseQueuePowerOn(PPDMDRVINS pDrvIns)
    170170{
    171     PDRVMOUSEQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
    172     pData->fInactive = false;
     171    PDRVMOUSEQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
     172    pThis->fInactive = false;
    173173}
    174174
     
    182182static DECLCALLBACK(void)  drvMouseQueueReset(PPDMDRVINS pDrvIns)
    183183{
    184     //PDRVKBDQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
     184    //PDRVKBDQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVKBDQUEUE);
    185185    /** @todo purge the queue on reset. */
    186186}
     
    195195static DECLCALLBACK(void)  drvMouseQueueSuspend(PPDMDRVINS pDrvIns)
    196196{
    197     PDRVMOUSEQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
    198     pData->fInactive = true;
     197    PDRVMOUSEQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
     198    pThis->fInactive = true;
    199199}
    200200
     
    208208static DECLCALLBACK(void)  drvMouseQueueResume(PPDMDRVINS pDrvIns)
    209209{
    210     PDRVMOUSEQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
    211     pData->fInactive = false;
     210    PDRVMOUSEQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
     211    pThis->fInactive = false;
    212212}
    213213
     
    220220static DECLCALLBACK(void) drvMouseQueuePowerOff(PPDMDRVINS pDrvIns)
    221221{
    222     PDRVMOUSEQUEUE        pData = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
    223     pData->fInactive = true;
     222    PDRVMOUSEQUEUE        pThis = PDMINS_2_DATA(pDrvIns, PDRVMOUSEQUEUE);
     223    pThis->fInactive = true;
    224224}
    225225
  • trunk/src/VBox/Devices/Network/DevPCNet.cpp

    r11201 r11269  
    332332#define PCNETSTATE_2_DEVINS(pPCNet)            ((pPCNet)->CTX_SUFF(pDevIns))
    333333#define PCIDEV_2_PCNETSTATE(pPciDev)           ((PCNetState *)(pPciDev))
    334 #define PCNET_INST_NR                          (PCNETSTATE_2_DEVINS(pData)->iInstance)
     334#define PCNET_INST_NR                          (PCNETSTATE_2_DEVINS(pThis)->iInstance)
    335335
    336336/* BUS CONFIGURATION REGISTERS */
     
    613613
    614614#if defined(PCNET_QUEUE_SEND_PACKETS) && defined(IN_RING3)
    615 static int pcnetSyncTransmit(PCNetState *pData);
    616 #endif
    617 static void pcnetPollTimerStart(PCNetState *pData);
     615static int pcnetSyncTransmit(PCNetState *pThis);
     616#endif
     617static void pcnetPollTimerStart(PCNetState *pThis);
    618618
    619619/**
     
    621621 * Make sure we read the own flag first.
    622622 *
    623  * @param pData         adapter private data
     623 * @param pThis         adapter private data
    624624 * @param addr          physical address of the descriptor
    625625 * @param fRetIfNotOwn  return immediately after reading the own flag if we don't own the descriptor
    626626 * @return              true if we own the descriptor, false otherwise
    627627 */
    628 DECLINLINE(bool) pcnetTmdLoad(PCNetState *pData, TMD *tmd, RTGCPHYS32 addr, bool fRetIfNotOwn)
    629 {
    630     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
     628DECLINLINE(bool) pcnetTmdLoad(PCNetState *pThis, TMD *tmd, RTGCPHYS32 addr, bool fRetIfNotOwn)
     629{
     630    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
    631631    uint8_t    ownbyte;
    632632
    633     if (pData->fPrivIfEnabled)
     633    if (pThis->fPrivIfEnabled)
    634634    {
    635635        /* RX/TX descriptors shared between host and guest => direct copy */
    636         uint8_t *pv = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    637                     + (addr - pData->GCTDRA)
    638                     + pData->CTX_SUFF(pSharedMMIO)->V.V1.offTxDescriptors;
     636        uint8_t *pv = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     637                    + (addr - pThis->GCTDRA)
     638                    + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offTxDescriptors;
    639639        if (!(pv[7] & 0x80) && fRetIfNotOwn)
    640640            return false;
     
    642642        return true;
    643643    }
    644     else if (RT_UNLIKELY(BCR_SWSTYLE(pData) == 0))
     644    else if (RT_UNLIKELY(BCR_SWSTYLE(pThis) == 0))
    645645    {
    646646        uint16_t xda[4];
     
    655655        ((uint32_t *)tmd)[3] = 0;
    656656    }
    657     else if (RT_LIKELY(BCR_SWSTYLE(pData) != 3))
     657    else if (RT_LIKELY(BCR_SWSTYLE(pThis) != 3))
    658658    {
    659659        PDMDevHlpPhysRead(pDevIns, addr+7, &ownbyte, 1);
     
    689689 * Make sure that all data are transmitted before we clear the own flag.
    690690 */
    691 DECLINLINE(void) pcnetTmdStorePassHost(PCNetState *pData, TMD *tmd, RTGCPHYS32 addr)
    692 {
    693     STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatTmdStore), a);
    694     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
    695     if (pData->fPrivIfEnabled)
     691DECLINLINE(void) pcnetTmdStorePassHost(PCNetState *pThis, TMD *tmd, RTGCPHYS32 addr)
     692{
     693    STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatTmdStore), a);
     694    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
     695    if (pThis->fPrivIfEnabled)
    696696    {
    697697        /* RX/TX descriptors shared between host and guest => direct copy */
    698         uint8_t *pv = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    699                     + (addr - pData->GCTDRA)
    700                     + pData->CTX_SUFF(pSharedMMIO)->V.V1.offTxDescriptors;
     698        uint8_t *pv = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     699                    + (addr - pThis->GCTDRA)
     700                    + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offTxDescriptors;
    701701        memcpy(pv, tmd, 16);
    702702        pv[7] &= ~0x80;
    703703    }
    704     else if (RT_UNLIKELY(BCR_SWSTYLE(pData) == 0))
     704    else if (RT_UNLIKELY(BCR_SWSTYLE(pThis) == 0))
    705705    {
    706706        uint16_t xda[4];
     
    714714        PDMDevHlpPhysWrite(pDevIns, addr+3, (uint8_t*)xda + 3, 1);
    715715    }
    716     else if (RT_LIKELY(BCR_SWSTYLE(pData) != 3))
     716    else if (RT_LIKELY(BCR_SWSTYLE(pThis) != 3))
    717717    {
    718718        ((uint32_t*)tmd)[1] |=  0x80000000;
     
    733733        PDMDevHlpPhysWrite(pDevIns, addr+7, (uint8_t*)xda + 7, 1);
    734734    }
    735     STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatTmdStore), a);
     735    STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTmdStore), a);
    736736}
    737737
     
    740740 * Make sure we read the own flag first.
    741741 *
    742  * @param pData         adapter private data
     742 * @param pThis         adapter private data
    743743 * @param addr          physical address of the descriptor
    744744 * @param fRetIfNotOwn  return immediately after reading the own flag if we don't own the descriptor
    745745 * @return              true if we own the descriptor, false otherwise
    746746 */
    747 DECLINLINE(int) pcnetRmdLoad(PCNetState *pData, RMD *rmd, RTGCPHYS32 addr, bool fRetIfNotOwn)
    748 {
    749     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
     747DECLINLINE(int) pcnetRmdLoad(PCNetState *pThis, RMD *rmd, RTGCPHYS32 addr, bool fRetIfNotOwn)
     748{
     749    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
    750750    uint8_t    ownbyte;
    751751
    752     if (pData->fPrivIfEnabled)
     752    if (pThis->fPrivIfEnabled)
    753753    {
    754754        /* RX/TX descriptors shared between host and guest => direct copy */
    755         uint8_t *pb = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    756                     + (addr - pData->GCRDRA)
    757                     + pData->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
     755        uint8_t *pb = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     756                    + (addr - pThis->GCRDRA)
     757                    + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
    758758        if (!(pb[7] & 0x80) && fRetIfNotOwn)
    759759            return false;
     
    761761        return true;
    762762    }
    763     else if (RT_UNLIKELY(BCR_SWSTYLE(pData) == 0))
     763    else if (RT_UNLIKELY(BCR_SWSTYLE(pThis) == 0))
    764764    {
    765765        uint16_t rda[4];
     
    773773        ((uint32_t *)rmd)[3] = 0;
    774774    }
    775     else if (RT_LIKELY(BCR_SWSTYLE(pData) != 3))
     775    else if (RT_LIKELY(BCR_SWSTYLE(pThis) != 3))
    776776    {
    777777        PDMDevHlpPhysRead(pDevIns, addr+7, &ownbyte, 1);
     
    807807 * Make sure that all data are transmitted before we clear the own flag.
    808808 */
    809 DECLINLINE(void) pcnetRmdStorePassHost(PCNetState *pData, RMD *rmd, RTGCPHYS32 addr)
    810 {
    811     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
    812     if (pData->fPrivIfEnabled)
     809DECLINLINE(void) pcnetRmdStorePassHost(PCNetState *pThis, RMD *rmd, RTGCPHYS32 addr)
     810{
     811    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
     812    if (pThis->fPrivIfEnabled)
    813813    {
    814814        /* RX/TX descriptors shared between host and guest => direct copy */
    815         uint8_t *pv = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    816                     + (addr - pData->GCRDRA)
    817                     + pData->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
     815        uint8_t *pv = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     816                    + (addr - pThis->GCRDRA)
     817                    + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
    818818        memcpy(pv, rmd, 16);
    819819        pv[7] &= ~0x80;
    820820    }
    821     else if (RT_UNLIKELY(BCR_SWSTYLE(pData) == 0))
     821    else if (RT_UNLIKELY(BCR_SWSTYLE(pThis) == 0))
    822822    {
    823823        uint16_t rda[4];
     
    831831        PDMDevHlpPhysWrite(pDevIns, addr+3, (uint8_t*)rda + 3, 1);
    832832    }
    833     else if (RT_LIKELY(BCR_SWSTYLE(pData) != 3))
     833    else if (RT_LIKELY(BCR_SWSTYLE(pThis) != 3))
    834834    {
    835835        ((uint32_t*)rmd)[1] |=  0x80000000;
     
    897897 * @note Changing this layout will break SSM for guests using the private guest interface!
    898898 */
    899 static void pcnetInitSharedMemory(PCNetState *pData)
     899static void pcnetInitSharedMemory(PCNetState *pThis)
    900900{
    901901    /* Clear the entire block for pcnetReset usage. */
    902     memset(pData->pSharedMMIOR3, 0, PCNET_GUEST_SHARED_MEMORY_SIZE);
    903 
    904     pData->pSharedMMIOR3->u32Version = PCNET_GUEST_INTERFACE_VERSION;
     902    memset(pThis->pSharedMMIOR3, 0, PCNET_GUEST_SHARED_MEMORY_SIZE);
     903
     904    pThis->pSharedMMIOR3->u32Version = PCNET_GUEST_INTERFACE_VERSION;
    905905    uint32_t off = 2048; /* Leave some space for more fields within the header */
    906906
     
    908908     * The Descriptor arrays.
    909909     */
    910     pData->pSharedMMIOR3->V.V1.offTxDescriptors = off;
     910    pThis->pSharedMMIOR3->V.V1.offTxDescriptors = off;
    911911    off = RT_ALIGN(off + PCNET_GUEST_TX_DESCRIPTOR_SIZE * PCNET_GUEST_MAX_TX_DESCRIPTORS, 32);
    912912
    913     pData->pSharedMMIOR3->V.V1.offRxDescriptors = off;
     913    pThis->pSharedMMIOR3->V.V1.offRxDescriptors = off;
    914914    off = RT_ALIGN(off + PCNET_GUEST_RX_DESCRIPTOR_SIZE * PCNET_GUEST_MAX_RX_DESCRIPTORS, 32);
    915915
     
    923923#if 0
    924924    /* Don't allocate TX buffers since Windows guests cannot use it */
    925     pData->pSharedMMIOR3->V.V1.offTxBuffers = off;
     925    pThis->pSharedMMIOR3->V.V1.offTxBuffers = off;
    926926    off = RT_ALIGN(off + PCNET_GUEST_NIC_BUFFER_SIZE * PCNET_GUEST_MAX_TX_DESCRIPTORS, 32);
    927927#endif
    928928
    929     pData->pSharedMMIOR3->V.V1.offRxBuffers = off;
    930     pData->pSharedMMIOR3->fFlags = PCNET_GUEST_FLAGS_ADMIT_HOST;
     929    pThis->pSharedMMIOR3->V.V1.offRxBuffers = off;
     930    pThis->pSharedMMIOR3->fFlags = PCNET_GUEST_FLAGS_ADMIT_HOST;
    931931    off = RT_ALIGN(off + PCNET_GUEST_NIC_BUFFER_SIZE * PCNET_GUEST_MAX_RX_DESCRIPTORS, 32);
    932932    AssertRelease(off <= PCNET_GUEST_SHARED_MEMORY_SIZE);
    933933
    934934    /* Update the header with the final size. */
    935     pData->pSharedMMIOR3->cbUsed = off;
     935    pThis->pSharedMMIOR3->cbUsed = off;
    936936}
    937937
     
    10311031};
    10321032
    1033 DECLINLINE(int) padr_match(PCNetState *pData, const uint8_t *buf, size_t size)
     1033DECLINLINE(int) padr_match(PCNetState *pThis, const uint8_t *buf, size_t size)
    10341034{
    10351035    struct ether_header *hdr = (struct ether_header *)buf;
    10361036    int     result;
    10371037#if (defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64)) && !defined(PCNET_DEBUG_MATCH)
    1038     result = !CSR_DRCVPA(pData) && !memcmp(hdr->ether_dhost, pData->aCSR + 12, 6);
     1038    result = !CSR_DRCVPA(pThis) && !memcmp(hdr->ether_dhost, pThis->aCSR + 12, 6);
    10391039#else
    10401040    uint8_t padr[6];
    1041     padr[0] = pData->aCSR[12] & 0xff;
    1042     padr[1] = pData->aCSR[12] >> 8;
    1043     padr[2] = pData->aCSR[13] & 0xff;
    1044     padr[3] = pData->aCSR[13] >> 8;
    1045     padr[4] = pData->aCSR[14] & 0xff;
    1046     padr[5] = pData->aCSR[14] >> 8;
    1047     result = !CSR_DRCVPA(pData) && !memcmp(hdr->ether_dhost, padr, 6);
     1041    padr[0] = pThis->aCSR[12] & 0xff;
     1042    padr[1] = pThis->aCSR[12] >> 8;
     1043    padr[2] = pThis->aCSR[13] & 0xff;
     1044    padr[3] = pThis->aCSR[13] >> 8;
     1045    padr[4] = pThis->aCSR[14] & 0xff;
     1046    padr[5] = pThis->aCSR[14] >> 8;
     1047    result = !CSR_DRCVPA(pThis) && !memcmp(hdr->ether_dhost, padr, 6);
    10481048#endif
    10491049
     
    10581058}
    10591059
    1060 DECLINLINE(int) padr_bcast(PCNetState *pData, const uint8_t *buf, size_t size)
     1060DECLINLINE(int) padr_bcast(PCNetState *pThis, const uint8_t *buf, size_t size)
    10611061{
    10621062    static uint8_t aBCAST[6] = { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
    10631063    struct ether_header *hdr = (struct ether_header *)buf;
    1064     int result = !CSR_DRCVBC(pData) && !memcmp(hdr->ether_dhost, aBCAST, 6);
     1064    int result = !CSR_DRCVBC(pThis) && !memcmp(hdr->ether_dhost, aBCAST, 6);
    10651065#ifdef PCNET_DEBUG_MATCH
    10661066    Log(("#%d padr_bcast result=%d\n", PCNET_INST_NR, result));
     
    10691069}
    10701070
    1071 static int ladr_match(PCNetState *pData, const uint8_t *buf, size_t size)
     1071static int ladr_match(PCNetState *pThis, const uint8_t *buf, size_t size)
    10721072{
    10731073    struct ether_header *hdr = (struct ether_header *)buf;
    1074     if (RT_UNLIKELY(hdr->ether_dhost[0] & 0x01) && ((uint64_t *)&pData->aCSR[8])[0] != 0LL)
     1074    if (RT_UNLIKELY(hdr->ether_dhost[0] & 0x01) && ((uint64_t *)&pThis->aCSR[8])[0] != 0LL)
    10751075    {
    10761076        int index;
    10771077#if defined(RT_ARCH_X86) || defined(RT_ARCH_AMD64)
    10781078        index = lnc_mchash(hdr->ether_dhost) >> 26;
    1079         return ((uint8_t*)(pData->aCSR + 8))[index >> 3] & (1 << (index & 7));
     1079        return ((uint8_t*)(pThis->aCSR + 8))[index >> 3] & (1 << (index & 7));
    10801080#else
    10811081        uint8_t ladr[8];
    1082         ladr[0] = pData->aCSR[8] & 0xff;
    1083         ladr[1] = pData->aCSR[8] >> 8;
    1084         ladr[2] = pData->aCSR[9] & 0xff;
    1085         ladr[3] = pData->aCSR[9] >> 8;
    1086         ladr[4] = pData->aCSR[10] & 0xff;
    1087         ladr[5] = pData->aCSR[10] >> 8;
    1088         ladr[6] = pData->aCSR[11] & 0xff;
    1089         ladr[7] = pData->aCSR[11] >> 8;
     1082        ladr[0] = pThis->aCSR[8] & 0xff;
     1083        ladr[1] = pThis->aCSR[8] >> 8;
     1084        ladr[2] = pThis->aCSR[9] & 0xff;
     1085        ladr[3] = pThis->aCSR[9] >> 8;
     1086        ladr[4] = pThis->aCSR[10] & 0xff;
     1087        ladr[5] = pThis->aCSR[10] >> 8;
     1088        ladr[6] = pThis->aCSR[11] & 0xff;
     1089        ladr[7] = pThis->aCSR[11] >> 8;
    10901090        index = lnc_mchash(hdr->ether_dhost) >> 26;
    10911091        return (ladr[index >> 3] & (1 << (index & 7)));
     
    11001100 * Get the receive descriptor ring address with a given index.
    11011101 */
    1102 DECLINLINE(RTGCPHYS32) pcnetRdraAddr(PCNetState *pData, int idx)
    1103 {
    1104     return pData->GCRDRA + ((CSR_RCVRL(pData) - idx) << pData->iLog2DescSize);
     1102DECLINLINE(RTGCPHYS32) pcnetRdraAddr(PCNetState *pThis, int idx)
     1103{
     1104    return pThis->GCRDRA + ((CSR_RCVRL(pThis) - idx) << pThis->iLog2DescSize);
    11051105}
    11061106
     
    11081108 * Get the transmit descriptor ring address with a given index.
    11091109 */
    1110 DECLINLINE(RTGCPHYS32) pcnetTdraAddr(PCNetState *pData, int idx)
    1111 {
    1112     return pData->GCTDRA + ((CSR_XMTRL(pData) - idx) << pData->iLog2DescSize);
     1110DECLINLINE(RTGCPHYS32) pcnetTdraAddr(PCNetState *pThis, int idx)
     1111{
     1112    return pThis->GCTDRA + ((CSR_XMTRL(pThis) - idx) << pThis->iLog2DescSize);
    11131113}
    11141114
     
    11371137#define htons(x)    ( (((x) & 0xff00) >> 8) | (((x) & 0x00ff) << 8) )
    11381138
    1139 static void     pcnetPollRxTx(PCNetState *pData);
    1140 static void     pcnetPollTimer(PCNetState *pData);
    1141 static void     pcnetUpdateIrq(PCNetState *pData);
    1142 static uint32_t pcnetBCRReadU16(PCNetState *pData, uint32_t u32RAP);
    1143 static int      pcnetBCRWriteU16(PCNetState *pData, uint32_t u32RAP, uint32_t val);
     1139static void     pcnetPollRxTx(PCNetState *pThis);
     1140static void     pcnetPollTimer(PCNetState *pThis);
     1141static void     pcnetUpdateIrq(PCNetState *pThis);
     1142static uint32_t pcnetBCRReadU16(PCNetState *pThis, uint32_t u32RAP);
     1143static int      pcnetBCRWriteU16(PCNetState *pThis, uint32_t u32RAP, uint32_t val);
    11441144
    11451145
     
    11481148
    11491149/**
    1150  * #PF Virtual Handler callback for Guest write access to the ring descriptor page(pData)
     1150 * #PF Virtual Handler callback for Guest write access to the ring descriptor page(pThis)
    11511151 *
    11521152 * @return  VBox status code (appropriate for trap handling and GC return).
     
    11611161                                     RTGCPTR pvFault, RTGCPHYS GCPhysFault, void *pvUser)
    11621162{
    1163     PCNetState *pData   = (PCNetState *)pvUser;
     1163    PCNetState *pThis   = (PCNetState *)pvUser;
    11641164
    11651165    Log(("#%d pcnetHandleRingWriteGC: write to %#010x\n", PCNET_INST_NR, GCPhysFault));
    11661166
    11671167    uint32_t cb;
    1168     int rc = CTXALLSUFF(pData->pfnEMInterpretInstruction)(pVM, pRegFrame, pvFault, &cb);
     1168    int rc = CTXALLSUFF(pThis->pfnEMInterpretInstruction)(pVM, pRegFrame, pvFault, &cb);
    11691169    if (RT_SUCCESS(rc) && cb)
    11701170    {
    1171         if (    (GCPhysFault >= pData->GCTDRA && GCPhysFault + cb < pcnetTdraAddr(pData, 0))
     1171        if (    (GCPhysFault >= pThis->GCTDRA && GCPhysFault + cb < pcnetTdraAddr(pThis, 0))
    11721172#ifdef PCNET_MONITOR_RECEIVE_RING
    1173             ||  (GCPhysFault >= pData->GCRDRA && GCPhysFault + cb < pcnetRdraAddr(pData, 0))
     1173            ||  (GCPhysFault >= pThis->GCRDRA && GCPhysFault + cb < pcnetRdraAddr(pThis, 0))
    11741174#endif
    11751175           )
    11761176        {
    1177             uint32_t offsetTDRA = (GCPhysFault - pData->GCTDRA);
    1178 
    1179             int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     1177            uint32_t offsetTDRA = (GCPhysFault - pThis->GCTDRA);
     1178
     1179            int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    11801180            if (RT_SUCCESS(rc))
    11811181            {
    1182                 STAM_COUNTER_INC(&CTXALLSUFF(pData->StatRingWrite)); ;
     1182                STAM_COUNTER_INC(&CTXALLSUFF(pThis->StatRingWrite)); ;
    11831183
    11841184                /* Check if we can do something now */
    1185                 pcnetPollRxTx(pData);
    1186                 pcnetUpdateIrq(pData);
    1187 
    1188                 PDMCritSectLeave(&pData->CritSect);
     1185                pcnetPollRxTx(pThis);
     1186                pcnetUpdateIrq(pThis);
     1187
     1188                PDMCritSectLeave(&pThis->CritSect);
    11891189                return VINF_SUCCESS;
    11901190            }
     
    11921192        else
    11931193        {
    1194             STAM_COUNTER_INC(&CTXALLSUFF(pData->StatRingWriteOutside)); ;
     1194            STAM_COUNTER_INC(&CTXALLSUFF(pThis->StatRingWriteOutside)); ;
    11951195            return VINF_SUCCESS;    /* outside of the ring range */
    11961196        }
    11971197    }
    1198     STAM_COUNTER_INC(&CTXALLSUFF(pData->StatRingWriteFailed)); ;
     1198    STAM_COUNTER_INC(&CTXALLSUFF(pThis->StatRingWriteFailed)); ;
    11991199    return VINF_IOM_HC_MMIO_WRITE; /* handle in ring3 */
    12001200}
     
    12221222{
    12231223    PPDMDEVINS  pDevIns = (PPDMDEVINS)pvUser;
    1224     PCNetState *pData   = PDMINS_2_DATA(pDevIns, PCNetState *);
     1224    PCNetState *pThis   = PDMINS_2_DATA(pDevIns, PCNetState *);
    12251225
    12261226    Log(("#%d pcnetHandleRingWrite: write to %#010x\n", PCNET_INST_NR, GCPhys));
    12271227#ifdef VBOX_WITH_STATISTICS
    1228     STAM_COUNTER_INC(&CTXSUFF(pData->StatRingWrite));
    1229     if (GCPhys >= pData->GCRDRA && GCPhys < pcnetRdraAddr(pData, 0))
    1230         STAM_COUNTER_INC(&pData->StatRCVRingWrite);
    1231     else if (GCPhys >= pData->GCTDRA && GCPhys < pcnetTdraAddr(pData, 0))
    1232         STAM_COUNTER_INC(&pData->StatTXRingWrite);
     1228    STAM_COUNTER_INC(&CTXSUFF(pThis->StatRingWrite));
     1229    if (GCPhys >= pThis->GCRDRA && GCPhys < pcnetRdraAddr(pThis, 0))
     1230        STAM_COUNTER_INC(&pThis->StatRCVRingWrite);
     1231    else if (GCPhys >= pThis->GCTDRA && GCPhys < pcnetTdraAddr(pThis, 0))
     1232        STAM_COUNTER_INC(&pThis->StatTXRingWrite);
    12331233#endif
    12341234    /* Perform the actual write */
     
    12361236
    12371237    /* Writes done by our code don't require polling of course */
    1238     if (PDMCritSectIsOwner(&pData->CritSect) == false)
    1239     {
    1240         if (    (GCPhys >= pData->GCTDRA && GCPhys + cbBuf < pcnetTdraAddr(pData, 0))
     1238    if (PDMCritSectIsOwner(&pThis->CritSect) == false)
     1239    {
     1240        if (    (GCPhys >= pThis->GCTDRA && GCPhys + cbBuf < pcnetTdraAddr(pThis, 0))
    12411241#ifdef PCNET_MONITOR_RECEIVE_RING
    1242             ||  (GCPhys >= pData->GCRDRA && GCPhys + cbBuf < pcnetRdraAddr(pData, 0))
     1242            ||  (GCPhys >= pThis->GCRDRA && GCPhys + cbBuf < pcnetRdraAddr(pThis, 0))
    12431243#endif
    12441244           )
    12451245        {
    1246             int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     1246            int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    12471247            AssertReleaseRC(rc);
    12481248            /* Check if we can do something now */
    1249             pcnetPollRxTx(pData);
    1250             pcnetUpdateIrq(pData);
    1251             PDMCritSectLeave(&pData->CritSect);
     1249            pcnetPollRxTx(pThis);
     1250            pcnetUpdateIrq(pThis);
     1251            PDMCritSectLeave(&pThis->CritSect);
    12521252        }
    12531253    }
     
    12571257#endif /* PCNET_NO_POLLING */
    12581258
    1259 static void pcnetSoftReset(PCNetState *pData)
     1259static void pcnetSoftReset(PCNetState *pThis)
    12601260{
    12611261    Log(("#%d pcnetSoftReset:\n", PCNET_INST_NR));
    12621262
    1263     pData->u32Lnkst = 0x40;
    1264     pData->GCRDRA   = 0;
    1265     pData->GCTDRA   = 0;
    1266     pData->u32RAP   = 0;
    1267 
    1268     pData->aBCR[BCR_BSBC] &= ~0x0080;
    1269 
    1270     pData->aCSR[0]   = 0x0004;
    1271     pData->aCSR[3]   = 0x0000;
    1272     pData->aCSR[4]   = 0x0115;
    1273     pData->aCSR[5]   = 0x0000;
    1274     pData->aCSR[6]   = 0x0000;
    1275     pData->aCSR[8]   = 0;
    1276     pData->aCSR[9]   = 0;
    1277     pData->aCSR[10]  = 0;
    1278     pData->aCSR[11]  = 0;
    1279     pData->aCSR[12]  = RT_LE2H_U16(((uint16_t *)&pData->aPROM[0])[0]);
    1280     pData->aCSR[13]  = RT_LE2H_U16(((uint16_t *)&pData->aPROM[0])[1]);
    1281     pData->aCSR[14]  = RT_LE2H_U16(((uint16_t *)&pData->aPROM[0])[2]);
    1282     pData->aCSR[15] &= 0x21c4;
    1283     CSR_RCVRC(pData) = 1;
    1284     CSR_XMTRC(pData) = 1;
    1285     CSR_RCVRL(pData) = 1;
    1286     CSR_XMTRL(pData) = 1;
    1287     pData->aCSR[80]  = 0x1410;
    1288     pData->aCSR[88]  = pData->fAm79C973 ? CSR_VERSION_LOW_79C973 : CSR_VERSION_LOW_79C970A;
    1289     pData->aCSR[89]  = CSR_VERSION_HIGH;
    1290     pData->aCSR[94]  = 0x0000;
    1291     pData->aCSR[100] = 0x0200;
    1292     pData->aCSR[103] = 0x0105;
    1293     pData->aCSR[103] = 0x0105;
    1294     CSR_MISSC(pData) = 0;
    1295     pData->aCSR[114] = 0x0000;
    1296     pData->aCSR[122] = 0x0000;
    1297     pData->aCSR[124] = 0x0000;
     1263    pThis->u32Lnkst = 0x40;
     1264    pThis->GCRDRA   = 0;
     1265    pThis->GCTDRA   = 0;
     1266    pThis->u32RAP   = 0;
     1267
     1268    pThis->aBCR[BCR_BSBC] &= ~0x0080;
     1269
     1270    pThis->aCSR[0]   = 0x0004;
     1271    pThis->aCSR[3]   = 0x0000;
     1272    pThis->aCSR[4]   = 0x0115;
     1273    pThis->aCSR[5]   = 0x0000;
     1274    pThis->aCSR[6]   = 0x0000;
     1275    pThis->aCSR[8]   = 0;
     1276    pThis->aCSR[9]   = 0;
     1277    pThis->aCSR[10]  = 0;
     1278    pThis->aCSR[11]  = 0;
     1279    pThis->aCSR[12]  = RT_LE2H_U16(((uint16_t *)&pThis->aPROM[0])[0]);
     1280    pThis->aCSR[13]  = RT_LE2H_U16(((uint16_t *)&pThis->aPROM[0])[1]);
     1281    pThis->aCSR[14]  = RT_LE2H_U16(((uint16_t *)&pThis->aPROM[0])[2]);
     1282    pThis->aCSR[15] &= 0x21c4;
     1283    CSR_RCVRC(pThis) = 1;
     1284    CSR_XMTRC(pThis) = 1;
     1285    CSR_RCVRL(pThis) = 1;
     1286    CSR_XMTRL(pThis) = 1;
     1287    pThis->aCSR[80]  = 0x1410;
     1288    pThis->aCSR[88]  = pThis->fAm79C973 ? CSR_VERSION_LOW_79C973 : CSR_VERSION_LOW_79C970A;
     1289    pThis->aCSR[89]  = CSR_VERSION_HIGH;
     1290    pThis->aCSR[94]  = 0x0000;
     1291    pThis->aCSR[100] = 0x0200;
     1292    pThis->aCSR[103] = 0x0105;
     1293    pThis->aCSR[103] = 0x0105;
     1294    CSR_MISSC(pThis) = 0;
     1295    pThis->aCSR[114] = 0x0000;
     1296    pThis->aCSR[122] = 0x0000;
     1297    pThis->aCSR[124] = 0x0000;
    12981298}
    12991299
     
    13041304 * - csr5 (only written by pcnetSoftReset(), pcnetStop or by the driver guest)
    13051305 */
    1306 static void pcnetUpdateIrq(PCNetState *pData)
     1306static void pcnetUpdateIrq(PCNetState *pThis)
    13071307{
    13081308    register int      iISR = 0;
    1309     register uint16_t csr0 = pData->aCSR[0];
     1309    register uint16_t csr0 = pThis->aCSR[0];
    13101310
    13111311    csr0 &= ~0x0080; /* clear INTR */
    13121312
    1313     STAM_PROFILE_ADV_START(&pData->StatInterrupt, a);
     1313    STAM_PROFILE_ADV_START(&pThis->StatInterrupt, a);
    13141314
    13151315    /* Linux guests set csr4=0x0915
     
    13171317
    13181318#if 1
    1319     if (    ( (csr0               & ~pData->aCSR[3]) & 0x5f00)
    1320          || (((pData->aCSR[4]>>1) & ~pData->aCSR[4]) & 0x0115)
    1321          || (((pData->aCSR[5]>>1) &  pData->aCSR[5]) & 0x0048))
     1319    if (    ( (csr0               & ~pThis->aCSR[3]) & 0x5f00)
     1320         || (((pThis->aCSR[4]>>1) & ~pThis->aCSR[4]) & 0x0115)
     1321         || (((pThis->aCSR[5]>>1) &  pThis->aCSR[5]) & 0x0048))
    13221322#else
    1323     if (  ( !(pData->aCSR[3] & 0x4000) && !!(csr0           & 0x4000)) /* BABL */
    1324         ||( !(pData->aCSR[3] & 0x1000) && !!(csr0           & 0x1000)) /* MISS */
    1325         ||( !(pData->aCSR[3] & 0x0100) && !!(csr0           & 0x0100)) /* IDON */
    1326         ||( !(pData->aCSR[3] & 0x0200) && !!(csr0           & 0x0200)) /* TINT */
    1327         ||( !(pData->aCSR[3] & 0x0400) && !!(csr0           & 0x0400)) /* RINT */
    1328         ||( !(pData->aCSR[3] & 0x0800) && !!(csr0           & 0x0800)) /* MERR */
    1329         ||( !(pData->aCSR[4] & 0x0001) && !!(pData->aCSR[4] & 0x0002)) /* JAB */
    1330         ||( !(pData->aCSR[4] & 0x0004) && !!(pData->aCSR[4] & 0x0008)) /* TXSTRT */
    1331         ||( !(pData->aCSR[4] & 0x0010) && !!(pData->aCSR[4] & 0x0020)) /* RCVO */
    1332         ||( !(pData->aCSR[4] & 0x0100) && !!(pData->aCSR[4] & 0x0200)) /* MFCO */
    1333         ||(!!(pData->aCSR[5] & 0x0040) && !!(pData->aCSR[5] & 0x0080)) /* EXDINT */
    1334         ||(!!(pData->aCSR[5] & 0x0008) && !!(pData->aCSR[5] & 0x0010)) /* MPINT */)
     1323    if (  ( !(pThis->aCSR[3] & 0x4000) && !!(csr0           & 0x4000)) /* BABL */
     1324        ||( !(pThis->aCSR[3] & 0x1000) && !!(csr0           & 0x1000)) /* MISS */
     1325        ||( !(pThis->aCSR[3] & 0x0100) && !!(csr0           & 0x0100)) /* IDON */
     1326        ||( !(pThis->aCSR[3] & 0x0200) && !!(csr0           & 0x0200)) /* TINT */
     1327        ||( !(pThis->aCSR[3] & 0x0400) && !!(csr0           & 0x0400)) /* RINT */
     1328        ||( !(pThis->aCSR[3] & 0x0800) && !!(csr0           & 0x0800)) /* MERR */
     1329        ||( !(pThis->aCSR[4] & 0x0001) && !!(pThis->aCSR[4] & 0x0002)) /* JAB */
     1330        ||( !(pThis->aCSR[4] & 0x0004) && !!(pThis->aCSR[4] & 0x0008)) /* TXSTRT */
     1331        ||( !(pThis->aCSR[4] & 0x0010) && !!(pThis->aCSR[4] & 0x0020)) /* RCVO */
     1332        ||( !(pThis->aCSR[4] & 0x0100) && !!(pThis->aCSR[4] & 0x0200)) /* MFCO */
     1333        ||(!!(pThis->aCSR[5] & 0x0040) && !!(pThis->aCSR[5] & 0x0080)) /* EXDINT */
     1334        ||(!!(pThis->aCSR[5] & 0x0008) && !!(pThis->aCSR[5] & 0x0010)) /* MPINT */)
    13351335#endif
    13361336    {
     
    13401340
    13411341#ifdef VBOX
    1342     if (pData->aCSR[4] & 0x0080) /* UINTCMD */
    1343     {
    1344         pData->aCSR[4] &= ~0x0080; /* clear UINTCMD */
    1345         pData->aCSR[4] |=  0x0040; /* set UINT */
     1342    if (pThis->aCSR[4] & 0x0080) /* UINTCMD */
     1343    {
     1344        pThis->aCSR[4] &= ~0x0080; /* clear UINTCMD */
     1345        pThis->aCSR[4] |=  0x0040; /* set UINT */
    13461346        Log(("#%d user int\n", PCNET_INST_NR));
    13471347    }
    1348     if (pData->aCSR[4] & csr0 & 0x0040 /* CSR_INEA */)
     1348    if (pThis->aCSR[4] & csr0 & 0x0040 /* CSR_INEA */)
    13491349    {
    13501350        csr0 |=  0x0080; /* set INTR */
     
    13521352    }
    13531353#else /* !VBOX */
    1354     if (!!(pData->aCSR[4] & 0x0080) && CSR_INEA(pData)) /* UINTCMD */
    1355     {
    1356         pData->aCSR[4] &= ~0x0080;
    1357         pData->aCSR[4] |=  0x0040; /* set UINT */
     1354    if (!!(pThis->aCSR[4] & 0x0080) && CSR_INEA(pThis)) /* UINTCMD */
     1355    {
     1356        pThis->aCSR[4] &= ~0x0080;
     1357        pThis->aCSR[4] |=  0x0040; /* set UINT */
    13581358        csr0           |=  0x0080; /* set INTR */
    13591359        iISR = 1;
     
    13631363
    13641364#if 1
    1365     if (((pData->aCSR[5]>>1) & pData->aCSR[5]) & 0x0500)
     1365    if (((pThis->aCSR[5]>>1) & pThis->aCSR[5]) & 0x0500)
    13661366#else
    1367     if (   (!!(pData->aCSR[5] & 0x0400) && !!(pData->aCSR[5] & 0x0800)) /* SINT */
    1368          ||(!!(pData->aCSR[5] & 0x0100) && !!(pData->aCSR[5] & 0x0200)) /* SLPINT */)
     1367    if (   (!!(pThis->aCSR[5] & 0x0400) && !!(pThis->aCSR[5] & 0x0800)) /* SINT */
     1368         ||(!!(pThis->aCSR[5] & 0x0100) && !!(pThis->aCSR[5] & 0x0200)) /* SLPINT */)
    13691369#endif
    13701370    {
     
    13731373    }
    13741374
    1375     if ((pData->aCSR[7] & 0x0C00) == 0x0C00) /* STINT + STINTE */
     1375    if ((pThis->aCSR[7] & 0x0C00) == 0x0C00) /* STINT + STINTE */
    13761376        iISR = 1;
    13771377
    1378     pData->aCSR[0] = csr0;
     1378    pThis->aCSR[0] = csr0;
    13791379
    13801380    Log2(("#%d set irq iISR=%d\n", PCNET_INST_NR, iISR));
    13811381
    13821382    /* normal path is to _not_ change the IRQ status */
    1383     if (RT_UNLIKELY(iISR != pData->iISR))
     1383    if (RT_UNLIKELY(iISR != pThis->iISR))
    13841384    {
    13851385        Log(("#%d INTA=%d\n", PCNET_INST_NR, iISR));
    1386         PDMDevHlpPCISetIrqNoWait(PCNETSTATE_2_DEVINS(pData), 0, iISR);
    1387         pData->iISR = iISR;
    1388     }
    1389     STAM_PROFILE_ADV_STOP(&pData->StatInterrupt, a);
     1386        PDMDevHlpPCISetIrqNoWait(PCNETSTATE_2_DEVINS(pThis), 0, iISR);
     1387        pThis->iISR = iISR;
     1388    }
     1389    STAM_PROFILE_ADV_STOP(&pThis->StatInterrupt, a);
    13901390}
    13911391
     
    13931393 * Enable/disable the private guest interface.
    13941394 */
    1395 static void pcnetEnablePrivateIf(PCNetState *pData)
    1396 {
    1397     bool fPrivIfEnabled =       pData->pSharedMMIOR3
    1398                           && !!(pData->CTX_SUFF(pSharedMMIO)->fFlags & PCNET_GUEST_FLAGS_ADMIT_GUEST);
    1399     if (fPrivIfEnabled != pData->fPrivIfEnabled)
    1400     {
    1401         pData->fPrivIfEnabled = fPrivIfEnabled;
     1395static void pcnetEnablePrivateIf(PCNetState *pThis)
     1396{
     1397    bool fPrivIfEnabled =       pThis->pSharedMMIOR3
     1398                          && !!(pThis->CTX_SUFF(pSharedMMIO)->fFlags & PCNET_GUEST_FLAGS_ADMIT_GUEST);
     1399    if (fPrivIfEnabled != pThis->fPrivIfEnabled)
     1400    {
     1401        pThis->fPrivIfEnabled = fPrivIfEnabled;
    14021402        LogRel(("PCNet#%d: %s private interface\n", PCNET_INST_NR, fPrivIfEnabled ? "Enabling" : "Disabling"));
    14031403    }
     
    14061406#ifdef IN_RING3
    14071407#ifdef PCNET_NO_POLLING
    1408 static void pcnetUpdateRingHandlers(PCNetState *pData)
    1409 {
    1410     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
     1408static void pcnetUpdateRingHandlers(PCNetState *pThis)
     1409{
     1410    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
    14111411    int rc;
    14121412
    1413     Log(("pcnetUpdateRingHandlers TD %VGp size %#x -> %VGp size %#x\n", pData->TDRAPhysOld, pData->cbTDRAOld, pData->GCTDRA, pcnetTdraAddr(pData, 0)));
    1414     Log(("pcnetUpdateRingHandlers RX %VGp size %#x -> %VGp size %#x\n", pData->RDRAPhysOld, pData->cbRDRAOld, pData->GCRDRA, pcnetRdraAddr(pData, 0)));
     1413    Log(("pcnetUpdateRingHandlers TD %VGp size %#x -> %VGp size %#x\n", pThis->TDRAPhysOld, pThis->cbTDRAOld, pThis->GCTDRA, pcnetTdraAddr(pThis, 0)));
     1414    Log(("pcnetUpdateRingHandlers RX %VGp size %#x -> %VGp size %#x\n", pThis->RDRAPhysOld, pThis->cbRDRAOld, pThis->GCRDRA, pcnetRdraAddr(pThis, 0)));
    14151415
    14161416    /** @todo unregister order not correct! */
    14171417
    14181418#ifdef PCNET_MONITOR_RECEIVE_RING
    1419     if (pData->GCRDRA != pData->RDRAPhysOld || CSR_RCVRL(pData) != pData->cbRDRAOld)
    1420     {
    1421         if (pData->RDRAPhysOld != 0)
     1419    if (pThis->GCRDRA != pThis->RDRAPhysOld || CSR_RCVRL(pThis) != pThis->cbRDRAOld)
     1420    {
     1421        if (pThis->RDRAPhysOld != 0)
    14221422            PGMHandlerPhysicalDeregister(PDMDevHlpGetVM(pDevIns),
    1423                                         pData->RDRAPhysOld & ~PAGE_OFFSET_MASK);
     1423                                        pThis->RDRAPhysOld & ~PAGE_OFFSET_MASK);
    14241424
    14251425        rc = PGMR3HandlerPhysicalRegister(PDMDevHlpGetVM(pDevIns),
    14261426                                          PGMPHYSHANDLERTYPE_PHYSICAL_WRITE,
    1427                                           pData->GCRDRA & ~PAGE_OFFSET_MASK,
    1428                                           RT_ALIGN(pcnetRdraAddr(pData, 0), PAGE_SIZE) - 1,
     1427                                          pThis->GCRDRA & ~PAGE_OFFSET_MASK,
     1428                                          RT_ALIGN(pcnetRdraAddr(pThis, 0), PAGE_SIZE) - 1,
    14291429                                          pcnetHandleRingWrite, pDevIns,
    14301430                                          g_DevicePCNet.szR0Mod, "pcnetHandleRingWrite",
    1431                                           pData->pDevInsHC->pvInstanceDataHC,
     1431                                          pThis->pDevInsHC->pvInstanceDataHC,
    14321432                                          g_DevicePCNet.szGCMod, "pcnetHandleRingWrite",
    1433                                           pData->pDevInsHC->pvInstanceDataGC,
     1433                                          pThis->pDevInsHC->pvInstanceDataGC,
    14341434                                          "PCNet receive ring write access handler");
    14351435        AssertRC(rc);
    14361436
    1437         pData->RDRAPhysOld = pData->GCRDRA;
    1438         pData->cbRDRAOld   = pcnetRdraAddr(pData, 0);
     1437        pThis->RDRAPhysOld = pThis->GCRDRA;
     1438        pThis->cbRDRAOld   = pcnetRdraAddr(pThis, 0);
    14391439    }
    14401440#endif /* PCNET_MONITOR_RECEIVE_RING */
     
    14461446     * 3) TDRA & RDRA overlap partly with different physical pages
    14471447     */
    1448     RTGCPHYS32 RDRAPageStart = pData->GCRDRA & ~PAGE_OFFSET_MASK;
    1449     RTGCPHYS32 RDRAPageEnd   = (pcnetRdraAddr(pData, 0) - 1) & ~PAGE_OFFSET_MASK;
    1450     RTGCPHYS32 TDRAPageStart = pData->GCTDRA & ~PAGE_OFFSET_MASK;
    1451     RTGCPHYS32 TDRAPageEnd   = (pcnetTdraAddr(pData, 0) - 1) & ~PAGE_OFFSET_MASK;
     1448    RTGCPHYS32 RDRAPageStart = pThis->GCRDRA & ~PAGE_OFFSET_MASK;
     1449    RTGCPHYS32 RDRAPageEnd   = (pcnetRdraAddr(pThis, 0) - 1) & ~PAGE_OFFSET_MASK;
     1450    RTGCPHYS32 TDRAPageStart = pThis->GCTDRA & ~PAGE_OFFSET_MASK;
     1451    RTGCPHYS32 TDRAPageEnd   = (pcnetTdraAddr(pThis, 0) - 1) & ~PAGE_OFFSET_MASK;
    14521452
    14531453    if (    RDRAPageStart > TDRAPageEnd
     
    14561456#endif /* PCNET_MONITOR_RECEIVE_RING */
    14571457        /* 1) */
    1458         if (pData->GCTDRA != pData->TDRAPhysOld || CSR_XMTRL(pData) != pData->cbTDRAOld)
     1458        if (pThis->GCTDRA != pThis->TDRAPhysOld || CSR_XMTRL(pThis) != pThis->cbTDRAOld)
    14591459        {
    1460             if (pData->TDRAPhysOld != 0)
     1460            if (pThis->TDRAPhysOld != 0)
    14611461                PGMHandlerPhysicalDeregister(PDMDevHlpGetVM(pDevIns),
    1462                                              pData->TDRAPhysOld & ~PAGE_OFFSET_MASK);
     1462                                             pThis->TDRAPhysOld & ~PAGE_OFFSET_MASK);
    14631463
    14641464            rc = PGMR3HandlerPhysicalRegister(PDMDevHlpGetVM(pDevIns),
    14651465                                              PGMPHYSHANDLERTYPE_PHYSICAL_WRITE,
    1466                                               pData->GCTDRA & ~PAGE_OFFSET_MASK,
    1467                                               RT_ALIGN(pcnetTdraAddr(pData, 0), PAGE_SIZE) - 1,
     1466                                              pThis->GCTDRA & ~PAGE_OFFSET_MASK,
     1467                                              RT_ALIGN(pcnetTdraAddr(pThis, 0), PAGE_SIZE) - 1,
    14681468                                              pcnetHandleRingWrite, pDevIns,
    14691469                                              g_DevicePCNet.szR0Mod, "pcnetHandleRingWrite",
    1470                                               pData->pDevInsHC->pvInstanceDataHC,
     1470                                              pThis->pDevInsHC->pvInstanceDataHC,
    14711471                                              g_DevicePCNet.szGCMod, "pcnetHandleRingWrite",
    1472                                               pData->pDevInsHC->pvInstanceDataGC,
     1472                                              pThis->pDevInsHC->pvInstanceDataGC,
    14731473                                              "PCNet transmit ring write access handler");
    14741474            AssertRC(rc);
    14751475
    1476             pData->TDRAPhysOld = pData->GCTDRA;
    1477             pData->cbTDRAOld   = pcnetTdraAddr(pData, 0);
     1476            pThis->TDRAPhysOld = pThis->GCTDRA;
     1477            pThis->cbTDRAOld   = pcnetTdraAddr(pThis, 0);
    14781478        }
    14791479#ifdef PCNET_MONITOR_RECEIVE_RING
     
    14941494#endif /* PCNET_NO_POLLING */
    14951495
    1496 static void pcnetInit(PCNetState *pData)
    1497 {
    1498     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
    1499     Log(("#%d pcnetInit: init_addr=%#010x\n", PCNET_INST_NR, PHYSADDR(pData, CSR_IADR(pData))));
     1496static void pcnetInit(PCNetState *pThis)
     1497{
     1498    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
     1499    Log(("#%d pcnetInit: init_addr=%#010x\n", PCNET_INST_NR, PHYSADDR(pThis, CSR_IADR(pThis))));
    15001500
    15011501    /** @todo Documentation says that RCVRL and XMTRL are stored as two's complement!
    15021502     *        Software is allowed to write these registers directly. */
    15031503#define PCNET_INIT() do { \
    1504         PDMDevHlpPhysRead(pDevIns, PHYSADDR(pData, CSR_IADR(pData)),         \
     1504        PDMDevHlpPhysRead(pDevIns, PHYSADDR(pThis, CSR_IADR(pThis)),         \
    15051505                          (uint8_t *)&initblk, sizeof(initblk));             \
    1506         pData->aCSR[15]  = RT_LE2H_U16(initblk.mode);                        \
    1507         CSR_RCVRL(pData) = (initblk.rlen < 9) ? (1 << initblk.rlen) : 512;   \
    1508         CSR_XMTRL(pData) = (initblk.tlen < 9) ? (1 << initblk.tlen) : 512;   \
    1509         pData->aCSR[ 6]  = (initblk.tlen << 12) | (initblk.rlen << 8);       \
    1510         pData->aCSR[ 8]  = RT_LE2H_U16(initblk.ladrf1);                      \
    1511         pData->aCSR[ 9]  = RT_LE2H_U16(initblk.ladrf2);                      \
    1512         pData->aCSR[10]  = RT_LE2H_U16(initblk.ladrf3);                      \
    1513         pData->aCSR[11]  = RT_LE2H_U16(initblk.ladrf4);                      \
    1514         pData->aCSR[12]  = RT_LE2H_U16(initblk.padr1);                       \
    1515         pData->aCSR[13]  = RT_LE2H_U16(initblk.padr2);                       \
    1516         pData->aCSR[14]  = RT_LE2H_U16(initblk.padr3);                       \
    1517         pData->GCRDRA    = PHYSADDR(pData, initblk.rdra);                    \
    1518         pData->GCTDRA    = PHYSADDR(pData, initblk.tdra);                    \
     1506        pThis->aCSR[15]  = RT_LE2H_U16(initblk.mode);                        \
     1507        CSR_RCVRL(pThis) = (initblk.rlen < 9) ? (1 << initblk.rlen) : 512;   \
     1508        CSR_XMTRL(pThis) = (initblk.tlen < 9) ? (1 << initblk.tlen) : 512;   \
     1509        pThis->aCSR[ 6]  = (initblk.tlen << 12) | (initblk.rlen << 8);       \
     1510        pThis->aCSR[ 8]  = RT_LE2H_U16(initblk.ladrf1);                      \
     1511        pThis->aCSR[ 9]  = RT_LE2H_U16(initblk.ladrf2);                      \
     1512        pThis->aCSR[10]  = RT_LE2H_U16(initblk.ladrf3);                      \
     1513        pThis->aCSR[11]  = RT_LE2H_U16(initblk.ladrf4);                      \
     1514        pThis->aCSR[12]  = RT_LE2H_U16(initblk.padr1);                       \
     1515        pThis->aCSR[13]  = RT_LE2H_U16(initblk.padr2);                       \
     1516        pThis->aCSR[14]  = RT_LE2H_U16(initblk.padr3);                       \
     1517        pThis->GCRDRA    = PHYSADDR(pThis, initblk.rdra);                    \
     1518        pThis->GCTDRA    = PHYSADDR(pThis, initblk.tdra);                    \
    15191519} while (0)
    15201520
    1521     pcnetEnablePrivateIf(pData);
    1522 
    1523     if (BCR_SSIZE32(pData))
     1521    pcnetEnablePrivateIf(pThis);
     1522
     1523    if (BCR_SSIZE32(pThis))
    15241524    {
    15251525        struct INITBLK32 initblk;
    1526         pData->GCUpperPhys = 0;
     1526        pThis->GCUpperPhys = 0;
    15271527        PCNET_INIT();
    15281528        Log(("#%d initblk.rlen=%#04x, initblk.tlen=%#04x\n",
     
    15321532    {
    15331533        struct INITBLK16 initblk;
    1534         pData->GCUpperPhys = (0xff00 & (uint32_t)pData->aCSR[2]) << 16;
     1534        pThis->GCUpperPhys = (0xff00 & (uint32_t)pThis->aCSR[2]) << 16;
    15351535        PCNET_INIT();
    15361536        Log(("#%d initblk.rlen=%#04x, initblk.tlen=%#04x\n",
     
    15411541
    15421542    size_t cbRxBuffers = 0;
    1543     for (int i = CSR_RCVRL(pData); i >= 1; i--)
     1543    for (int i = CSR_RCVRL(pThis); i >= 1; i--)
    15441544    {
    15451545        RMD        rmd;
    1546         RTGCPHYS32 addr = pcnetRdraAddr(pData, i);
     1546        RTGCPHYS32 addr = pcnetRdraAddr(pThis, i);
    15471547        /* At this time it is not guaranteed that the buffers are already initialized. */
    1548         if (pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, addr), false))
     1548        if (pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), false))
    15491549            cbRxBuffers += 4096-rmd.rmd1.bcnt;
    15501550    }
     
    15581558     * short in RX buffers we notify this condition.
    15591559     */
    1560     pData->fSignalRxMiss = (cbRxBuffers == 0 || cbRxBuffers >= 32*_1K);
    1561 
    1562     if (pData->pDrv)
    1563         pData->pDrv->pfnSetPromiscuousMode(pData->pDrv, CSR_PROM(pData));
    1564 
    1565     CSR_RCVRC(pData) = CSR_RCVRL(pData);
    1566     CSR_XMTRC(pData) = CSR_XMTRL(pData);
     1560    pThis->fSignalRxMiss = (cbRxBuffers == 0 || cbRxBuffers >= 32*_1K);
     1561
     1562    if (pThis->pDrv)
     1563        pThis->pDrv->pfnSetPromiscuousMode(pThis->pDrv, CSR_PROM(pThis));
     1564
     1565    CSR_RCVRC(pThis) = CSR_RCVRL(pThis);
     1566    CSR_XMTRC(pThis) = CSR_XMTRL(pThis);
    15671567
    15681568#ifdef PCNET_NO_POLLING
    1569     pcnetUpdateRingHandlers(pData);
     1569    pcnetUpdateRingHandlers(pThis);
    15701570#endif
    15711571
    15721572    /* Reset cached RX and TX states */
    1573     CSR_CRST(pData) = CSR_CRBC(pData) = CSR_NRST(pData) = CSR_NRBC(pData) = 0;
    1574     CSR_CXST(pData) = CSR_CXBC(pData) = CSR_NXST(pData) = CSR_NXBC(pData) = 0;
     1573    CSR_CRST(pThis) = CSR_CRBC(pThis) = CSR_NRST(pThis) = CSR_NRBC(pThis) = 0;
     1574    CSR_CXST(pThis) = CSR_CXBC(pThis) = CSR_NXST(pThis) = CSR_NXBC(pThis) = 0;
    15751575
    15761576    LogRel(("PCNet#%d: Init: ss32=%d GCRDRA=%#010x[%d] GCTDRA=%#010x[%d]%s\n",
    1577             PCNET_INST_NR, BCR_SSIZE32(pData),
    1578             pData->GCRDRA, CSR_RCVRL(pData), pData->GCTDRA, CSR_XMTRL(pData),
    1579             !pData->fSignalRxMiss ? " (CSR0_MISS disabled)" : ""));
    1580 
    1581     pData->aCSR[0] |=  0x0101;       /* Initialization done */
    1582     pData->aCSR[0] &= ~0x0004;       /* clear STOP bit */
     1577            PCNET_INST_NR, BCR_SSIZE32(pThis),
     1578            pThis->GCRDRA, CSR_RCVRL(pThis), pThis->GCTDRA, CSR_XMTRL(pThis),
     1579            !pThis->fSignalRxMiss ? " (CSR0_MISS disabled)" : ""));
     1580
     1581    pThis->aCSR[0] |=  0x0101;       /* Initialization done */
     1582    pThis->aCSR[0] &= ~0x0004;       /* clear STOP bit */
    15831583}
    15841584#endif /* IN_RING3 */
     
    15871587 * Start RX/TX operation.
    15881588 */
    1589 static void pcnetStart(PCNetState *pData)
     1589static void pcnetStart(PCNetState *pThis)
    15901590{
    15911591    Log(("#%d pcnetStart:\n", PCNET_INST_NR));
    1592     if (!CSR_DTX(pData))
    1593         pData->aCSR[0] |= 0x0010;    /* set TXON */
    1594     if (!CSR_DRX(pData))
    1595         pData->aCSR[0] |= 0x0020;    /* set RXON */
    1596     pcnetEnablePrivateIf(pData);
    1597     pData->aCSR[0] &= ~0x0004;       /* clear STOP bit */
    1598     pData->aCSR[0] |=  0x0002;       /* STRT */
    1599     pcnetPollTimerStart(pData);      /* start timer if it was stopped */
     1592    if (!CSR_DTX(pThis))
     1593        pThis->aCSR[0] |= 0x0010;    /* set TXON */
     1594    if (!CSR_DRX(pThis))
     1595        pThis->aCSR[0] |= 0x0020;    /* set RXON */
     1596    pcnetEnablePrivateIf(pThis);
     1597    pThis->aCSR[0] &= ~0x0004;       /* clear STOP bit */
     1598    pThis->aCSR[0] |=  0x0002;       /* STRT */
     1599    pcnetPollTimerStart(pThis);      /* start timer if it was stopped */
    16001600}
    16011601
     
    16031603 * Stop RX/TX operation.
    16041604 */
    1605 static void pcnetStop(PCNetState *pData)
     1605static void pcnetStop(PCNetState *pThis)
    16061606{
    16071607    Log(("#%d pcnetStop:\n", PCNET_INST_NR));
    1608     pData->aCSR[0] &= ~0x7feb;
    1609     pData->aCSR[0] |=  0x0014;
    1610     pData->aCSR[4] &= ~0x02c2;
    1611     pData->aCSR[5] &= ~0x0011;
    1612     pcnetEnablePrivateIf(pData);
    1613     pcnetPollTimer(pData);
     1608    pThis->aCSR[0] &= ~0x7feb;
     1609    pThis->aCSR[0] |=  0x0014;
     1610    pThis->aCSR[4] &= ~0x02c2;
     1611    pThis->aCSR[5] &= ~0x0011;
     1612    pcnetEnablePrivateIf(pThis);
     1613    pcnetPollTimer(pThis);
    16141614}
    16151615
     
    16171617static DECLCALLBACK(void) pcnetWakeupReceive(PPDMDEVINS pDevIns)
    16181618{
    1619     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    1620     STAM_COUNTER_INC(&pData->StatRxOverflowWakeup);
    1621     if (pData->hEventOutOfRxSpace != NIL_RTSEMEVENT)
    1622         RTSemEventSignal(pData->hEventOutOfRxSpace);
     1619    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     1620    STAM_COUNTER_INC(&pThis->StatRxOverflowWakeup);
     1621    if (pThis->hEventOutOfRxSpace != NIL_RTSEMEVENT)
     1622        RTSemEventSignal(pThis->hEventOutOfRxSpace);
    16231623}
    16241624
     
    16381638 * @param  fSkipCurrent       if true, don't scan the current RDTE.
    16391639 */
    1640 static void pcnetRdtePoll(PCNetState *pData, bool fSkipCurrent=false)
    1641 {
    1642     STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatRdtePoll), a);
     1640static void pcnetRdtePoll(PCNetState *pThis, bool fSkipCurrent=false)
     1641{
     1642    STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatRdtePoll), a);
    16431643    /* assume lack of a next receive descriptor */
    1644     CSR_NRST(pData) = 0;
    1645 
    1646     if (RT_LIKELY(pData->GCRDRA))
     1644    CSR_NRST(pThis) = 0;
     1645
     1646    if (RT_LIKELY(pThis->GCRDRA))
    16471647    {
    16481648        /*
     
    16501650         */
    16511651        RMD        rmd;
    1652         int        i = CSR_RCVRC(pData);
     1652        int        i = CSR_RCVRC(pThis);
    16531653        RTGCPHYS32 addr;
    16541654
    16551655        if (i < 1)
    1656             i = CSR_RCVRL(pData);
     1656            i = CSR_RCVRL(pThis);
    16571657
    16581658        if (!fSkipCurrent)
    16591659        {
    1660             addr = pcnetRdraAddr(pData, i);
    1661             CSR_CRDA(pData) = CSR_CRBA(pData) = 0;
    1662             CSR_CRBC(pData) = CSR_CRST(pData) = 0;
    1663             if (!pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, addr), true))
     1660            addr = pcnetRdraAddr(pThis, i);
     1661            CSR_CRDA(pThis) = CSR_CRBA(pThis) = 0;
     1662            CSR_CRBC(pThis) = CSR_CRST(pThis) = 0;
     1663            if (!pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), true))
    16641664            {
    1665                 STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatRdtePoll), a);
     1665                STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
    16661666                return;
    16671667            }
    16681668            if (RT_LIKELY(!IS_RMD_BAD(rmd)))
    16691669            {
    1670                 CSR_CRDA(pData) = addr;                        /* Receive Descriptor Address */
    1671                 CSR_CRBA(pData) = rmd.rmd0.rbadr;              /* Receive Buffer Address */
    1672                 CSR_CRBC(pData) = rmd.rmd1.bcnt;               /* Receive Byte Count */
    1673                 CSR_CRST(pData) = ((uint32_t *)&rmd)[1] >> 16; /* Receive Status */
    1674                 if (pData->fMaybeOutOfSpace)
     1670                CSR_CRDA(pThis) = addr;                        /* Receive Descriptor Address */
     1671                CSR_CRBA(pThis) = rmd.rmd0.rbadr;              /* Receive Buffer Address */
     1672                CSR_CRBC(pThis) = rmd.rmd1.bcnt;               /* Receive Byte Count */
     1673                CSR_CRST(pThis) = ((uint32_t *)&rmd)[1] >> 16; /* Receive Status */
     1674                if (pThis->fMaybeOutOfSpace)
    16751675                {
    16761676#ifdef IN_RING3
    1677                     pcnetWakeupReceive(PCNETSTATE_2_DEVINS(pData));
     1677                    pcnetWakeupReceive(PCNETSTATE_2_DEVINS(pThis));
    16781678#else
    1679                     PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pData->CTX_SUFF(pCanRxQueue));
     1679                    PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pThis->CTX_SUFF(pCanRxQueue));
    16801680                    if (pItem)
    1681                         PDMQueueInsert(pData->CTX_SUFF(pCanRxQueue), pItem);
     1681                        PDMQueueInsert(pThis->CTX_SUFF(pCanRxQueue), pItem);
    16821682#endif
    16831683                }
     
    16851685            else
    16861686            {
    1687                 STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatRdtePoll), a);
     1687                STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
    16881688                /* This is not problematic since we don't own the descriptor */
    16891689                LogRel(("PCNet#%d: BAD RMD ENTRIES AT %#010x (i=%d)\n",
     
    16971697         */
    16981698        if (--i < 1)
    1699             i = CSR_RCVRL(pData);
    1700         addr = pcnetRdraAddr(pData, i);
    1701         CSR_NRDA(pData) = CSR_NRBA(pData) = 0;
    1702         CSR_NRBC(pData) = 0;
    1703         if (!pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, addr), true))
     1699            i = CSR_RCVRL(pThis);
     1700        addr = pcnetRdraAddr(pThis, i);
     1701        CSR_NRDA(pThis) = CSR_NRBA(pThis) = 0;
     1702        CSR_NRBC(pThis) = 0;
     1703        if (!pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, addr), true))
    17041704        {
    1705             STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatRdtePoll), a);
     1705            STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
    17061706            return;
    17071707        }
    17081708        if (RT_LIKELY(!IS_RMD_BAD(rmd)))
    17091709        {
    1710             CSR_NRDA(pData) = addr;                         /* Receive Descriptor Address */
    1711             CSR_NRBA(pData) = rmd.rmd0.rbadr;               /* Receive Buffer Address */
    1712             CSR_NRBC(pData) = rmd.rmd1.bcnt;                /* Receive Byte Count */
    1713             CSR_NRST(pData) = ((uint32_t *)&rmd)[1] >> 16;  /* Receive Status */
     1710            CSR_NRDA(pThis) = addr;                         /* Receive Descriptor Address */
     1711            CSR_NRBA(pThis) = rmd.rmd0.rbadr;               /* Receive Buffer Address */
     1712            CSR_NRBC(pThis) = rmd.rmd1.bcnt;                /* Receive Byte Count */
     1713            CSR_NRST(pThis) = ((uint32_t *)&rmd)[1] >> 16;  /* Receive Status */
    17141714        }
    17151715        else
    17161716        {
    1717             STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatRdtePoll), a);
     1717            STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
    17181718            /* This is not problematic since we don't own the descriptor */
    17191719            LogRel(("PCNet#%d: BAD RMD ENTRIES + AT %#010x (i=%d)\n",
     
    17281728    else
    17291729    {
    1730         CSR_CRDA(pData) = CSR_CRBA(pData) = CSR_NRDA(pData) = CSR_NRBA(pData) = 0;
    1731         CSR_CRBC(pData) = CSR_NRBC(pData) = CSR_CRST(pData) = 0;
    1732     }
    1733     STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatRdtePoll), a);
     1730        CSR_CRDA(pThis) = CSR_CRBA(pThis) = CSR_NRDA(pThis) = CSR_NRBA(pThis) = 0;
     1731        CSR_CRBC(pThis) = CSR_NRBC(pThis) = CSR_CRST(pThis) = 0;
     1732    }
     1733    STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatRdtePoll), a);
    17341734}
    17351735
     
    17381738 * @return true if transmit descriptors available
    17391739 */
    1740 static int pcnetTdtePoll(PCNetState *pData, TMD *tmd)
    1741 {
    1742     STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatTdtePoll), a);
    1743     if (RT_LIKELY(pData->GCTDRA))
    1744     {
    1745         RTGCPHYS32 cxda = pcnetTdraAddr(pData, CSR_XMTRC(pData));
    1746 
    1747         if (!pcnetTmdLoad(pData, tmd, PHYSADDR(pData, cxda), true))
     1740static int pcnetTdtePoll(PCNetState *pThis, TMD *tmd)
     1741{
     1742    STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatTdtePoll), a);
     1743    if (RT_LIKELY(pThis->GCTDRA))
     1744    {
     1745        RTGCPHYS32 cxda = pcnetTdraAddr(pThis, CSR_XMTRC(pThis));
     1746
     1747        if (!pcnetTmdLoad(pThis, tmd, PHYSADDR(pThis, cxda), true))
    17481748        {
    1749             STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatTdtePoll), a);
     1749            STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
    17501750            return 0;
    17511751        }
     
    17531753        if (RT_UNLIKELY(tmd->tmd1.ones != 15))
    17541754        {
    1755             STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatTdtePoll), a);
     1755            STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
    17561756            LogRel(("PCNet#%d: BAD TMD XDA=%#010x\n",
    1757                     PCNET_INST_NR, PHYSADDR(pData, cxda)));
     1757                    PCNET_INST_NR, PHYSADDR(pThis, cxda)));
    17581758            return 0;
    17591759        }
    17601760
    17611761        /* previous xmit descriptor */
    1762         CSR_PXDA(pData) = CSR_CXDA(pData);
    1763         CSR_PXBC(pData) = CSR_CXBC(pData);
    1764         CSR_PXST(pData) = CSR_CXST(pData);
     1762        CSR_PXDA(pThis) = CSR_CXDA(pThis);
     1763        CSR_PXBC(pThis) = CSR_CXBC(pThis);
     1764        CSR_PXST(pThis) = CSR_CXST(pThis);
    17651765
    17661766        /* set current trasmit decriptor. */
    1767         CSR_CXDA(pData) = cxda;
    1768         CSR_CXBC(pData) = tmd->tmd1.bcnt;
    1769         CSR_CXST(pData) = ((uint32_t *)tmd)[1] >> 16;
    1770         STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatTdtePoll), a);
    1771         return CARD_IS_OWNER(CSR_CXST(pData));
     1767        CSR_CXDA(pThis) = cxda;
     1768        CSR_CXBC(pThis) = tmd->tmd1.bcnt;
     1769        CSR_CXST(pThis) = ((uint32_t *)tmd)[1] >> 16;
     1770        STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
     1771        return CARD_IS_OWNER(CSR_CXST(pThis));
    17721772    }
    17731773    else
    17741774    {
    17751775        /** @todo consistency with previous receive descriptor */
    1776         CSR_CXDA(pData) = 0;
    1777         CSR_CXBC(pData) = CSR_CXST(pData) = 0;
    1778         STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatTdtePoll), a);
     1776        CSR_CXDA(pThis) = 0;
     1777        CSR_CXBC(pThis) = CSR_CXST(pThis) = 0;
     1778        STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatTdtePoll), a);
    17791779        return 0;
    17801780    }
     
    17871787 * Write data into guest receive buffers.
    17881788 */
    1789 static void pcnetReceiveNoSync(PCNetState *pData, const uint8_t *buf, size_t size)
    1790 {
    1791     PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pData);
     1789static void pcnetReceiveNoSync(PCNetState *pThis, const uint8_t *buf, size_t size)
     1790{
     1791    PPDMDEVINS pDevIns = PCNETSTATE_2_DEVINS(pThis);
    17921792    int is_padr = 0, is_bcast = 0, is_ladr = 0;
    17931793    unsigned i;
    17941794    int pkt_size;
    17951795
    1796     if (RT_UNLIKELY(CSR_DRX(pData) || CSR_STOP(pData) || CSR_SPND(pData) || !size))
     1796    if (RT_UNLIKELY(CSR_DRX(pThis) || CSR_STOP(pThis) || CSR_SPND(pThis) || !size))
    17971797        return;
    17981798
     
    18081808     * Perform address matching.
    18091809     */
    1810     if (   CSR_PROM(pData)
    1811         || (is_padr  = padr_match(pData, buf, size))
    1812         || (is_bcast = padr_bcast(pData, buf, size))
    1813         || (is_ladr  = ladr_match(pData, buf, size)))
    1814     {
    1815         if (HOST_IS_OWNER(CSR_CRST(pData)))
    1816             pcnetRdtePoll(pData);
    1817         if (RT_UNLIKELY(HOST_IS_OWNER(CSR_CRST(pData))))
     1810    if (   CSR_PROM(pThis)
     1811        || (is_padr  = padr_match(pThis, buf, size))
     1812        || (is_bcast = padr_bcast(pThis, buf, size))
     1813        || (is_ladr  = ladr_match(pThis, buf, size)))
     1814    {
     1815        if (HOST_IS_OWNER(CSR_CRST(pThis)))
     1816            pcnetRdtePoll(pThis);
     1817        if (RT_UNLIKELY(HOST_IS_OWNER(CSR_CRST(pThis))))
    18181818        {
    18191819            /* Not owned by controller. This should not be possible as
    18201820             * we already called pcnetCanReceive(). */
    18211821            LogRel(("PCNet#%d: no buffer: RCVRC=%d\n",
    1822                     PCNET_INST_NR, CSR_RCVRC(pData)));
     1822                    PCNET_INST_NR, CSR_RCVRC(pThis)));
    18231823            /* Dump the status of all RX descriptors */
    1824             const unsigned  cb = 1 << pData->iLog2DescSize;
    1825             RTGCPHYS32      GCPhys = pData->GCRDRA;
    1826             i = CSR_RCVRL(pData);
     1824            const unsigned  cb = 1 << pThis->iLog2DescSize;
     1825            RTGCPHYS32      GCPhys = pThis->GCRDRA;
     1826            i = CSR_RCVRL(pThis);
    18271827            while (i-- > 0)
    18281828            {
    18291829                RMD rmd;
    1830                 pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, GCPhys), false);
     1830                pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, GCPhys), false);
    18311831                LogRel(("  %#010x\n", rmd.rmd1));
    18321832                GCPhys += cb;
    18331833            }
    1834             pData->aCSR[0] |= 0x1000; /* Set MISS flag */
    1835             CSR_MISSC(pData)++;
     1834            pThis->aCSR[0] |= 0x1000; /* Set MISS flag */
     1835            CSR_MISSC(pThis)++;
    18361836        }
    18371837        else
    18381838        {
    1839             uint8_t   *src = &pData->abRecvBuf[8];
    1840             RTGCPHYS32 crda = CSR_CRDA(pData);
     1839            uint8_t   *src = &pThis->abRecvBuf[8];
     1840            RTGCPHYS32 crda = CSR_CRDA(pThis);
    18411841            RTGCPHYS32 next_crda;
    18421842            RMD      rmd, next_rmd;
     
    18441844
    18451845            memcpy(src, buf, size);
    1846             if (!CSR_ASTRP_RCV(pData))
     1846            if (!CSR_ASTRP_RCV(pThis))
    18471847            {
    18481848                uint32_t fcs = ~0;
     
    18631863#endif
    18641864
    1865             pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, crda), false);
    1866             /*if (!CSR_LAPPEN(pData))*/
     1865            pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, crda), false);
     1866            /*if (!CSR_LAPPEN(pThis))*/
    18671867                rmd.rmd1.stp = 1;
    18681868
    18691869            size_t count = RT_MIN(4096 - (size_t)rmd.rmd1.bcnt, size);
    1870             RTGCPHYS32 rbadr = PHYSADDR(pData, rmd.rmd0.rbadr);
     1870            RTGCPHYS32 rbadr = PHYSADDR(pThis, rmd.rmd0.rbadr);
    18711871#if 0
    1872             if (pData->fPrivIfEnabled)
     1872            if (pThis->fPrivIfEnabled)
    18731873            {
    1874                 uint8_t *pb = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    1875                             + rbadr - pData->GCRDRA + pData->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
     1874                uint8_t *pb = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     1875                            + rbadr - pThis->GCRDRA + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
    18761876                memcpy(pb, src, count);
    18771877            }
     
    18841884
    18851885            /* Read current receive descriptor index */
    1886             i = CSR_RCVRC(pData);
     1886            i = CSR_RCVRC(pThis);
    18871887
    18881888            while (size > 0)
     
    18901890                /* Read the entire next descriptor as we're likely to need it. */
    18911891                if (--i < 1)
    1892                     i = CSR_RCVRL(pData);
    1893                 next_crda = pcnetRdraAddr(pData, i);
     1892                    i = CSR_RCVRL(pThis);
     1893                next_crda = pcnetRdraAddr(pThis, i);
    18941894
    18951895                /* Check next descriptor's own bit. If we don't own it, we have
    18961896                 * to quit and write error status into the last descriptor we own.
    18971897                 */
    1898                 if (!pcnetRmdLoad(pData, &next_rmd, PHYSADDR(pData, next_crda), true))
     1898                if (!pcnetRmdLoad(pThis, &next_rmd, PHYSADDR(pThis, next_crda), true))
    18991899                    break;
    19001900
    19011901                /* Write back current descriptor, clear the own bit. */
    1902                 pcnetRmdStorePassHost(pData, &rmd, PHYSADDR(pData, crda));
     1902                pcnetRmdStorePassHost(pThis, &rmd, PHYSADDR(pThis, crda));
    19031903
    19041904                /* Switch to the next descriptor */
     
    19071907
    19081908                count = RT_MIN(4096 - (size_t)rmd.rmd1.bcnt, size);
    1909                 RTGCPHYS32 rbadr = PHYSADDR(pData, rmd.rmd0.rbadr);
     1909                RTGCPHYS32 rbadr = PHYSADDR(pThis, rmd.rmd0.rbadr);
    19101910#if 0
    1911                 if (pData->fPrivIfEnabled)
     1911                if (pThis->fPrivIfEnabled)
    19121912                {
    1913                     uint8_t *pb = (uint8_t*)pData->CTX_SUFF(pSharedMMIO)
    1914                                 + rbadr - pData->GCRDRA + pData->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
     1913                    uint8_t *pb = (uint8_t*)pThis->CTX_SUFF(pSharedMMIO)
     1914                                + rbadr - pThis->GCRDRA + pThis->CTX_SUFF(pSharedMMIO)->V.V1.offRxDescriptors;
    19151915                    memcpy(pb, src, count);
    19161916                }
     
    19261926            {
    19271927                rmd.rmd1.enp  = 1;
    1928                 rmd.rmd1.pam  = !CSR_PROM(pData) && is_padr;
    1929                 rmd.rmd1.lafm = !CSR_PROM(pData) && is_ladr;
    1930                 rmd.rmd1.bam  = !CSR_PROM(pData) && is_bcast;
     1928                rmd.rmd1.pam  = !CSR_PROM(pThis) && is_padr;
     1929                rmd.rmd1.lafm = !CSR_PROM(pThis) && is_ladr;
     1930                rmd.rmd1.bam  = !CSR_PROM(pThis) && is_bcast;
    19311931                rmd.rmd2.mcnt = pkt_size;
    19321932
    1933                 STAM_REL_COUNTER_ADD(&pData->StatReceiveBytes, pkt_size);
     1933                STAM_REL_COUNTER_ADD(&pThis->StatReceiveBytes, pkt_size);
    19341934            }
    19351935            else
     
    19421942
    19431943            /* write back, clear the own bit */
    1944             pcnetRmdStorePassHost(pData, &rmd, PHYSADDR(pData, crda));
    1945 
    1946             pData->aCSR[0] |= 0x0400;
     1944            pcnetRmdStorePassHost(pThis, &rmd, PHYSADDR(pThis, crda));
     1945
     1946            pThis->aCSR[0] |= 0x0400;
    19471947
    19481948            Log(("#%d RCVRC=%d CRDA=%#010x BLKS=%d\n", PCNET_INST_NR,
    1949                  CSR_RCVRC(pData), PHYSADDR(pData, CSR_CRDA(pData)), pktcount));
     1949                 CSR_RCVRC(pThis), PHYSADDR(pThis, CSR_CRDA(pThis)), pktcount));
    19501950#ifdef PCNET_DEBUG_RMD
    19511951            PRINT_RMD(&rmd);
     
    19541954            while (pktcount--)
    19551955            {
    1956                 if (CSR_RCVRC(pData) < 2)
    1957                     CSR_RCVRC(pData) = CSR_RCVRL(pData);
     1956                if (CSR_RCVRC(pThis) < 2)
     1957                    CSR_RCVRC(pThis) = CSR_RCVRL(pThis);
    19581958                else
    1959                     CSR_RCVRC(pData)--;
     1959                    CSR_RCVRC(pThis)--;
    19601960            }
    19611961            /* guest driver is owner: force repoll of current and next RDTEs */
    1962             CSR_CRST(pData) = 0;
     1962            CSR_CRST(pThis) = 0;
    19631963        }
    19641964    }
     
    19661966    /* see description of TXDPOLL:
    19671967     * ``transmit polling will take place following receive activities'' */
    1968     pcnetPollRxTx(pData);
    1969     pcnetUpdateIrq(pData);
     1968    pcnetPollRxTx(pThis);
     1969    pcnetUpdateIrq(pThis);
    19701970}
    19711971
     
    19761976 * @returns false if the link is down.
    19771977 */
    1978 DECLINLINE(bool) pcnetIsLinkUp(PCNetState *pData)
    1979 {
    1980     return pData->pDrv && !pData->fLinkTempDown && pData->fLinkUp;
     1978DECLINLINE(bool) pcnetIsLinkUp(PCNetState *pThis)
     1979{
     1980    return pThis->pDrv && !pThis->fLinkTempDown && pThis->fLinkUp;
    19811981}
    19821982
     
    19931993static DECLCALLBACK(bool) pcnetXmitQueueConsumer(PPDMDEVINS pDevIns, PPDMQUEUEITEMCORE pItem)
    19941994{
    1995     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     1995    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    19961996    NOREF(pItem);
    19971997
    19981998    /* Clear counter .*/
    1999     ASMAtomicAndU32(&pData->cPendingSends, 0);
     1999    ASMAtomicAndU32(&pThis->cPendingSends, 0);
    20002000#ifdef PCNET_QUEUE_SEND_PACKETS
    2001     int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     2001    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    20022002    AssertReleaseRC(rc);
    2003     pcnetSyncTransmit(pData);
    2004     PDMCritSectLeave(&pData->CritSect);
     2003    pcnetSyncTransmit(pThis);
     2004    PDMCritSectLeave(&pThis->CritSect);
    20052005#else
    2006     int rc = RTSemEventSignal(pData->hSendEventSem);
     2006    int rc = RTSemEventSignal(pThis->hSendEventSem);
    20072007    AssertRC(rc);
    20082008#endif
     
    20152015 * This is done as a precaution against mess left over by on
    20162016 */
    2017 DECLINLINE(void) pcnetXmitScrapFrame(PCNetState *pData)
    2018 {
    2019     pData->pvSendFrame = NULL;
    2020     pData->cbSendFrame = 0;
     2017DECLINLINE(void) pcnetXmitScrapFrame(PCNetState *pThis)
     2018{
     2019    pThis->pvSendFrame = NULL;
     2020    pThis->cbSendFrame = 0;
    20212021}
    20222022
     
    20252025 * Reads the first part of a frame
    20262026 */
    2027 DECLINLINE(void) pcnetXmitRead1st(PCNetState *pData, RTGCPHYS32 GCPhysFrame, const unsigned cbFrame)
    2028 {
    2029     Assert(PDMCritSectIsOwner(&pData->CritSect));
    2030     Assert(cbFrame < sizeof(pData->abSendBuf));
     2027DECLINLINE(void) pcnetXmitRead1st(PCNetState *pThis, RTGCPHYS32 GCPhysFrame, const unsigned cbFrame)
     2028{
     2029    Assert(PDMCritSectIsOwner(&pThis->CritSect));
     2030    Assert(cbFrame < sizeof(pThis->abSendBuf));
    20312031
    20322032#ifdef PCNET_QUEUE_SEND_PACKETS
    2033     AssertRelease(pData->cXmitRingBufPending < PCNET_MAX_XMIT_SLOTS-1);
    2034     pData->pvSendFrame = pData->apXmitRingBuffer[pData->iXmitRingBufProd];
     2033    AssertRelease(pThis->cXmitRingBufPending < PCNET_MAX_XMIT_SLOTS-1);
     2034    pThis->pvSendFrame = pThis->apXmitRingBuffer[pThis->iXmitRingBufProd];
    20352035#else
    2036     pData->pvSendFrame = pData->abSendBuf;
    2037 #endif
    2038     PDMDevHlpPhysRead(pData->CTX_SUFF(pDevIns), GCPhysFrame, pData->pvSendFrame, cbFrame);
    2039     pData->cbSendFrame = cbFrame;
     2036    pThis->pvSendFrame = pThis->abSendBuf;
     2037#endif
     2038    PDMDevHlpPhysRead(pThis->CTX_SUFF(pDevIns), GCPhysFrame, pThis->pvSendFrame, cbFrame);
     2039    pThis->cbSendFrame = cbFrame;
    20402040}
    20412041
     
    20442044 * Reads more into the current frame.
    20452045 */
    2046 DECLINLINE(void) pcnetXmitReadMore(PCNetState *pData, RTGCPHYS32 GCPhysFrame, const unsigned cbFrame)
    2047 {
    2048     Assert(pData->cbSendFrame + cbFrame <= MAX_FRAME);
    2049     PDMDevHlpPhysRead(pData->CTX_SUFF(pDevIns), GCPhysFrame, pData->pvSendFrame + pData->cbSendFrame, cbFrame);
    2050     pData->cbSendFrame += cbFrame;
     2046DECLINLINE(void) pcnetXmitReadMore(PCNetState *pThis, RTGCPHYS32 GCPhysFrame, const unsigned cbFrame)
     2047{
     2048    Assert(pThis->cbSendFrame + cbFrame <= MAX_FRAME);
     2049    PDMDevHlpPhysRead(pThis->CTX_SUFF(pDevIns), GCPhysFrame, pThis->pvSendFrame + pThis->cbSendFrame, cbFrame);
     2050    pThis->cbSendFrame += cbFrame;
    20512051}
    20522052
     
    20562056 * If we've reached the maxium number of frames, they will be flushed.
    20572057 */
    2058 DECLINLINE(int) pcnetXmitCompleteFrame(PCNetState *pData)
     2058DECLINLINE(int) pcnetXmitCompleteFrame(PCNetState *pThis)
    20592059{
    20602060#ifdef PCNET_QUEUE_SEND_PACKETS
    2061     Assert(PDMCritSectIsOwner(&pData->CritSect));
    2062     AssertRelease(pData->cXmitRingBufPending < PCNET_MAX_XMIT_SLOTS-1);
    2063     Assert(!pData->cbXmitRingBuffer[pData->iXmitRingBufProd]);
    2064 
    2065     pData->cbXmitRingBuffer[pData->iXmitRingBufProd] = (uint16_t)pData->cbSendFrame;
    2066     pData->iXmitRingBufProd = (pData->iXmitRingBufProd+1) & PCNET_MAX_XMIT_SLOTS_MASK;
    2067     ASMAtomicIncS32(&pData->cXmitRingBufPending);
    2068 
    2069     int rc = RTSemEventSignal(pData->hSendEventSem);
     2061    Assert(PDMCritSectIsOwner(&pThis->CritSect));
     2062    AssertRelease(pThis->cXmitRingBufPending < PCNET_MAX_XMIT_SLOTS-1);
     2063    Assert(!pThis->cbXmitRingBuffer[pThis->iXmitRingBufProd]);
     2064
     2065    pThis->cbXmitRingBuffer[pThis->iXmitRingBufProd] = (uint16_t)pThis->cbSendFrame;
     2066    pThis->iXmitRingBufProd = (pThis->iXmitRingBufProd+1) & PCNET_MAX_XMIT_SLOTS_MASK;
     2067    ASMAtomicIncS32(&pThis->cXmitRingBufPending);
     2068
     2069    int rc = RTSemEventSignal(pThis->hSendEventSem);
    20702070    AssertRC(rc);
    20712071
     
    20742074    /* Don't hold the critical section while transmitting data. */
    20752075    /** @note also avoids deadlocks with NAT as it can call us right back. */
    2076     PDMCritSectLeave(&pData->CritSect);
    2077 
    2078     STAM_PROFILE_ADV_START(&pData->StatTransmitSend, a);
    2079     if (pData->cbSendFrame > 70) /* unqualified guess */
    2080         pData->Led.Asserted.s.fWriting = pData->Led.Actual.s.fWriting = 1;
    2081 
    2082     pData->pDrv->pfnSend(pData->pDrv, pData->pvSendFrame, pData->cbSendFrame);
    2083     STAM_REL_COUNTER_ADD(&pData->StatTransmitBytes, pData->cbSendFrame);
    2084     pData->Led.Actual.s.fWriting = 0;
    2085     STAM_PROFILE_ADV_STOP(&pData->StatTransmitSend, a);
    2086 
    2087     return PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     2076    PDMCritSectLeave(&pThis->CritSect);
     2077
     2078    STAM_PROFILE_ADV_START(&pThis->StatTransmitSend, a);
     2079    if (pThis->cbSendFrame > 70) /* unqualified guess */
     2080        pThis->Led.Asserted.s.fWriting = pThis->Led.Actual.s.fWriting = 1;
     2081
     2082    pThis->pDrv->pfnSend(pThis->pDrv, pThis->pvSendFrame, pThis->cbSendFrame);
     2083    STAM_REL_COUNTER_ADD(&pThis->StatTransmitBytes, pThis->cbSendFrame);
     2084    pThis->Led.Actual.s.fWriting = 0;
     2085    STAM_PROFILE_ADV_STOP(&pThis->StatTransmitSend, a);
     2086
     2087    return PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    20882088#endif
    20892089}
     
    20932093 * Fails a TMD with a link down error.
    20942094 */
    2095 static void pcnetXmitFailTMDLinkDown(PCNetState *pData, TMD *pTmd)
     2095static void pcnetXmitFailTMDLinkDown(PCNetState *pThis, TMD *pTmd)
    20962096{
    20972097    /* make carrier error - hope this is correct. */
    2098     pData->cLinkDownReported++;
     2098    pThis->cLinkDownReported++;
    20992099    pTmd->tmd2.lcar = pTmd->tmd1.err = 1;
    2100     pData->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR */
    2101     pData->Led.Asserted.s.fError = pData->Led.Actual.s.fError = 1;
     2100    pThis->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR */
     2101    pThis->Led.Asserted.s.fError = pThis->Led.Actual.s.fError = 1;
    21022102    Log(("#%d pcnetTransmit: Signaling send error. swstyle=%#x\n",
    2103          PCNET_INST_NR, pData->aBCR[BCR_SWS]));
     2103         PCNET_INST_NR, pThis->aBCR[BCR_SWS]));
    21042104}
    21052105
     
    21072107 * Fails a TMD with a generic error.
    21082108 */
    2109 static void pcnetXmitFailTMDGeneric(PCNetState *pData, TMD *pTmd)
     2109static void pcnetXmitFailTMDGeneric(PCNetState *pThis, TMD *pTmd)
    21102110{
    21112111    /* make carrier error - hope this is correct. */
    21122112    pTmd->tmd2.lcar = pTmd->tmd1.err = 1;
    2113     pData->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR */
    2114     pData->Led.Asserted.s.fError = pData->Led.Actual.s.fError = 1;
     2113    pThis->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR */
     2114    pThis->Led.Asserted.s.fError = pThis->Led.Actual.s.fError = 1;
    21152115    Log(("#%d pcnetTransmit: Signaling send error. swstyle=%#x\n",
    2116          PCNET_INST_NR, pData->aBCR[BCR_SWS]));
     2116         PCNET_INST_NR, pThis->aBCR[BCR_SWS]));
    21172117}
    21182118
     
    21212121 * Transmit a loopback frame.
    21222122 */
    2123 DECLINLINE(void) pcnetXmitLoopbackFrame(PCNetState *pData)
    2124 {
    2125     pData->Led.Asserted.s.fReading = pData->Led.Actual.s.fReading = 1;
    2126     if (HOST_IS_OWNER(CSR_CRST(pData)))
    2127         pcnetRdtePoll(pData);
    2128 
    2129     Assert(pData->pvSendFrame);
    2130     pcnetReceiveNoSync(pData, (const uint8_t *)pData->pvSendFrame, pData->cbSendFrame);
    2131     pcnetXmitScrapFrame(pData);
    2132     pData->Led.Actual.s.fReading = 0;
     2123DECLINLINE(void) pcnetXmitLoopbackFrame(PCNetState *pThis)
     2124{
     2125    pThis->Led.Asserted.s.fReading = pThis->Led.Actual.s.fReading = 1;
     2126    if (HOST_IS_OWNER(CSR_CRST(pThis)))
     2127        pcnetRdtePoll(pThis);
     2128
     2129    Assert(pThis->pvSendFrame);
     2130    pcnetReceiveNoSync(pThis, (const uint8_t *)pThis->pvSendFrame, pThis->cbSendFrame);
     2131    pcnetXmitScrapFrame(pThis);
     2132    pThis->Led.Actual.s.fReading = 0;
    21332133}
    21342134
     
    21362136 * Flushes queued frames.
    21372137 */
    2138 DECLINLINE(void) pcnetXmitFlushFrames(PCNetState *pData)
    2139 {
    2140     pcnetXmitQueueConsumer(pData->CTX_SUFF(pDevIns), NULL);
     2138DECLINLINE(void) pcnetXmitFlushFrames(PCNetState *pThis)
     2139{
     2140    pcnetXmitQueueConsumer(pThis->CTX_SUFF(pDevIns), NULL);
    21412141}
    21422142
     
    21482148 * Try to transmit frames
    21492149 */
    2150 static void pcnetTransmit(PCNetState *pData)
    2151 {
    2152     if (RT_UNLIKELY(!CSR_TXON(pData)))
    2153     {
    2154         pData->aCSR[0] &= ~0x0008; /* Clear TDMD */
     2150static void pcnetTransmit(PCNetState *pThis)
     2151{
     2152    if (RT_UNLIKELY(!CSR_TXON(pThis)))
     2153    {
     2154        pThis->aCSR[0] &= ~0x0008; /* Clear TDMD */
    21552155        return;
    21562156    }
     
    21602160     */
    21612161    TMD tmd;
    2162     if (!pcnetTdtePoll(pData, &tmd))
     2162    if (!pcnetTdtePoll(pThis, &tmd))
    21632163        return;
    21642164
     
    21662166     * Clear TDMD.
    21672167     */
    2168     pData->aCSR[0] &= ~0x0008;
     2168    pThis->aCSR[0] &= ~0x0008;
    21692169
    21702170    /*
     
    21722172     */
    21732173#ifdef IN_RING3
    2174     pcnetXmitFlushFrames(pData);
     2174    pcnetXmitFlushFrames(pThis);
    21752175#else
    21762176# if 1
    2177     PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pData->CTX_SUFF(pXmitQueue));
     2177    PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pThis->CTX_SUFF(pXmitQueue));
    21782178    if (RT_UNLIKELY(pItem))
    2179         PDMQueueInsert(pData->CTX_SUFF(pXmitQueue), pItem);
     2179        PDMQueueInsert(pThis->CTX_SUFF(pXmitQueue), pItem);
    21802180# else
    2181     if (ASMAtomicIncU32(&pData->cPendingSends) < 16)
    2182     {
    2183         PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pData->CTX_SUFF(pXmitQueue));
     2181    if (ASMAtomicIncU32(&pThis->cPendingSends) < 16)
     2182    {
     2183        PPDMQUEUEITEMCORE pItem = PDMQueueAlloc(pThis->CTX_SUFF(pXmitQueue));
    21842184        if (RT_UNLIKELY(pItem))
    2185             PDMQueueInsert(pData->CTX_SUFF(pXmitQueue), pItem);
     2185            PDMQueueInsert(pThis->CTX_SUFF(pXmitQueue), pItem);
    21862186    }
    21872187    else
    2188         PDMQueueFlush(pData->CTX_SUFF(pXmitQueue));
     2188        PDMQueueFlush(pThis->CTX_SUFF(pXmitQueue));
    21892189# endif
    21902190#endif
     
    21972197 */
    21982198#ifdef PCNET_QUEUE_SEND_PACKETS
    2199 static int pcnetAsyncTransmit(PCNetState *pData)
    2200 {
    2201     Assert(PDMCritSectIsOwner(&pData->CritSect));
     2199static int pcnetAsyncTransmit(PCNetState *pThis)
     2200{
     2201    Assert(PDMCritSectIsOwner(&pThis->CritSect));
    22022202    size_t cb;
    22032203
    2204     while ((pData->cXmitRingBufPending > 0))
    2205     {
    2206         cb = pData->cbXmitRingBuffer[pData->iXmitRingBufCons];
     2204    while ((pThis->cXmitRingBufPending > 0))
     2205    {
     2206        cb = pThis->cbXmitRingBuffer[pThis->iXmitRingBufCons];
    22072207
    22082208        /* Don't hold the critical section while transmitting data. */
    22092209        /** @note also avoids deadlocks with NAT as it can call us right back. */
    2210         PDMCritSectLeave(&pData->CritSect);
    2211 
    2212         STAM_PROFILE_ADV_START(&pData->StatTransmitSend, a);
     2210        PDMCritSectLeave(&pThis->CritSect);
     2211
     2212        STAM_PROFILE_ADV_START(&pThis->StatTransmitSend, a);
    22132213        if (cb > 70) /* unqualified guess */
    2214             pData->Led.Asserted.s.fWriting = pData->Led.Actual.s.fWriting = 1;
    2215 
    2216         pData->pDrv->pfnSend(pData->pDrv, pData->apXmitRingBuffer[pData->iXmitRingBufCons], cb);
    2217         STAM_REL_COUNTER_ADD(&pData->StatTransmitBytes, cb);
    2218         pData->Led.Actual.s.fWriting = 0;
    2219         STAM_PROFILE_ADV_STOP(&pData->StatTransmitSend, a);
    2220 
    2221         int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     2214            pThis->Led.Asserted.s.fWriting = pThis->Led.Actual.s.fWriting = 1;
     2215
     2216        pThis->pDrv->pfnSend(pThis->pDrv, pThis->apXmitRingBuffer[pThis->iXmitRingBufCons], cb);
     2217        STAM_REL_COUNTER_ADD(&pThis->StatTransmitBytes, cb);
     2218        pThis->Led.Actual.s.fWriting = 0;
     2219        STAM_PROFILE_ADV_STOP(&pThis->StatTransmitSend, a);
     2220
     2221        int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    22222222        AssertReleaseRC(rc);
    22232223
    2224         pData->cbXmitRingBuffer[pData->iXmitRingBufCons] = 0;
    2225         pData->iXmitRingBufCons = (pData->iXmitRingBufCons+1) & PCNET_MAX_XMIT_SLOTS_MASK;
    2226         ASMAtomicDecS32(&pData->cXmitRingBufPending);
     2224        pThis->cbXmitRingBuffer[pThis->iXmitRingBufCons] = 0;
     2225        pThis->iXmitRingBufCons = (pThis->iXmitRingBufCons+1) & PCNET_MAX_XMIT_SLOTS_MASK;
     2226        ASMAtomicDecS32(&pThis->cXmitRingBufPending);
    22272227    }
    22282228    return VINF_SUCCESS;
    22292229}
    22302230
    2231 static int pcnetSyncTransmit(PCNetState *pData)
     2231static int pcnetSyncTransmit(PCNetState *pThis)
    22322232#else
    2233 static int pcnetAsyncTransmit(PCNetState *pData)
     2233static int pcnetAsyncTransmit(PCNetState *pThis)
    22342234#endif
    22352235{
    22362236    unsigned cFlushIrq = 0;
    22372237
    2238     Assert(PDMCritSectIsOwner(&pData->CritSect));
    2239 
    2240     if (RT_UNLIKELY(!CSR_TXON(pData)))
    2241     {
    2242         pData->aCSR[0] &= ~0x0008; /* Clear TDMD */
     2238    Assert(PDMCritSectIsOwner(&pThis->CritSect));
     2239
     2240    if (RT_UNLIKELY(!CSR_TXON(pThis)))
     2241    {
     2242        pThis->aCSR[0] &= ~0x0008; /* Clear TDMD */
    22432243        return VINF_SUCCESS;
    22442244    }
     
    22472247     * Iterate the transmit descriptors.
    22482248     */
    2249     STAM_PROFILE_ADV_START(&pData->StatTransmit, a);
     2249    STAM_PROFILE_ADV_START(&pThis->StatTransmit, a);
    22502250    do
    22512251    {
     
    22542254#endif
    22552255        TMD tmd;
    2256         if (!pcnetTdtePoll(pData, &tmd))
     2256        if (!pcnetTdtePoll(pThis, &tmd))
    22572257            break;
    22582258
    22592259        /* Don't continue sending packets when the link is down. */
    2260         if (RT_UNLIKELY(   !pcnetIsLinkUp(pData)
    2261                         &&  pData->cLinkDownReported > PCNET_MAX_LINKDOWN_REPORTED)
     2260        if (RT_UNLIKELY(   !pcnetIsLinkUp(pThis)
     2261                        &&  pThis->cLinkDownReported > PCNET_MAX_LINKDOWN_REPORTED)
    22622262            )
    22632263            break;
    22642264
    22652265#ifdef PCNET_DEBUG_TMD
    2266         Log2(("#%d TMDLOAD %#010x\n", PCNET_INST_NR, PHYSADDR(pData, CSR_CXDA(pData))));
     2266        Log2(("#%d TMDLOAD %#010x\n", PCNET_INST_NR, PHYSADDR(pThis, CSR_CXDA(pThis))));
    22672267        PRINT_TMD(&tmd);
    22682268#endif
    2269         pcnetXmitScrapFrame(pData);
     2269        pcnetXmitScrapFrame(pThis);
    22702270
    22712271        /*
     
    22752275        {
    22762276            const unsigned cb = 4096 - tmd.tmd1.bcnt;
    2277             Log(("#%d pcnetTransmit: stp&enp: cb=%d xmtrc=%#x\n", PCNET_INST_NR, cb, CSR_XMTRC(pData)));
    2278 
    2279             if (RT_LIKELY(pcnetIsLinkUp(pData) || CSR_LOOP(pData)))
     2277            Log(("#%d pcnetTransmit: stp&enp: cb=%d xmtrc=%#x\n", PCNET_INST_NR, cb, CSR_XMTRC(pThis)));
     2278
     2279            if (RT_LIKELY(pcnetIsLinkUp(pThis) || CSR_LOOP(pThis)))
    22802280            {
    22812281                /* From the manual: ``A zero length buffer is acceptable as
     
    22852285                if (RT_LIKELY(cb <= MAX_FRAME))
    22862286                {
    2287                     pcnetXmitRead1st(pData, PHYSADDR(pData, tmd.tmd0.tbadr), cb);
    2288                     if (CSR_LOOP(pData))
    2289                         pcnetXmitLoopbackFrame(pData);
     2287                    pcnetXmitRead1st(pThis, PHYSADDR(pThis, tmd.tmd0.tbadr), cb);
     2288                    if (CSR_LOOP(pThis))
     2289                        pcnetXmitLoopbackFrame(pThis);
    22902290                    else
    22912291                    {
    2292                         int rc = pcnetXmitCompleteFrame(pData);
     2292                        int rc = pcnetXmitCompleteFrame(pThis);
    22932293                        AssertRCReturn(rc, rc);
    22942294                    }
     
    23082308                     * buffer.'' */
    23092309                    LogRel(("PCNet#%d: pcnetAsyncTransmit: illegal 4kb frame -> ignoring\n", PCNET_INST_NR));
    2310                     pcnetTmdStorePassHost(pData, &tmd, PHYSADDR(pData, CSR_CXDA(pData)));
     2310                    pcnetTmdStorePassHost(pThis, &tmd, PHYSADDR(pThis, CSR_CXDA(pThis)));
    23112311                    break;
    23122312                }
     
    23172317                    LogRel(("PCNet#%d: pcnetAsyncTransmit: illegal 4kb frame -> signalling error\n", PCNET_INST_NR));
    23182318
    2319                     pcnetXmitFailTMDGeneric(pData, &tmd);
     2319                    pcnetXmitFailTMDGeneric(pThis, &tmd);
    23202320                }
    23212321            }
    23222322            else
    2323                 pcnetXmitFailTMDLinkDown(pData, &tmd);
     2323                pcnetXmitFailTMDLinkDown(pThis, &tmd);
    23242324
    23252325            /* Write back the TMD and pass it to the host (clear own bit). */
    2326             pcnetTmdStorePassHost(pData, &tmd, PHYSADDR(pData, CSR_CXDA(pData)));
     2326            pcnetTmdStorePassHost(pThis, &tmd, PHYSADDR(pThis, CSR_CXDA(pThis)));
    23272327
    23282328            /* advance the ring counter register */
    2329             if (CSR_XMTRC(pData) < 2)
    2330                 CSR_XMTRC(pData) = CSR_XMTRL(pData);
     2329            if (CSR_XMTRC(pThis) < 2)
     2330                CSR_XMTRC(pThis) = CSR_XMTRL(pThis);
    23312331            else
    2332                 CSR_XMTRC(pData)--;
     2332                CSR_XMTRC(pThis)--;
    23332333        }
    23342334        else if (tmd.tmd1.stp)
     
    23392339            bool fDropFrame = false;
    23402340            unsigned cb = 4096 - tmd.tmd1.bcnt;
    2341             pcnetXmitRead1st(pData, PHYSADDR(pData, tmd.tmd0.tbadr), cb);
     2341            pcnetXmitRead1st(pThis, PHYSADDR(pThis, tmd.tmd0.tbadr), cb);
    23422342            for (;;)
    23432343            {
     
    23462346                 */
    23472347#ifdef LOG_ENABLED
    2348                 const uint32_t iStart = CSR_XMTRC(pData);
    2349 #endif
    2350                 const uint32_t GCPhysPrevTmd = PHYSADDR(pData, CSR_CXDA(pData));
    2351                 if (CSR_XMTRC(pData) < 2)
    2352                     CSR_XMTRC(pData) = CSR_XMTRL(pData);
     2348                const uint32_t iStart = CSR_XMTRC(pThis);
     2349#endif
     2350                const uint32_t GCPhysPrevTmd = PHYSADDR(pThis, CSR_CXDA(pThis));
     2351                if (CSR_XMTRC(pThis) < 2)
     2352                    CSR_XMTRC(pThis) = CSR_XMTRL(pThis);
    23532353                else
    2354                     CSR_XMTRC(pData)--;
     2354                    CSR_XMTRC(pThis)--;
    23552355
    23562356                TMD dummy;
    2357                 if (!pcnetTdtePoll(pData, &dummy))
     2357                if (!pcnetTdtePoll(pThis, &dummy))
    23582358                {
    23592359                    /*
     
    23612361                     */
    23622362                    tmd.tmd2.buff = tmd.tmd2.uflo = tmd.tmd1.err = 1;
    2363                     pData->aCSR[0] |= 0x0200;        /* set TINT */
    2364                     if (!CSR_DXSUFLO(pData))         /* stop on xmit underflow */
    2365                         pData->aCSR[0] &= ~0x0010;   /* clear TXON */
    2366                     pcnetTmdStorePassHost(pData, &tmd, GCPhysPrevTmd);
     2363                    pThis->aCSR[0] |= 0x0200;        /* set TINT */
     2364                    if (!CSR_DXSUFLO(pThis))         /* stop on xmit underflow */
     2365                        pThis->aCSR[0] &= ~0x0010;   /* clear TXON */
     2366                    pcnetTmdStorePassHost(pThis, &tmd, GCPhysPrevTmd);
    23672367                    AssertMsgFailed(("pcnetTransmit: Underflow!!!\n"));
    23682368                    break;
     
    23702370
    23712371                /* release & save the previous tmd, pass it to the host */
    2372                 pcnetTmdStorePassHost(pData, &tmd, GCPhysPrevTmd);
     2372                pcnetTmdStorePassHost(pThis, &tmd, GCPhysPrevTmd);
    23732373
    23742374                /*
     
    23782378                cBuffers++;
    23792379#endif
    2380                 pcnetTmdLoad(pData, &tmd, PHYSADDR(pData, CSR_CXDA(pData)), false);
     2380                pcnetTmdLoad(pThis, &tmd, PHYSADDR(pThis, CSR_CXDA(pThis)), false);
    23812381                cb = 4096 - tmd.tmd1.bcnt;
    2382                 if (    pData->cbSendFrame + cb < MAX_FRAME
     2382                if (    pThis->cbSendFrame + cb < MAX_FRAME
    23832383                    &&  !fDropFrame)
    2384                     pcnetXmitReadMore(pData, PHYSADDR(pData, tmd.tmd0.tbadr), cb);
     2384                    pcnetXmitReadMore(pThis, PHYSADDR(pThis, tmd.tmd0.tbadr), cb);
    23852385                else
    23862386                {
    23872387                    AssertMsg(fDropFrame, ("pcnetTransmit: Frame is too big!!! %d bytes\n",
    2388                                 pData->cbSendFrame + cb));
     2388                                pThis->cbSendFrame + cb));
    23892389                    fDropFrame = true;
    23902390                }
     
    23922392                {
    23932393                    Log(("#%d pcnetTransmit: stp: cb=%d xmtrc=%#x-%#x\n", PCNET_INST_NR,
    2394                                 pData->cbSendFrame, iStart, CSR_XMTRC(pData)));
    2395                     if (pcnetIsLinkUp(pData) && !fDropFrame)
     2394                                pThis->cbSendFrame, iStart, CSR_XMTRC(pThis)));
     2395                    if (pcnetIsLinkUp(pThis) && !fDropFrame)
    23962396                    {
    2397                         int rc = pcnetXmitCompleteFrame(pData);
     2397                        int rc = pcnetXmitCompleteFrame(pThis);
    23982398                        AssertRCReturn(rc, rc);
    23992399                    }
    2400                     else if (CSR_LOOP(pData) && !fDropFrame)
    2401                         pcnetXmitLoopbackFrame(pData);
     2400                    else if (CSR_LOOP(pThis) && !fDropFrame)
     2401                        pcnetXmitLoopbackFrame(pThis);
    24022402                    else
    24032403                    {
    24042404                        if (!fDropFrame)
    2405                             pcnetXmitFailTMDLinkDown(pData, &tmd);
    2406                         pcnetXmitScrapFrame(pData);
     2405                            pcnetXmitFailTMDLinkDown(pThis, &tmd);
     2406                        pcnetXmitScrapFrame(pThis);
    24072407                    }
    24082408
    24092409                    /* Write back the TMD, pass it to the host */
    2410                     pcnetTmdStorePassHost(pData, &tmd, PHYSADDR(pData, CSR_CXDA(pData)));
     2410                    pcnetTmdStorePassHost(pThis, &tmd, PHYSADDR(pThis, CSR_CXDA(pThis)));
    24112411
    24122412                    /* advance the ring counter register */
    2413                     if (CSR_XMTRC(pData) < 2)
    2414                         CSR_XMTRC(pData) = CSR_XMTRL(pData);
     2413                    if (CSR_XMTRC(pThis) < 2)
     2414                        CSR_XMTRC(pThis) = CSR_XMTRL(pThis);
    24152415                    else
    2416                         CSR_XMTRC(pData)--;
     2416                        CSR_XMTRC(pThis)--;
    24172417                    break;
    24182418                }
     
    24302430        }
    24312431        /* Update TDMD, TXSTRT and TINT. */
    2432         pData->aCSR[0] &= ~0x0008;       /* clear TDMD */
    2433 
    2434         pData->aCSR[4] |=  0x0008;       /* set TXSTRT */
    2435         if (    !CSR_TOKINTD(pData)      /* Transmit OK Interrupt Disable, no infl. on errors. */
    2436             ||  (CSR_LTINTEN(pData) && tmd.tmd1.ltint)
     2432        pThis->aCSR[0] &= ~0x0008;       /* clear TDMD */
     2433
     2434        pThis->aCSR[4] |=  0x0008;       /* set TXSTRT */
     2435        if (    !CSR_TOKINTD(pThis)      /* Transmit OK Interrupt Disable, no infl. on errors. */
     2436            ||  (CSR_LTINTEN(pThis) && tmd.tmd1.ltint)
    24372437            ||  tmd.tmd1.err)
    24382438        {
     
    24422442        /** @todo should we continue after an error (tmd.tmd1.err) or not? */
    24432443
    2444         STAM_COUNTER_INC(&pData->aStatXmitChainCounts[RT_MIN(cBuffers,
    2445                                                       RT_ELEMENTS(pData->aStatXmitChainCounts)) - 1]);
    2446     } while (CSR_TXON(pData));          /* transfer on */
     2444        STAM_COUNTER_INC(&pThis->aStatXmitChainCounts[RT_MIN(cBuffers,
     2445                                                      RT_ELEMENTS(pThis->aStatXmitChainCounts)) - 1]);
     2446    } while (CSR_TXON(pThis));          /* transfer on */
    24472447
    24482448    if (cFlushIrq)
    24492449    {
    2450         STAM_COUNTER_INC(&pData->aStatXmitFlush[RT_MIN(cFlushIrq, RT_ELEMENTS(pData->aStatXmitFlush)) - 1]);
    2451         pData->aCSR[0] |= 0x0200;    /* set TINT */
    2452         pcnetUpdateIrq(pData);
    2453     }
    2454 
    2455     STAM_PROFILE_ADV_STOP(&pData->StatTransmit, a);
     2450        STAM_COUNTER_INC(&pThis->aStatXmitFlush[RT_MIN(cFlushIrq, RT_ELEMENTS(pThis->aStatXmitFlush)) - 1]);
     2451        pThis->aCSR[0] |= 0x0200;    /* set TINT */
     2452        pcnetUpdateIrq(pThis);
     2453    }
     2454
     2455    STAM_PROFILE_ADV_STOP(&pThis->StatTransmit, a);
    24562456
    24572457    return VINF_SUCCESS;
     
    24682468static DECLCALLBACK(int) pcnetAsyncSendThread(PPDMDEVINS pDevIns, PPDMTHREAD pThread)
    24692469{
    2470     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     2470    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    24712471
    24722472    /*
     
    24932493         * to leave the running state.
    24942494         */
    2495         int rc = RTSemEventWait(pData->hSendEventSem, RT_INDEFINITE_WAIT);
     2495        int rc = RTSemEventWait(pThis->hSendEventSem, RT_INDEFINITE_WAIT);
    24962496        AssertRCReturn(rc, rc);
    24972497        if (RT_UNLIKELY(pThread->enmState != PDMTHREADSTATE_RUNNING))
     
    25022502         * suspended while waiting for the critical section.
    25032503         */
    2504         rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     2504        rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    25052505        AssertReleaseRCReturn(rc, rc);
    25062506
    25072507        if (pThread->enmState == PDMTHREADSTATE_RUNNING)
    25082508        {
    2509             rc = pcnetAsyncTransmit(pData);
     2509            rc = pcnetAsyncTransmit(pThis);
    25102510            AssertReleaseRC(rc);
    25112511        }
    25122512
    2513         PDMCritSectLeave(&pData->CritSect);
     2513        PDMCritSectLeave(&pThis->CritSect);
    25142514    }
    25152515
     
    25282528static DECLCALLBACK(int) pcnetAsyncSendThreadWakeUp(PPDMDEVINS pDevIns, PPDMTHREAD pThread)
    25292529{
    2530     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    2531     return RTSemEventSignal(pData->hSendEventSem);
     2530    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     2531    return RTSemEventSignal(pThis->hSendEventSem);
    25322532}
    25332533
     
    25372537 * Poll for changes in RX and TX descriptor rings.
    25382538 */
    2539 static void pcnetPollRxTx(PCNetState *pData)
    2540 {
    2541     if (CSR_RXON(pData))
    2542         if (HOST_IS_OWNER(CSR_CRST(pData)))     /* Only poll RDTEs if none available */
    2543             pcnetRdtePoll(pData);
    2544 
    2545     if (CSR_TDMD(pData) || (CSR_TXON(pData) && !CSR_DPOLL(pData)))
    2546         pcnetTransmit(pData);
     2539static void pcnetPollRxTx(PCNetState *pThis)
     2540{
     2541    if (CSR_RXON(pThis))
     2542        if (HOST_IS_OWNER(CSR_CRST(pThis)))     /* Only poll RDTEs if none available */
     2543            pcnetRdtePoll(pThis);
     2544
     2545    if (CSR_TDMD(pThis) || (CSR_TXON(pThis) && !CSR_DPOLL(pThis)))
     2546        pcnetTransmit(pThis);
    25472547}
    25482548
     
    25532553 * @thread EMT, TAP.
    25542554 */
    2555 static void pcnetPollTimerStart(PCNetState *pData)
    2556 {
    2557     TMTimerSetMillies(pData->CTX_SUFF(pTimerPoll), 2);
     2555static void pcnetPollTimerStart(PCNetState *pThis)
     2556{
     2557    TMTimerSetMillies(pThis->CTX_SUFF(pTimerPoll), 2);
    25582558}
    25592559
     
    25632563 * @thread EMT.
    25642564 */
    2565 static void pcnetPollTimer(PCNetState *pData)
    2566 {
    2567     STAM_PROFILE_ADV_START(&pData->StatPollTimer, a);
     2565static void pcnetPollTimer(PCNetState *pThis)
     2566{
     2567    STAM_PROFILE_ADV_START(&pThis->StatPollTimer, a);
    25682568
    25692569#ifdef LOG_ENABLED
    25702570    TMD dummy;
    2571     if (CSR_STOP(pData) || CSR_SPND(pData))
     2571    if (CSR_STOP(pThis) || CSR_SPND(pThis))
    25722572        Log2(("#%d pcnetPollTimer time=%#010llx CSR_STOP=%d CSR_SPND=%d\n",
    2573              PCNET_INST_NR, RTTimeMilliTS(), CSR_STOP(pData), CSR_SPND(pData)));
     2573             PCNET_INST_NR, RTTimeMilliTS(), CSR_STOP(pThis), CSR_SPND(pThis)));
    25742574    else
    25752575        Log2(("#%d pcnetPollTimer time=%#010llx TDMD=%d TXON=%d POLL=%d TDTE=%d TDRA=%#x\n",
    2576              PCNET_INST_NR, RTTimeMilliTS(), CSR_TDMD(pData), CSR_TXON(pData),
    2577              !CSR_DPOLL(pData), pcnetTdtePoll(pData, &dummy), pData->GCTDRA));
     2576             PCNET_INST_NR, RTTimeMilliTS(), CSR_TDMD(pThis), CSR_TXON(pThis),
     2577             !CSR_DPOLL(pThis), pcnetTdtePoll(pThis, &dummy), pThis->GCTDRA));
    25782578    Log2(("#%d pcnetPollTimer: CSR_CXDA=%#x CSR_XMTRL=%d CSR_XMTRC=%d\n",
    2579           PCNET_INST_NR, CSR_CXDA(pData), CSR_XMTRL(pData), CSR_XMTRC(pData)));
     2579          PCNET_INST_NR, CSR_CXDA(pThis), CSR_XMTRL(pThis), CSR_XMTRC(pThis)));
    25802580#endif
    25812581#ifdef PCNET_DEBUG_TMD
    2582     if (CSR_CXDA(pData))
     2582    if (CSR_CXDA(pThis))
    25832583    {
    25842584        TMD tmd;
    2585         pcnetTmdLoad(pData, &tmd, PHYSADDR(pData, CSR_CXDA(pData)), false);
    2586         Log2(("#%d pcnetPollTimer: TMDLOAD %#010x\n", PCNET_INST_NR, PHYSADDR(pData, CSR_CXDA(pData))));
     2585        pcnetTmdLoad(pThis, &tmd, PHYSADDR(pThis, CSR_CXDA(pThis)), false);
     2586        Log2(("#%d pcnetPollTimer: TMDLOAD %#010x\n", PCNET_INST_NR, PHYSADDR(pThis, CSR_CXDA(pThis))));
    25872587        PRINT_TMD(&tmd);
    25882588    }
    25892589#endif
    2590     if (CSR_TDMD(pData))
    2591         pcnetTransmit(pData);
    2592 
    2593     pcnetUpdateIrq(pData);
     2590    if (CSR_TDMD(pThis))
     2591        pcnetTransmit(pThis);
     2592
     2593    pcnetUpdateIrq(pThis);
    25942594
    25952595    /* If the receive thread is waiting for new descriptors, poll TX/RX even if polling
    25962596     * disabled. We wouldn't need to poll for new TX descriptors in that case but it will
    25972597     * not hurt as waiting for RX descriptors should occur very seldom */
    2598     if (RT_LIKELY(   !CSR_STOP(pData)
    2599                   && !CSR_SPND(pData)
    2600                   && (   !CSR_DPOLL(pData)
    2601                       || pData->fMaybeOutOfSpace)))
     2598    if (RT_LIKELY(   !CSR_STOP(pThis)
     2599                  && !CSR_SPND(pThis)
     2600                  && (   !CSR_DPOLL(pThis)
     2601                      || pThis->fMaybeOutOfSpace)))
    26022602    {
    26032603        /* We ensure that we poll at least every 2ms (500Hz) but not more often than
     
    26082608         * interval is the default polling interval of the PCNet card (65536/33MHz). */
    26092609#ifdef PCNET_NO_POLLING
    2610         pcnetPollRxTx(pData);
     2610        pcnetPollRxTx(pThis);
    26112611#else
    2612         uint64_t u64Now = TMTimerGet(pData->CTX_SUFF(pTimerPoll));
    2613         if (RT_UNLIKELY(u64Now - pData->u64LastPoll > 200000))
     2612        uint64_t u64Now = TMTimerGet(pThis->CTX_SUFF(pTimerPoll));
     2613        if (RT_UNLIKELY(u64Now - pThis->u64LastPoll > 200000))
    26142614        {
    2615             pData->u64LastPoll = u64Now;
    2616             pcnetPollRxTx(pData);
     2615            pThis->u64LastPoll = u64Now;
     2616            pcnetPollRxTx(pThis);
    26172617        }
    2618         if (!TMTimerIsActive(pData->CTX_SUFF(pTimerPoll)))
    2619             pcnetPollTimerStart(pData);
    2620 #endif
    2621     }
    2622     STAM_PROFILE_ADV_STOP(&pData->StatPollTimer, a);
    2623 }
    2624 
    2625 
    2626 static int pcnetCSRWriteU16(PCNetState *pData, uint32_t u32RAP, uint32_t val)
     2618        if (!TMTimerIsActive(pThis->CTX_SUFF(pTimerPoll)))
     2619            pcnetPollTimerStart(pThis);
     2620#endif
     2621    }
     2622    STAM_PROFILE_ADV_STOP(&pThis->StatPollTimer, a);
     2623}
     2624
     2625
     2626static int pcnetCSRWriteU16(PCNetState *pThis, uint32_t u32RAP, uint32_t val)
    26272627{
    26282628    int      rc  = VINF_SUCCESS;
     
    26342634        case 0:
    26352635            {
    2636                 uint16_t csr0 = pData->aCSR[0];
     2636                uint16_t csr0 = pThis->aCSR[0];
    26372637                /* Clear any interrupt flags.
    26382638                 * Don't clear an interrupt flag which was not seen by the guest yet. */
    2639                 csr0 &= ~(val  &  0x7f00  & pData->u16CSR0LastSeenByGuest);
     2639                csr0 &= ~(val  &  0x7f00  & pThis->u16CSR0LastSeenByGuest);
    26402640                csr0  =  (csr0 & ~0x0040) | (val  & 0x0048);
    26412641                val   =  (val  &  0x007f) | (csr0 & 0x7f00);
     
    26452645                    val &= ~3;
    26462646
    2647                 Log(("#%d CSR0: old=%#06x new=%#06x\n", PCNET_INST_NR, pData->aCSR[0], csr0));
     2647                Log(("#%d CSR0: old=%#06x new=%#06x\n", PCNET_INST_NR, pThis->aCSR[0], csr0));
    26482648
    26492649#ifndef IN_RING3
     
    26542654                }
    26552655#endif
    2656                 pData->aCSR[0] = csr0;
    2657 
    2658                 if (!CSR_STOP(pData) && (val & 4))
    2659                     pcnetStop(pData);
     2656                pThis->aCSR[0] = csr0;
     2657
     2658                if (!CSR_STOP(pThis) && (val & 4))
     2659                    pcnetStop(pThis);
    26602660
    26612661#ifdef IN_RING3
    2662                 if (!CSR_INIT(pData) && (val & 1))
    2663                     pcnetInit(pData);
    2664 #endif
    2665 
    2666                 if (!CSR_STRT(pData) && (val & 2))
    2667                     pcnetStart(pData);
    2668 
    2669                 if (CSR_TDMD(pData))
    2670                     pcnetTransmit(pData);
     2662                if (!CSR_INIT(pThis) && (val & 1))
     2663                    pcnetInit(pThis);
     2664#endif
     2665
     2666                if (!CSR_STRT(pThis) && (val & 2))
     2667                    pcnetStart(pThis);
     2668
     2669                if (CSR_TDMD(pThis))
     2670                    pcnetTransmit(pThis);
    26712671
    26722672                return rc;
     
    27102710        case 74: /* XMTRC */
    27112711        case 112: /* MISSC */
    2712             if (CSR_STOP(pData) || CSR_SPND(pData))
     2712            if (CSR_STOP(pThis) || CSR_SPND(pThis))
    27132713                break;
    27142714        case 3: /* Interrupt Mask and Deferral Control */
    27152715            break;
    27162716        case 4: /* Test and Features Control */
    2717             pData->aCSR[4] &= ~(val & 0x026a);
     2717            pThis->aCSR[4] &= ~(val & 0x026a);
    27182718            val &= ~0x026a;
    2719             val |= pData->aCSR[4] & 0x026a;
     2719            val |= pThis->aCSR[4] & 0x026a;
    27202720            break;
    27212721        case 5: /* Extended Control and Interrupt 1 */
    2722             pData->aCSR[5] &= ~(val & 0x0a90);
     2722            pThis->aCSR[5] &= ~(val & 0x0a90);
    27232723            val &= ~0x0a90;
    2724             val |= pData->aCSR[5] & 0x0a90;
     2724            val |= pThis->aCSR[5] & 0x0a90;
    27252725            break;
    27262726        case 7: /* Extended Control and Interrupt 2 */
    27272727            {
    2728                 uint16_t csr7 = pData->aCSR[7];
     2728                uint16_t csr7 = pThis->aCSR[7];
    27292729                csr7 &=        ~0x0400 ;
    27302730                csr7 &= ~(val & 0x0800);
    27312731                csr7 |=  (val & 0x0400);
    2732                 pData->aCSR[7] = csr7;
     2732                pThis->aCSR[7] = csr7;
    27332733                return rc;
    27342734            }
    27352735        case 15: /* Mode */
    2736             if ((pData->aCSR[15] & 0x8000) != (val & 0x8000) && pData->pDrv)
     2736            if ((pThis->aCSR[15] & 0x8000) != (val & 0x8000) && pThis->pDrv)
    27372737            {
    27382738                Log(("#%d: promiscuous mode changed to %d\n", PCNET_INST_NR, !!(val & 0x8000)));
     
    27412741#else
    27422742                /* check for promiscuous mode change */
    2743                 if (pData->pDrv)
    2744                     pData->pDrv->pfnSetPromiscuousMode(pData->pDrv, !!(val & 0x8000));
     2743                if (pThis->pDrv)
     2744                    pThis->pDrv->pfnSetPromiscuousMode(pThis->pDrv, !!(val & 0x8000));
    27452745#endif
    27462746            }
    27472747            break;
    27482748        case 16: /* IADRL */
    2749             return pcnetCSRWriteU16(pData, 1, val);
     2749            return pcnetCSRWriteU16(pThis, 1, val);
    27502750        case 17: /* IADRH */
    2751             return pcnetCSRWriteU16(pData, 2, val);
     2751            return pcnetCSRWriteU16(pThis, 2, val);
    27522752
    27532753        /*
     
    27572757        case 24: /* BADRL */
    27582758        case 25: /* BADRU */
    2759             if (!CSR_STOP(pData) && !CSR_SPND(pData))
     2759            if (!CSR_STOP(pThis) && !CSR_SPND(pThis))
    27602760            {
    27612761                Log(("#%d: WRITE CSR%d, %#06x !!\n", PCNET_INST_NR, u32RAP, val));
     
    27632763            }
    27642764            if (u32RAP == 24)
    2765                 pData->GCRDRA = (pData->GCRDRA & 0xffff0000) | (val & 0x0000ffff);
     2765                pThis->GCRDRA = (pThis->GCRDRA & 0xffff0000) | (val & 0x0000ffff);
    27662766            else
    2767                 pData->GCRDRA = (pData->GCRDRA & 0x0000ffff) | ((val & 0x0000ffff) << 16);
    2768             Log(("#%d: WRITE CSR%d, %#06x => GCRDRA=%08x (alt init)\n", PCNET_INST_NR, u32RAP, val, pData->GCRDRA));
     2767                pThis->GCRDRA = (pThis->GCRDRA & 0x0000ffff) | ((val & 0x0000ffff) << 16);
     2768            Log(("#%d: WRITE CSR%d, %#06x => GCRDRA=%08x (alt init)\n", PCNET_INST_NR, u32RAP, val, pThis->GCRDRA));
    27692769            break;
    27702770
     
    27752775        case 30: /* BADXL */
    27762776        case 31: /* BADXU */
    2777             if (!CSR_STOP(pData) && !CSR_SPND(pData))
     2777            if (!CSR_STOP(pThis) && !CSR_SPND(pThis))
    27782778            {
    27792779                Log(("#%d: WRITE CSR%d, %#06x !!\n", PCNET_INST_NR, u32RAP, val));
     
    27812781            }
    27822782            if (u32RAP == 30)
    2783                 pData->GCTDRA = (pData->GCTDRA & 0xffff0000) | (val & 0x0000ffff);
     2783                pThis->GCTDRA = (pThis->GCTDRA & 0xffff0000) | (val & 0x0000ffff);
    27842784            else
    2785                 pData->GCTDRA = (pData->GCTDRA & 0x0000ffff) | ((val & 0x0000ffff) << 16);
    2786             Log(("#%d: WRITE CSR%d, %#06x => GCTDRA=%08x (alt init)\n", PCNET_INST_NR, u32RAP, val, pData->GCTDRA));
     2785                pThis->GCTDRA = (pThis->GCTDRA & 0x0000ffff) | ((val & 0x0000ffff) << 16);
     2786            Log(("#%d: WRITE CSR%d, %#06x => GCTDRA=%08x (alt init)\n", PCNET_INST_NR, u32RAP, val, pThis->GCTDRA));
    27872787            break;
    27882788
    27892789        case 58: /* Software Style */
    2790             rc = pcnetBCRWriteU16(pData, BCR_SWS, val);
     2790            rc = pcnetBCRWriteU16(pThis, BCR_SWS, val);
    27912791            break;
    27922792
     
    27992799        case 78: /* XMTRL */ /** @todo call pcnetUpdateRingHandlers */
    28002800                             /** @todo transmit ring length is stored in two's complement! */
    2801             if (!CSR_STOP(pData) && !CSR_SPND(pData))
     2801            if (!CSR_STOP(pThis) && !CSR_SPND(pThis))
    28022802            {
    28032803                Log(("#%d: WRITE CSR%d, %#06x !!\n", PCNET_INST_NR, u32RAP, val));
     
    28112811             * HACK ALERT! Set the counter registers too.
    28122812             */
    2813             pData->aCSR[u32RAP - 4] = val;
     2813            pThis->aCSR[u32RAP - 4] = val;
    28142814            break;
    28152815
     
    28172817            return rc;
    28182818    }
    2819     pData->aCSR[u32RAP] = val;
     2819    pThis->aCSR[u32RAP] = val;
    28202820    return rc;
    28212821}
     
    28362836}
    28372837
    2838 static uint32_t pcnetCSRReadU16(PCNetState *pData, uint32_t u32RAP)
     2838static uint32_t pcnetCSRReadU16(PCNetState *pThis, uint32_t u32RAP)
    28392839{
    28402840    uint32_t val;
     
    28422842    {
    28432843        case 0:
    2844             pcnetUpdateIrq(pData);
    2845             val = pData->aCSR[0];
     2844            pcnetUpdateIrq(pThis);
     2845            val = pThis->aCSR[0];
    28462846            val |= (val & 0x7800) ? 0x8000 : 0;
    2847             pData->u16CSR0LastSeenByGuest = val;
     2847            pThis->u16CSR0LastSeenByGuest = val;
    28482848            break;
    28492849        case 16:
    2850             return pcnetCSRReadU16(pData, 1);
     2850            return pcnetCSRReadU16(pThis, 1);
    28512851        case 17:
    2852             return pcnetCSRReadU16(pData, 2);
     2852            return pcnetCSRReadU16(pThis, 2);
    28532853        case 58:
    2854             return pcnetBCRReadU16(pData, BCR_SWS);
     2854            return pcnetBCRReadU16(pThis, BCR_SWS);
    28552855        case 68:    /* Custom register to pass link speed to driver */
    2856             return pcnetLinkSpd(pData->u32LinkSpeed);
     2856            return pcnetLinkSpd(pThis->u32LinkSpeed);
    28572857        case 88:
    2858             val = pData->aCSR[89];
     2858            val = pThis->aCSR[89];
    28592859            val <<= 16;
    2860             val |= pData->aCSR[88];
     2860            val |= pThis->aCSR[88];
    28612861            break;
    28622862        default:
    2863             val = pData->aCSR[u32RAP];
     2863            val = pThis->aCSR[u32RAP];
    28642864    }
    28652865#ifdef PCNET_DEBUG_CSR
     
    28692869}
    28702870
    2871 static int pcnetBCRWriteU16(PCNetState *pData, uint32_t u32RAP, uint32_t val)
     2871static int pcnetBCRWriteU16(PCNetState *pThis, uint32_t u32RAP, uint32_t val)
    28722872{
    28732873    int rc = VINF_SUCCESS;
     
    28792879    {
    28802880        case BCR_SWS:
    2881             if (!(CSR_STOP(pData) || CSR_SPND(pData)))
     2881            if (!(CSR_STOP(pThis) || CSR_SPND(pThis)))
    28822882                return rc;
    28832883            val &= ~0x0300;
     
    28892889                case 0:
    28902890                    val |= 0x0200; /* 16 bit */
    2891                     pData->iLog2DescSize = 3;
    2892                     pData->GCUpperPhys   = (0xff00 & (uint32_t)pData->aCSR[2]) << 16;
     2891                    pThis->iLog2DescSize = 3;
     2892                    pThis->GCUpperPhys   = (0xff00 & (uint32_t)pThis->aCSR[2]) << 16;
    28932893                    break;
    28942894                case 1:
    28952895                    val |= 0x0100; /* 32 bit */
    2896                     pData->iLog2DescSize = 4;
    2897                     pData->GCUpperPhys   = 0;
     2896                    pThis->iLog2DescSize = 4;
     2897                    pThis->GCUpperPhys   = 0;
    28982898                    break;
    28992899                case 2:
    29002900                case 3:
    29012901                    val |= 0x0300; /* 32 bit */
    2902                     pData->iLog2DescSize = 4;
    2903                     pData->GCUpperPhys   = 0;
     2902                    pThis->iLog2DescSize = 4;
     2903                    pThis->GCUpperPhys   = 0;
    29042904                    break;
    29052905            }
    29062906            Log(("#%d BCR_SWS=%#06x\n", PCNET_INST_NR, val));
    2907             pData->aCSR[58] = val;
     2907            pThis->aCSR[58] = val;
    29082908            /* fall through */
    29092909        case BCR_LNKST:
     
    29182918        case BCR_MIICAS:
    29192919        case BCR_MIIADDR:
    2920             pData->aBCR[u32RAP] = val;
     2920            pThis->aBCR[u32RAP] = val;
    29212921            break;
    29222922
    29232923        case BCR_STVAL:
    29242924            val &= 0xffff;
    2925             pData->aBCR[BCR_STVAL] = val;
    2926             if (pData->fAm79C973)
    2927                 TMTimerSetNano(pData->CTX_SUFF(pTimerSoftInt), 12800U * val);
     2925            pThis->aBCR[BCR_STVAL] = val;
     2926            if (pThis->fAm79C973)
     2927                TMTimerSetNano(pThis->CTX_SUFF(pTimerSoftInt), 12800U * val);
    29282928            break;
    29292929
    29302930        case BCR_MIIMDR:
    2931             pData->aMII[pData->aBCR[BCR_MIIADDR] & 0x1f] = val;
     2931            pThis->aMII[pThis->aBCR[BCR_MIIADDR] & 0x1f] = val;
    29322932#ifdef PCNET_DEBUG_MII
    2933             Log(("#%d pcnet: mii write %d <- %#x\n", PCNET_INST_NR, pData->aBCR[BCR_MIIADDR] & 0x1f, val));
     2933            Log(("#%d pcnet: mii write %d <- %#x\n", PCNET_INST_NR, pThis->aBCR[BCR_MIIADDR] & 0x1f, val));
    29342934#endif
    29352935            break;
     
    29412941}
    29422942
    2943 static uint32_t pcnetMIIReadU16(PCNetState *pData, uint32_t miiaddr)
     2943static uint32_t pcnetMIIReadU16(PCNetState *pThis, uint32_t miiaddr)
    29442944{
    29452945    uint32_t val;
    29462946    bool autoneg, duplex, fast;
    2947     STAM_COUNTER_INC(&pData->StatMIIReads);
    2948 
    2949     autoneg = (pData->aBCR[BCR_MIICAS] & 0x20) != 0;
    2950     duplex  = (pData->aBCR[BCR_MIICAS] & 0x10) != 0;
    2951     fast    = (pData->aBCR[BCR_MIICAS] & 0x08) != 0;
     2947    STAM_COUNTER_INC(&pThis->StatMIIReads);
     2948
     2949    autoneg = (pThis->aBCR[BCR_MIICAS] & 0x20) != 0;
     2950    duplex  = (pThis->aBCR[BCR_MIICAS] & 0x10) != 0;
     2951    fast    = (pThis->aBCR[BCR_MIICAS] & 0x08) != 0;
    29522952
    29532953    switch (miiaddr)
     
    29722972                | 0x0004    /* Link up. */
    29732973                | 0x0001;   /* Extended Capability, i.e. registers 4+ valid. */
    2974             if (!pData->fLinkUp || pData->fLinkTempDown) {
     2974            if (!pThis->fLinkUp || pThis->fLinkTempDown) {
    29752975                val &= ~(0x0020 | 0x0004);
    2976                 pData->cLinkDownReported++;
     2976                pThis->cLinkDownReported++;
    29772977            }
    29782978            if (!autoneg) {
     
    30183018        case 5:
    30193019            /* Link partner ability register. */
    3020             if (pData->fLinkUp && !pData->fLinkTempDown)
     3020            if (pThis->fLinkUp && !pThis->fLinkTempDown)
    30213021                val =   0x8000  /* Next page bit. */
    30223022                      | 0x4000  /* Link partner acked us. */
     
    30273027            {
    30283028                val = 0;
    3029                 pData->cLinkDownReported++;
     3029                pThis->cLinkDownReported++;
    30303030            }
    30313031            break;
     
    30333033        case 6:
    30343034            /* Auto negotiation expansion register. */
    3035             if (pData->fLinkUp && !pData->fLinkTempDown)
     3035            if (pThis->fLinkUp && !pThis->fLinkTempDown)
    30363036                val =   0x0008  /* Link partner supports npage. */
    30373037                      | 0x0004  /* Enable npage words. */
     
    30403040            {
    30413041                val = 0;
    3042                 pData->cLinkDownReported++;
     3042                pThis->cLinkDownReported++;
    30433043            }
    30443044            break;
     
    30553055}
    30563056
    3057 static uint32_t pcnetBCRReadU16(PCNetState *pData, uint32_t u32RAP)
     3057static uint32_t pcnetBCRReadU16(PCNetState *pThis, uint32_t u32RAP)
    30583058{
    30593059    uint32_t val;
     
    30653065        case BCR_LED2:
    30663066        case BCR_LED3:
    3067             val = pData->aBCR[u32RAP] & ~0x8000;
     3067            val = pThis->aBCR[u32RAP] & ~0x8000;
    30683068            /* Clear LNKSTE if we're not connected or if we've just loaded a VM state. */
    3069             if (!pData->pDrv || pData->fLinkTempDown || !pData->fLinkUp)
     3069            if (!pThis->pDrv || pThis->fLinkTempDown || !pThis->fLinkUp)
    30703070            {
    30713071                if (u32RAP == 4)
    3072                     pData->cLinkDownReported++;
     3072                    pThis->cLinkDownReported++;
    30733073                val &= ~0x40;
    30743074            }
    3075             val |= (val & 0x017f & pData->u32Lnkst) ? 0x8000 : 0;
     3075            val |= (val & 0x017f & pThis->u32Lnkst) ? 0x8000 : 0;
    30763076            break;
    30773077
    30783078        case BCR_MIIMDR:
    3079             if (pData->fAm79C973 && (pData->aBCR[BCR_MIIADDR] >> 5 & 0x1f) == 0)
     3079            if (pThis->fAm79C973 && (pThis->aBCR[BCR_MIIADDR] >> 5 & 0x1f) == 0)
    30803080            {
    3081                 uint32_t miiaddr = pData->aBCR[BCR_MIIADDR] & 0x1f;
    3082                 val = pcnetMIIReadU16(pData, miiaddr);
     3081                uint32_t miiaddr = pThis->aBCR[BCR_MIIADDR] & 0x1f;
     3082                val = pcnetMIIReadU16(pThis, miiaddr);
    30833083            }
    30843084            else
     
    30873087
    30883088        default:
    3089             val = u32RAP < BCR_MAX_RAP ? pData->aBCR[u32RAP] : 0;
     3089            val = u32RAP < BCR_MAX_RAP ? pThis->aBCR[u32RAP] : 0;
    30903090            break;
    30913091    }
     
    30973097
    30983098#ifdef IN_RING3 /* move down */
    3099 static void pcnetHardReset(PCNetState *pData)
     3099static void pcnetHardReset(PCNetState *pThis)
    31003100{
    31013101    int      i;
     
    31033103
    31043104    /* Initialize the PROM */
    3105     Assert(sizeof(pData->MacConfigured) == 6);
    3106     memcpy(pData->aPROM, &pData->MacConfigured, sizeof(pData->MacConfigured));
    3107     pData->aPROM[ 8] = 0x00;
    3108     pData->aPROM[ 9] = 0x11;
    3109     pData->aPROM[12] = pData->aPROM[13] = 0x00;
    3110     pData->aPROM[14] = pData->aPROM[15] = 0x57;
     3105    Assert(sizeof(pThis->MacConfigured) == 6);
     3106    memcpy(pThis->aPROM, &pThis->MacConfigured, sizeof(pThis->MacConfigured));
     3107    pThis->aPROM[ 8] = 0x00;
     3108    pThis->aPROM[ 9] = 0x11;
     3109    pThis->aPROM[12] = pThis->aPROM[13] = 0x00;
     3110    pThis->aPROM[14] = pThis->aPROM[15] = 0x57;
    31113111
    31123112    for (i = 0, checksum = 0; i < 16; i++)
    3113         checksum += pData->aPROM[i];
    3114     *(uint16_t *)&pData->aPROM[12] = RT_H2LE_U16(checksum);
    3115 
    3116     pData->aBCR[BCR_MSRDA] = 0x0005;
    3117     pData->aBCR[BCR_MSWRA] = 0x0005;
    3118     pData->aBCR[BCR_MC   ] = 0x0002;
    3119     pData->aBCR[BCR_LNKST] = 0x00c0;
    3120     pData->aBCR[BCR_LED1 ] = 0x0084;
    3121     pData->aBCR[BCR_LED2 ] = 0x0088;
    3122     pData->aBCR[BCR_LED3 ] = 0x0090;
    3123     pData->aBCR[BCR_FDC  ] = 0x0000;
    3124     pData->aBCR[BCR_BSBC ] = 0x9001;
    3125     pData->aBCR[BCR_EECAS] = 0x0002;
    3126     pData->aBCR[BCR_STVAL] = 0xffff;
    3127     pData->aCSR[58       ] = /* CSR58 is an alias for BCR20 */
    3128     pData->aBCR[BCR_SWS  ] = 0x0200;
    3129     pData->iLog2DescSize   = 3;
    3130     pData->aBCR[BCR_PLAT ] = 0xff06;
    3131     pData->aBCR[BCR_MIIADDR ] = 0;  /* Internal PHY on Am79C973 would be (0x1e << 5) */
    3132     pData->aBCR[BCR_PCIVID] = PCIDevGetVendorId(&pData->PciDev);
    3133     pData->aBCR[BCR_PCISID] = PCIDevGetSubSystemId(&pData->PciDev);
    3134     pData->aBCR[BCR_PCISVID] = PCIDevGetSubSystemVendorId(&pData->PciDev);
    3135 
    3136     pcnetSoftReset(pData);
     3113        checksum += pThis->aPROM[i];
     3114    *(uint16_t *)&pThis->aPROM[12] = RT_H2LE_U16(checksum);
     3115
     3116    pThis->aBCR[BCR_MSRDA] = 0x0005;
     3117    pThis->aBCR[BCR_MSWRA] = 0x0005;
     3118    pThis->aBCR[BCR_MC   ] = 0x0002;
     3119    pThis->aBCR[BCR_LNKST] = 0x00c0;
     3120    pThis->aBCR[BCR_LED1 ] = 0x0084;
     3121    pThis->aBCR[BCR_LED2 ] = 0x0088;
     3122    pThis->aBCR[BCR_LED3 ] = 0x0090;
     3123    pThis->aBCR[BCR_FDC  ] = 0x0000;
     3124    pThis->aBCR[BCR_BSBC ] = 0x9001;
     3125    pThis->aBCR[BCR_EECAS] = 0x0002;
     3126    pThis->aBCR[BCR_STVAL] = 0xffff;
     3127    pThis->aCSR[58       ] = /* CSR58 is an alias for BCR20 */
     3128    pThis->aBCR[BCR_SWS  ] = 0x0200;
     3129    pThis->iLog2DescSize   = 3;
     3130    pThis->aBCR[BCR_PLAT ] = 0xff06;
     3131    pThis->aBCR[BCR_MIIADDR ] = 0;  /* Internal PHY on Am79C973 would be (0x1e << 5) */
     3132    pThis->aBCR[BCR_PCIVID] = PCIDevGetVendorId(&pThis->PciDev);
     3133    pThis->aBCR[BCR_PCISID] = PCIDevGetSubSystemId(&pThis->PciDev);
     3134    pThis->aBCR[BCR_PCISVID] = PCIDevGetSubSystemVendorId(&pThis->PciDev);
     3135
     3136    pcnetSoftReset(pThis);
    31373137}
    31383138#endif /* IN_RING3 */
    31393139
    3140 static void pcnetAPROMWriteU8(PCNetState *pData, uint32_t addr, uint32_t val)
     3140static void pcnetAPROMWriteU8(PCNetState *pThis, uint32_t addr, uint32_t val)
    31413141{
    31423142    addr &= 0x0f;
     
    31443144    Log(("#%d pcnetAPROMWriteU8: addr=%#010x val=%#04x\n", PCNET_INST_NR, addr, val));
    31453145    /* Check APROMWE bit to enable write access */
    3146     if (pcnetBCRReadU16(pData, 2) & 0x80)
    3147         pData->aPROM[addr] = val;
    3148 }
    3149 
    3150 static uint32_t pcnetAPROMReadU8(PCNetState *pData, uint32_t addr)
    3151 {
    3152     uint32_t val = pData->aPROM[addr &= 0x0f];
     3146    if (pcnetBCRReadU16(pThis, 2) & 0x80)
     3147        pThis->aPROM[addr] = val;
     3148}
     3149
     3150static uint32_t pcnetAPROMReadU8(PCNetState *pThis, uint32_t addr)
     3151{
     3152    uint32_t val = pThis->aPROM[addr &= 0x0f];
    31533153    Log(("#%d pcnetAPROMReadU8: addr=%#010x val=%#04x\n", PCNET_INST_NR, addr, val));
    31543154    return val;
    31553155}
    31563156
    3157 static int pcnetIoportWriteU16(PCNetState *pData, uint32_t addr, uint32_t val)
     3157static int pcnetIoportWriteU16(PCNetState *pThis, uint32_t addr, uint32_t val)
    31583158{
    31593159    int rc = VINF_SUCCESS;
     
    31633163         addr, val));
    31643164#endif
    3165     if (RT_LIKELY(!BCR_DWIO(pData)))
     3165    if (RT_LIKELY(!BCR_DWIO(pThis)))
    31663166    {
    31673167        switch (addr & 0x0f)
    31683168        {
    31693169            case 0x00: /* RDP */
    3170                 pcnetPollTimer(pData);
    3171                 rc = pcnetCSRWriteU16(pData, pData->u32RAP, val);
    3172                 pcnetUpdateIrq(pData);
     3170                pcnetPollTimer(pThis);
     3171                rc = pcnetCSRWriteU16(pThis, pThis->u32RAP, val);
     3172                pcnetUpdateIrq(pThis);
    31733173                break;
    31743174            case 0x02: /* RAP */
    3175                 pData->u32RAP = val & 0x7f;
     3175                pThis->u32RAP = val & 0x7f;
    31763176                break;
    31773177            case 0x06: /* BDP */
    3178                 rc = pcnetBCRWriteU16(pData, pData->u32RAP, val);
     3178                rc = pcnetBCRWriteU16(pThis, pThis->u32RAP, val);
    31793179                break;
    31803180        }
     
    31863186}
    31873187
    3188 static uint32_t pcnetIoportReadU16(PCNetState *pData, uint32_t addr, int *pRC)
     3188static uint32_t pcnetIoportReadU16(PCNetState *pThis, uint32_t addr, int *pRC)
    31893189{
    31903190    uint32_t val = ~0U;
     
    31923192    *pRC = VINF_SUCCESS;
    31933193
    3194     if (RT_LIKELY(!BCR_DWIO(pData)))
     3194    if (RT_LIKELY(!BCR_DWIO(pThis)))
    31953195    {
    31963196        switch (addr & 0x0f)
     
    31993199                /** @note if we're not polling, then the guest will tell us when to poll by setting TDMD in CSR0 */
    32003200                /** Polling is then useless here and possibly expensive. */
    3201                 if (!CSR_DPOLL(pData))
    3202                     pcnetPollTimer(pData);
    3203 
    3204                 val = pcnetCSRReadU16(pData, pData->u32RAP);
    3205                 if (pData->u32RAP == 0)  // pcnetUpdateIrq() already called by pcnetCSRReadU16()
     3201                if (!CSR_DPOLL(pThis))
     3202                    pcnetPollTimer(pThis);
     3203
     3204                val = pcnetCSRReadU16(pThis, pThis->u32RAP);
     3205                if (pThis->u32RAP == 0)  // pcnetUpdateIrq() already called by pcnetCSRReadU16()
    32063206                    goto skip_update_irq;
    32073207                break;
    32083208            case 0x02: /* RAP */
    3209                 val = pData->u32RAP;
     3209                val = pThis->u32RAP;
    32103210                goto skip_update_irq;
    32113211            case 0x04: /* RESET */
    3212                 pcnetSoftReset(pData);
     3212                pcnetSoftReset(pThis);
    32133213                val = 0;
    32143214                break;
    32153215            case 0x06: /* BDP */
    3216                 val = pcnetBCRReadU16(pData, pData->u32RAP);
     3216                val = pcnetBCRReadU16(pThis, pThis->u32RAP);
    32173217                break;
    32183218        }
     
    32213221        Log(("#%d pcnetIoportReadU16: addr=%#010x val=%#06x BCR_DWIO !!\n", PCNET_INST_NR, addr, val & 0xffff));
    32223222
    3223     pcnetUpdateIrq(pData);
     3223    pcnetUpdateIrq(pThis);
    32243224
    32253225skip_update_irq:
     
    32303230}
    32313231
    3232 static int pcnetIoportWriteU32(PCNetState *pData, uint32_t addr, uint32_t val)
     3232static int pcnetIoportWriteU32(PCNetState *pThis, uint32_t addr, uint32_t val)
    32333233{
    32343234    int rc = VINF_SUCCESS;
     
    32383238         addr, val));
    32393239#endif
    3240     if (RT_LIKELY(BCR_DWIO(pData)))
     3240    if (RT_LIKELY(BCR_DWIO(pThis)))
    32413241    {
    32423242        switch (addr & 0x0f)
    32433243        {
    32443244            case 0x00: /* RDP */
    3245                 pcnetPollTimer(pData);
    3246                 rc = pcnetCSRWriteU16(pData, pData->u32RAP, val & 0xffff);
    3247                 pcnetUpdateIrq(pData);
     3245                pcnetPollTimer(pThis);
     3246                rc = pcnetCSRWriteU16(pThis, pThis->u32RAP, val & 0xffff);
     3247                pcnetUpdateIrq(pThis);
    32483248                break;
    32493249            case 0x04: /* RAP */
    3250                 pData->u32RAP = val & 0x7f;
     3250                pThis->u32RAP = val & 0x7f;
    32513251                break;
    32523252            case 0x0c: /* BDP */
    3253                 rc = pcnetBCRWriteU16(pData, pData->u32RAP, val & 0xffff);
     3253                rc = pcnetBCRWriteU16(pThis, pThis->u32RAP, val & 0xffff);
    32543254                break;
    32553255        }
     
    32583258    {
    32593259        /* switch device to dword I/O mode */
    3260         pcnetBCRWriteU16(pData, BCR_BSBC, pcnetBCRReadU16(pData, BCR_BSBC) | 0x0080);
     3260        pcnetBCRWriteU16(pThis, BCR_BSBC, pcnetBCRReadU16(pThis, BCR_BSBC) | 0x0080);
    32613261#ifdef PCNET_DEBUG_IO
    32623262        Log2(("device switched into dword i/o mode\n"));
     
    32693269}
    32703270
    3271 static uint32_t pcnetIoportReadU32(PCNetState *pData, uint32_t addr, int *pRC)
     3271static uint32_t pcnetIoportReadU32(PCNetState *pThis, uint32_t addr, int *pRC)
    32723272{
    32733273    uint32_t val = ~0U;
     
    32753275    *pRC = VINF_SUCCESS;
    32763276
    3277     if (RT_LIKELY(BCR_DWIO(pData)))
     3277    if (RT_LIKELY(BCR_DWIO(pThis)))
    32783278    {
    32793279        switch (addr & 0x0f)
     
    32823282                /** @note if we're not polling, then the guest will tell us when to poll by setting TDMD in CSR0 */
    32833283                /** Polling is then useless here and possibly expensive. */
    3284                 if (!CSR_DPOLL(pData))
    3285                     pcnetPollTimer(pData);
    3286 
    3287                 val = pcnetCSRReadU16(pData, pData->u32RAP);
    3288                 if (pData->u32RAP == 0)  // pcnetUpdateIrq() already called by pcnetCSRReadU16()
     3284                if (!CSR_DPOLL(pThis))
     3285                    pcnetPollTimer(pThis);
     3286
     3287                val = pcnetCSRReadU16(pThis, pThis->u32RAP);
     3288                if (pThis->u32RAP == 0)  // pcnetUpdateIrq() already called by pcnetCSRReadU16()
    32893289                    goto skip_update_irq;
    32903290                break;
    32913291            case 0x04: /* RAP */
    3292                 val = pData->u32RAP;
     3292                val = pThis->u32RAP;
    32933293                goto skip_update_irq;
    32943294            case 0x08: /* RESET */
    3295                 pcnetSoftReset(pData);
     3295                pcnetSoftReset(pThis);
    32963296                val = 0;
    32973297                break;
    32983298            case 0x0c: /* BDP */
    3299                 val = pcnetBCRReadU16(pData, pData->u32RAP);
     3299                val = pcnetBCRReadU16(pThis, pThis->u32RAP);
    33003300                break;
    33013301        }
     
    33033303    else
    33043304        Log(("#%d pcnetIoportReadU32: addr=%#010x val=%#010x !BCR_DWIO !!\n", PCNET_INST_NR, addr, val));
    3305     pcnetUpdateIrq(pData);
     3305    pcnetUpdateIrq(pThis);
    33063306
    33073307skip_update_irq:
     
    33123312}
    33133313
    3314 static void pcnetMMIOWriteU8(PCNetState *pData, RTGCPHYS addr, uint32_t val)
     3314static void pcnetMMIOWriteU8(PCNetState *pThis, RTGCPHYS addr, uint32_t val)
    33153315{
    33163316#ifdef PCNET_DEBUG_IO
     
    33183318#endif
    33193319    if (!(addr & 0x10))
    3320         pcnetAPROMWriteU8(pData, addr, val);
    3321 }
    3322 
    3323 static uint32_t pcnetMMIOReadU8(PCNetState *pData, RTGCPHYS addr)
     3320        pcnetAPROMWriteU8(pThis, addr, val);
     3321}
     3322
     3323static uint32_t pcnetMMIOReadU8(PCNetState *pThis, RTGCPHYS addr)
    33243324{
    33253325    uint32_t val = ~0U;
    33263326    if (!(addr & 0x10))
    3327         val = pcnetAPROMReadU8(pData, addr);
     3327        val = pcnetAPROMReadU8(pThis, addr);
    33283328#ifdef PCNET_DEBUG_IO
    33293329    Log2(("#%d pcnetMMIOReadU8: addr=%#010x val=%#04x\n", PCNET_INST_NR, addr, val & 0xff));
     
    33323332}
    33333333
    3334 static void pcnetMMIOWriteU16(PCNetState *pData, RTGCPHYS addr, uint32_t val)
     3334static void pcnetMMIOWriteU16(PCNetState *pThis, RTGCPHYS addr, uint32_t val)
    33353335{
    33363336#ifdef PCNET_DEBUG_IO
     
    33383338#endif
    33393339    if (addr & 0x10)
    3340         pcnetIoportWriteU16(pData, addr & 0x0f, val);
     3340        pcnetIoportWriteU16(pThis, addr & 0x0f, val);
    33413341    else
    33423342    {
    3343         pcnetAPROMWriteU8(pData, addr,   val     );
    3344         pcnetAPROMWriteU8(pData, addr+1, val >> 8);
    3345     }
    3346 }
    3347 
    3348 static uint32_t pcnetMMIOReadU16(PCNetState *pData, RTGCPHYS addr)
     3343        pcnetAPROMWriteU8(pThis, addr,   val     );
     3344        pcnetAPROMWriteU8(pThis, addr+1, val >> 8);
     3345    }
     3346}
     3347
     3348static uint32_t pcnetMMIOReadU16(PCNetState *pThis, RTGCPHYS addr)
    33493349{
    33503350    uint32_t val = ~0U;
     
    33523352
    33533353    if (addr & 0x10)
    3354         val = pcnetIoportReadU16(pData, addr & 0x0f, &rc);
     3354        val = pcnetIoportReadU16(pThis, addr & 0x0f, &rc);
    33553355    else
    33563356    {
    3357         val = pcnetAPROMReadU8(pData, addr+1);
     3357        val = pcnetAPROMReadU8(pThis, addr+1);
    33583358        val <<= 8;
    3359         val |= pcnetAPROMReadU8(pData, addr);
     3359        val |= pcnetAPROMReadU8(pThis, addr);
    33603360    }
    33613361#ifdef PCNET_DEBUG_IO
     
    33653365}
    33663366
    3367 static void pcnetMMIOWriteU32(PCNetState *pData, RTGCPHYS addr, uint32_t val)
     3367static void pcnetMMIOWriteU32(PCNetState *pThis, RTGCPHYS addr, uint32_t val)
    33683368{
    33693369#ifdef PCNET_DEBUG_IO
     
    33713371#endif
    33723372    if (addr & 0x10)
    3373         pcnetIoportWriteU32(pData, addr & 0x0f, val);
     3373        pcnetIoportWriteU32(pThis, addr & 0x0f, val);
    33743374    else
    33753375    {
    3376         pcnetAPROMWriteU8(pData, addr,   val      );
    3377         pcnetAPROMWriteU8(pData, addr+1, val >>  8);
    3378         pcnetAPROMWriteU8(pData, addr+2, val >> 16);
    3379         pcnetAPROMWriteU8(pData, addr+3, val >> 24);
    3380     }
    3381 }
    3382 
    3383 static uint32_t pcnetMMIOReadU32(PCNetState *pData, RTGCPHYS addr)
     3376        pcnetAPROMWriteU8(pThis, addr,   val      );
     3377        pcnetAPROMWriteU8(pThis, addr+1, val >>  8);
     3378        pcnetAPROMWriteU8(pThis, addr+2, val >> 16);
     3379        pcnetAPROMWriteU8(pThis, addr+3, val >> 24);
     3380    }
     3381}
     3382
     3383static uint32_t pcnetMMIOReadU32(PCNetState *pThis, RTGCPHYS addr)
    33843384{
    33853385    uint32_t val;
     
    33873387
    33883388    if (addr & 0x10)
    3389         val = pcnetIoportReadU32(pData, addr & 0x0f, &rc);
     3389        val = pcnetIoportReadU32(pThis, addr & 0x0f, &rc);
    33903390    else
    33913391    {
    3392         val  = pcnetAPROMReadU8(pData, addr+3);
     3392        val  = pcnetAPROMReadU8(pThis, addr+3);
    33933393        val <<= 8;
    3394         val |= pcnetAPROMReadU8(pData, addr+2);
     3394        val |= pcnetAPROMReadU8(pThis, addr+2);
    33953395        val <<= 8;
    3396         val |= pcnetAPROMReadU8(pData, addr+1);
     3396        val |= pcnetAPROMReadU8(pThis, addr+1);
    33973397        val <<= 8;
    3398         val |= pcnetAPROMReadU8(pData, addr  );
     3398        val |= pcnetAPROMReadU8(pThis, addr  );
    33993399    }
    34003400#ifdef PCNET_DEBUG_IO
     
    34193419                                        RTIOPORT Port, uint32_t *pu32, unsigned cb)
    34203420{
    3421     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3421    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    34223422    int        rc;
    34233423
    3424     STAM_PROFILE_ADV_START(&pData->StatAPROMRead, a);
    3425     rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     3424    STAM_PROFILE_ADV_START(&pThis->StatAPROMRead, a);
     3425    rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    34263426    if (rc == VINF_SUCCESS)
    34273427    {
     
    34293429        /* FreeBSD is accessing in dwords. */
    34303430        if (cb == 1)
    3431             *pu32 = pcnetAPROMReadU8(pData, Port);
    3432         else if (cb == 2 && !BCR_DWIO(pData))
    3433             *pu32 = pcnetAPROMReadU8(pData, Port)
    3434                   | (pcnetAPROMReadU8(pData, Port + 1) << 8);
    3435         else if (cb == 4 && BCR_DWIO(pData))
    3436             *pu32 = pcnetAPROMReadU8(pData, Port)
    3437                   | (pcnetAPROMReadU8(pData, Port + 1) << 8)
    3438                   | (pcnetAPROMReadU8(pData, Port + 2) << 16)
    3439                   | (pcnetAPROMReadU8(pData, Port + 3) << 24);
     3431            *pu32 = pcnetAPROMReadU8(pThis, Port);
     3432        else if (cb == 2 && !BCR_DWIO(pThis))
     3433            *pu32 = pcnetAPROMReadU8(pThis, Port)
     3434                  | (pcnetAPROMReadU8(pThis, Port + 1) << 8);
     3435        else if (cb == 4 && BCR_DWIO(pThis))
     3436            *pu32 = pcnetAPROMReadU8(pThis, Port)
     3437                  | (pcnetAPROMReadU8(pThis, Port + 1) << 8)
     3438                  | (pcnetAPROMReadU8(pThis, Port + 2) << 16)
     3439                  | (pcnetAPROMReadU8(pThis, Port + 3) << 24);
    34403440        else
    34413441        {
     
    34433443            rc = VERR_IOM_IOPORT_UNUSED;
    34443444        }
    3445         PDMCritSectLeave(&pData->CritSect);
    3446     }
    3447     STAM_PROFILE_ADV_STOP(&pData->StatAPROMRead, a);
     3445        PDMCritSectLeave(&pThis->CritSect);
     3446    }
     3447    STAM_PROFILE_ADV_STOP(&pThis->StatAPROMRead, a);
    34483448    LogFlow(("#%d pcnetIOPortAPromRead: Port=%RTiop *pu32=%#RX32 cb=%d rc=%Vrc\n", PCNET_INST_NR, Port, *pu32, cb, rc));
    34493449    return rc;
     
    34653465                                         RTIOPORT Port, uint32_t u32, unsigned cb)
    34663466{
    3467     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3467    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    34683468    int        rc;
    34693469
    34703470    if (cb == 1)
    34713471    {
    3472         STAM_PROFILE_ADV_START(&pData->StatAPROMWrite, a);
    3473         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     3472        STAM_PROFILE_ADV_START(&pThis->StatAPROMWrite, a);
     3473        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    34743474        if (RT_LIKELY(rc == VINF_SUCCESS))
    34753475        {
    3476             pcnetAPROMWriteU8(pData, Port, u32);
    3477             PDMCritSectLeave(&pData->CritSect);
     3476            pcnetAPROMWriteU8(pThis, Port, u32);
     3477            PDMCritSectLeave(&pThis->CritSect);
    34783478        }
    3479         STAM_PROFILE_ADV_STOP(&pData->StatAPROMWrite, a);
     3479        STAM_PROFILE_ADV_STOP(&pThis->StatAPROMWrite, a);
    34803480    }
    34813481    else
     
    35073507                                   RTIOPORT Port, uint32_t *pu32, unsigned cb)
    35083508{
    3509     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3509    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    35103510    int         rc    = VINF_SUCCESS;
    35113511
    3512     STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatIORead), a);
    3513     rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_READ);
     3512    STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatIORead), a);
     3513    rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_READ);
    35143514    if (RT_LIKELY(rc == VINF_SUCCESS))
    35153515    {
    35163516        switch (cb)
    35173517        {
    3518             case 2: *pu32 = pcnetIoportReadU16(pData, Port, &rc); break;
    3519             case 4: *pu32 = pcnetIoportReadU32(pData, Port, &rc); break;
     3518            case 2: *pu32 = pcnetIoportReadU16(pThis, Port, &rc); break;
     3519            case 4: *pu32 = pcnetIoportReadU32(pThis, Port, &rc); break;
    35203520            default:
    35213521                rc = VERR_IOM_IOPORT_UNUSED;
    35223522                break;
    35233523        }
    3524         PDMCritSectLeave(&pData->CritSect);
    3525     }
    3526     STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatIORead), a);
     3524        PDMCritSectLeave(&pThis->CritSect);
     3525    }
     3526    STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatIORead), a);
    35273527    Log2(("#%d pcnetIOPortRead: Port=%RTiop *pu32=%#RX32 cb=%d rc=%Vrc\n", PCNET_INST_NR, Port, *pu32, cb, rc));
    35283528#ifdef LOG_ENABLED
     
    35483548                                    RTIOPORT Port, uint32_t u32, unsigned cb)
    35493549{
    3550     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3550    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    35513551    int         rc    = VINF_SUCCESS;
    35523552
    3553     STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatIOWrite), a);
    3554     rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     3553    STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatIOWrite), a);
     3554    rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    35553555    if (RT_LIKELY(rc == VINF_SUCCESS))
    35563556    {
    35573557        switch (cb)
    35583558        {
    3559             case 2: rc = pcnetIoportWriteU16(pData, Port, u32); break;
    3560             case 4: rc = pcnetIoportWriteU32(pData, Port, u32); break;
     3559            case 2: rc = pcnetIoportWriteU16(pThis, Port, u32); break;
     3560            case 4: rc = pcnetIoportWriteU32(pThis, Port, u32); break;
    35613561            default:
    35623562                AssertMsgFailed(("Port=%#x cb=%d u32=%#x\n", Port, cb, u32));
     
    35643564                break;
    35653565        }
    3566         PDMCritSectLeave(&pData->CritSect);
    3567     }
    3568     STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatIOWrite), a);
     3566        PDMCritSectLeave(&pThis->CritSect);
     3567    }
     3568    STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatIOWrite), a);
    35693569    Log2(("#%d pcnetIOPortWrite: Port=%RTiop u32=%#RX32 cb=%d rc=%Vrc\n", PCNET_INST_NR, Port, u32, cb, rc));
    35703570#ifdef LOG_ENABLED
     
    35903590                                 RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    35913591{
    3592     PCNetState *pData = (PCNetState *)pvUser;
     3592    PCNetState *pThis = (PCNetState *)pvUser;
    35933593    int         rc    = VINF_SUCCESS;
    35943594
     
    35963596     * We have to check the range, because we're page aligning the MMIO stuff presently.
    35973597     */
    3598     if (GCPhysAddr - pData->MMIOBase < PCNET_PNPMMIO_SIZE)
    3599     {
    3600         STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatMMIORead), a);
    3601         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_MMIO_READ);
     3598    if (GCPhysAddr - pThis->MMIOBase < PCNET_PNPMMIO_SIZE)
     3599    {
     3600        STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatMMIORead), a);
     3601        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_MMIO_READ);
    36023602        if (RT_LIKELY(rc == VINF_SUCCESS))
    36033603        {
    36043604            switch (cb)
    36053605            {
    3606                 case 1:  *(uint8_t  *)pv = pcnetMMIOReadU8 (pData, GCPhysAddr); break;
    3607                 case 2:  *(uint16_t *)pv = pcnetMMIOReadU16(pData, GCPhysAddr); break;
    3608                 case 4:  *(uint32_t *)pv = pcnetMMIOReadU32(pData, GCPhysAddr); break;
     3606                case 1:  *(uint8_t  *)pv = pcnetMMIOReadU8 (pThis, GCPhysAddr); break;
     3607                case 2:  *(uint16_t *)pv = pcnetMMIOReadU16(pThis, GCPhysAddr); break;
     3608                case 4:  *(uint32_t *)pv = pcnetMMIOReadU32(pThis, GCPhysAddr); break;
    36093609                default:
    36103610                    AssertMsgFailed(("cb=%d\n", cb));
     
    36123612                    break;
    36133613            }
    3614             PDMCritSectLeave(&pData->CritSect);
     3614            PDMCritSectLeave(&pThis->CritSect);
    36153615        }
    3616         STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatMMIORead), a);
     3616        STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatMMIORead), a);
    36173617    }
    36183618    else
     
    36433643                                  RTGCPHYS GCPhysAddr, void *pv, unsigned cb)
    36443644{
    3645     PCNetState *pData = (PCNetState *)pvUser;
     3645    PCNetState *pThis = (PCNetState *)pvUser;
    36463646    int         rc    = VINF_SUCCESS;
    36473647
     
    36493649     * We have to check the range, because we're page aligning the MMIO stuff presently.
    36503650     */
    3651     if (GCPhysAddr - pData->MMIOBase < PCNET_PNPMMIO_SIZE)
    3652     {
    3653         STAM_PROFILE_ADV_START(&pData->CTXSUFF(StatMMIOWrite), a);
    3654         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_MMIO_WRITE);
     3651    if (GCPhysAddr - pThis->MMIOBase < PCNET_PNPMMIO_SIZE)
     3652    {
     3653        STAM_PROFILE_ADV_START(&pThis->CTXSUFF(StatMMIOWrite), a);
     3654        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_MMIO_WRITE);
    36553655        if (RT_LIKELY(rc == VINF_SUCCESS))
    36563656        {
    36573657            switch (cb)
    36583658            {
    3659                 case 1:  pcnetMMIOWriteU8 (pData, GCPhysAddr, *(uint8_t  *)pv); break;
    3660                 case 2:  pcnetMMIOWriteU16(pData, GCPhysAddr, *(uint16_t *)pv); break;
    3661                 case 4:  pcnetMMIOWriteU32(pData, GCPhysAddr, *(uint32_t *)pv); break;
     3659                case 1:  pcnetMMIOWriteU8 (pThis, GCPhysAddr, *(uint8_t  *)pv); break;
     3660                case 2:  pcnetMMIOWriteU16(pThis, GCPhysAddr, *(uint16_t *)pv); break;
     3661                case 4:  pcnetMMIOWriteU32(pThis, GCPhysAddr, *(uint32_t *)pv); break;
    36623662                default:
    36633663                    AssertMsgFailed(("cb=%d\n", cb));
     
    36653665                    break;
    36663666            }
    3667             PDMCritSectLeave(&pData->CritSect);
     3667            PDMCritSectLeave(&pThis->CritSect);
    36683668        }
    36693669        // else rc == VINF_IOM_HC_MMIO_WRITE => handle in ring3
    36703670
    3671         STAM_PROFILE_ADV_STOP(&pData->CTXSUFF(StatMMIOWrite), a);
     3671        STAM_PROFILE_ADV_STOP(&pThis->CTXSUFF(StatMMIOWrite), a);
    36723672    }
    36733673    LogFlow(("#%d pcnetMMIOWrite: pvUser=%p:{%.*Rhxs} cb=%d GCPhysAddr=%RGp rc=%Vrc\n",
     
    36913691static DECLCALLBACK(void) pcnetTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer)
    36923692{
    3693     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3693    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    36943694    int         rc;
    36953695
    3696     STAM_PROFILE_ADV_START(&pData->StatTimer, a);
    3697     rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     3696    STAM_PROFILE_ADV_START(&pThis->StatTimer, a);
     3697    rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    36983698    AssertReleaseRC(rc);
    36993699
    3700     pcnetPollTimer(pData);
    3701 
    3702     PDMCritSectLeave(&pData->CritSect);
    3703     STAM_PROFILE_ADV_STOP(&pData->StatTimer, a);
     3700    pcnetPollTimer(pThis);
     3701
     3702    PDMCritSectLeave(&pThis->CritSect);
     3703    STAM_PROFILE_ADV_STOP(&pThis->StatTimer, a);
    37043704}
    37053705
     
    37143714static DECLCALLBACK(void) pcnetTimerSoftInt(PPDMDEVINS pDevIns, PTMTIMER pTimer)
    37153715{
    3716     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    3717 
    3718     pData->aCSR[7] |= 0x0800; /* STINT */
    3719     pcnetUpdateIrq(pData);
    3720     TMTimerSetNano(pData->CTX_SUFF(pTimerSoftInt), 12800U * (pData->aBCR[BCR_STVAL] & 0xffff));
     3716    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     3717
     3718    pThis->aCSR[7] |= 0x0800; /* STINT */
     3719    pcnetUpdateIrq(pThis);
     3720    TMTimerSetNano(pThis->CTX_SUFF(pTimerSoftInt), 12800U * (pThis->aBCR[BCR_STVAL] & 0xffff));
    37213721}
    37223722
     
    37343734static DECLCALLBACK(void) pcnetTimerRestore(PPDMDEVINS pDevIns, PTMTIMER pTimer)
    37353735{
    3736     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    3737     int         rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     3736    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     3737    int         rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    37383738    AssertReleaseRC(rc);
    37393739
    37403740    rc = VERR_GENERAL_FAILURE;
    3741     if (pData->cLinkDownReported <= PCNET_MAX_LINKDOWN_REPORTED)
    3742         rc = TMTimerSetMillies(pData->pTimerRestore, 1500);
     3741    if (pThis->cLinkDownReported <= PCNET_MAX_LINKDOWN_REPORTED)
     3742        rc = TMTimerSetMillies(pThis->pTimerRestore, 1500);
    37433743    if (RT_FAILURE(rc))
    37443744    {
    3745         pData->fLinkTempDown = false;
    3746         if (pData->fLinkUp)
     3745        pThis->fLinkTempDown = false;
     3746        if (pThis->fLinkUp)
    37473747        {
    37483748            LogRel(("PCNet#%d: The link is back up again after the restore.\n",
    37493749                    pDevIns->iInstance));
    37503750            Log(("#%d pcnetTimerRestore: Clearing ERR and CERR after load. cLinkDownReported=%d\n",
    3751                  pDevIns->iInstance, pData->cLinkDownReported));
    3752             pData->aCSR[0] &= ~(RT_BIT(15) | RT_BIT(13)); /* ERR | CERR - probably not 100% correct either... */
    3753             pData->Led.Actual.s.fError = 0;
     3751                 pDevIns->iInstance, pThis->cLinkDownReported));
     3752            pThis->aCSR[0] &= ~(RT_BIT(15) | RT_BIT(13)); /* ERR | CERR - probably not 100% correct either... */
     3753            pThis->Led.Actual.s.fError = 0;
    37543754        }
    37553755    }
    37563756    else
    37573757        Log(("#%d pcnetTimerRestore: cLinkDownReported=%d, wait another 1500ms...\n",
    3758              pDevIns->iInstance, pData->cLinkDownReported));
    3759 
    3760     PDMCritSectLeave(&pData->CritSect);
     3758             pDevIns->iInstance, pThis->cLinkDownReported));
     3759
     3760    PDMCritSectLeave(&pThis->CritSect);
    37613761}
    37623762
     
    37803780    PPDMDEVINS  pDevIns = pPciDev->pDevIns;
    37813781    RTIOPORT    Port    = (RTIOPORT)GCPhysAddress;
    3782     PCNetState *pData   = PCIDEV_2_PCNETSTATE(pPciDev);
     3782    PCNetState *pThis   = PCIDEV_2_PCNETSTATE(pPciDev);
    37833783
    37843784    Assert(enmType == PCI_ADDRESS_SPACE_IO);
     
    37943794        return rc;
    37953795
    3796     if (pData->fGCEnabled)
     3796    if (pThis->fGCEnabled)
    37973797    {
    37983798        rc = PDMDevHlpIOPortRegisterGC(pDevIns, Port, 0x10, 0, "pcnetIOPortAPromWrite",
     
    38053805            return rc;
    38063806    }
    3807     if (pData->fR0Enabled)
     3807    if (pThis->fR0Enabled)
    38083808    {
    38093809        rc = PDMDevHlpIOPortRegisterR0(pDevIns, Port, 0x10, 0, "pcnetIOPortAPromWrite",
     
    38173817    }
    38183818
    3819     pData->IOPortBase = Port;
     3819    pThis->IOPortBase = Port;
    38203820    return VINF_SUCCESS;
    38213821}
     
    38373837                                      RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType)
    38383838{
    3839     PCNetState *pData = PCIDEV_2_PCNETSTATE(pPciDev);
     3839    PCNetState *pThis = PCIDEV_2_PCNETSTATE(pPciDev);
    38403840    int         rc;
    38413841
     
    38443844
    38453845    /* We use the assigned size here, because we currently only support page aligned MMIO ranges. */
    3846     rc = PDMDevHlpMMIORegister(pPciDev->pDevIns, GCPhysAddress, cb, pData,
     3846    rc = PDMDevHlpMMIORegister(pPciDev->pDevIns, GCPhysAddress, cb, pThis,
    38473847                               pcnetMMIOWrite, pcnetMMIORead, NULL, "PCNet");
    38483848    if (RT_FAILURE(rc))
    38493849        return rc;
    3850     pData->MMIOBase = GCPhysAddress;
     3850    pThis->MMIOBase = GCPhysAddress;
    38513851    return rc;
    38523852}
     
    38853885static DECLCALLBACK(void) pcnetInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    38863886{
    3887     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     3887    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    38883888    bool        fRcvRing = false;
    38893889    bool        fXmtRing = false;
     
    39043904                    "pcnet #%d: port=%RTiop mmio=%RGp mac-cfg=%.*Rhxs %s\n",
    39053905                    pDevIns->iInstance,
    3906                     pData->IOPortBase, pData->MMIOBase, sizeof(pData->MacConfigured), &pData->MacConfigured,
    3907                     pData->fAm79C973 ? "Am79C973" : "Am79C970A", pData->fGCEnabled ? " GC" : "", pData->fR0Enabled ? " R0" : "");
    3908 
    3909     PDMCritSectEnter(&pData->CritSect, VERR_INTERNAL_ERROR); /* Take it here so we know why we're hanging... */
     3906                    pThis->IOPortBase, pThis->MMIOBase, sizeof(pThis->MacConfigured), &pThis->MacConfigured,
     3907                    pThis->fAm79C973 ? "Am79C973" : "Am79C970A", pThis->fGCEnabled ? " GC" : "", pThis->fR0Enabled ? " R0" : "");
     3908
     3909    PDMCritSectEnter(&pThis->CritSect, VERR_INTERNAL_ERROR); /* Take it here so we know why we're hanging... */
    39103910
    39113911    pHlp->pfnPrintf(pHlp,
    39123912                    "CSR0=%#06x:\n",
    3913                     pData->aCSR[0]);
     3913                    pThis->aCSR[0]);
    39143914
    39153915    pHlp->pfnPrintf(pHlp,
    39163916                    "CSR1=%#06x:\n",
    3917                     pData->aCSR[1]);
     3917                    pThis->aCSR[1]);
    39183918
    39193919    pHlp->pfnPrintf(pHlp,
    39203920                    "CSR2=%#06x:\n",
    3921                     pData->aCSR[2]);
     3921                    pThis->aCSR[2]);
    39223922
    39233923    pHlp->pfnPrintf(pHlp,
    39243924                    "CSR3=%#06x: BSWP=%d EMBA=%d DXMT2PD=%d LAPPEN=%d DXSUFLO=%d IDONM=%d TINTM=%d RINTM=%d MERRM=%d MISSM=%d BABLM=%d\n",
    3925                     pData->aCSR[3],
    3926                     !!(pData->aCSR[3] & RT_BIT(2)), !!(pData->aCSR[3] & RT_BIT(3)), !!(pData->aCSR[3] & RT_BIT(4)), CSR_LAPPEN(pData),
    3927                     CSR_DXSUFLO(pData), !!(pData->aCSR[3] & RT_BIT(8)), !!(pData->aCSR[3] & RT_BIT(9)), !!(pData->aCSR[3] & RT_BIT(10)),
    3928                     !!(pData->aCSR[3] & RT_BIT(11)), !!(pData->aCSR[3] & RT_BIT(12)), !!(pData->aCSR[3] & RT_BIT(14)));
     3925                    pThis->aCSR[3],
     3926                    !!(pThis->aCSR[3] & RT_BIT(2)), !!(pThis->aCSR[3] & RT_BIT(3)), !!(pThis->aCSR[3] & RT_BIT(4)), CSR_LAPPEN(pThis),
     3927                    CSR_DXSUFLO(pThis), !!(pThis->aCSR[3] & RT_BIT(8)), !!(pThis->aCSR[3] & RT_BIT(9)), !!(pThis->aCSR[3] & RT_BIT(10)),
     3928                    !!(pThis->aCSR[3] & RT_BIT(11)), !!(pThis->aCSR[3] & RT_BIT(12)), !!(pThis->aCSR[3] & RT_BIT(14)));
    39293929
    39303930    pHlp->pfnPrintf(pHlp,
    39313931                    "CSR4=%#06x: JABM=%d JAB=%d TXSTRM=%d TXSTRT=%d RCVCOOM=%d RCVCCO=%d UINT=%d UINTCMD=%d\n"
    39323932                    "              MFCOM=%d MFCO=%d ASTRP_RCV=%d APAD_XMT=%d DPOLL=%d TIMER=%d EMAPLUS=%d EN124=%d\n",
    3933                     pData->aCSR[4],
    3934                     !!(pData->aCSR[4] & RT_BIT( 0)), !!(pData->aCSR[4] & RT_BIT( 1)), !!(pData->aCSR[4] & RT_BIT( 2)), !!(pData->aCSR[4] & RT_BIT( 3)),
    3935                     !!(pData->aCSR[4] & RT_BIT( 4)), !!(pData->aCSR[4] & RT_BIT( 5)), !!(pData->aCSR[4] & RT_BIT( 6)), !!(pData->aCSR[4] & RT_BIT( 7)),
    3936                     !!(pData->aCSR[4] & RT_BIT( 8)), !!(pData->aCSR[4] & RT_BIT( 9)), !!(pData->aCSR[4] & RT_BIT(10)), !!(pData->aCSR[4] & RT_BIT(11)),
    3937                     !!(pData->aCSR[4] & RT_BIT(12)), !!(pData->aCSR[4] & RT_BIT(13)), !!(pData->aCSR[4] & RT_BIT(14)), !!(pData->aCSR[4] & RT_BIT(15)));
     3933                    pThis->aCSR[4],
     3934                    !!(pThis->aCSR[4] & RT_BIT( 0)), !!(pThis->aCSR[4] & RT_BIT( 1)), !!(pThis->aCSR[4] & RT_BIT( 2)), !!(pThis->aCSR[4] & RT_BIT( 3)),
     3935                    !!(pThis->aCSR[4] & RT_BIT( 4)), !!(pThis->aCSR[4] & RT_BIT( 5)), !!(pThis->aCSR[4] & RT_BIT( 6)), !!(pThis->aCSR[4] & RT_BIT( 7)),
     3936                    !!(pThis->aCSR[4] & RT_BIT( 8)), !!(pThis->aCSR[4] & RT_BIT( 9)), !!(pThis->aCSR[4] & RT_BIT(10)), !!(pThis->aCSR[4] & RT_BIT(11)),
     3937                    !!(pThis->aCSR[4] & RT_BIT(12)), !!(pThis->aCSR[4] & RT_BIT(13)), !!(pThis->aCSR[4] & RT_BIT(14)), !!(pThis->aCSR[4] & RT_BIT(15)));
    39383938
    39393939    pHlp->pfnPrintf(pHlp,
    39403940                    "CSR5=%#06x:\n",
    3941                     pData->aCSR[5]);
     3941                    pThis->aCSR[5]);
    39423942
    39433943    pHlp->pfnPrintf(pHlp,
    39443944                    "CSR6=%#06x: RLEN=%#x* TLEN=%#x* [* encoded]\n",
    3945                     pData->aCSR[6],
    3946                     (pData->aCSR[6] >> 8) & 0xf, (pData->aCSR[6] >> 12) & 0xf);
     3945                    pThis->aCSR[6],
     3946                    (pThis->aCSR[6] >> 8) & 0xf, (pThis->aCSR[6] >> 12) & 0xf);
    39473947
    39483948    pHlp->pfnPrintf(pHlp,
    39493949                    "CSR8..11=%#06x,%#06x,%#06x,%#06x: LADRF=%#018llx\n",
    3950                     pData->aCSR[8], pData->aCSR[9], pData->aCSR[10], pData->aCSR[11],
    3951                       (uint64_t)(pData->aCSR[ 8] & 0xffff)
    3952                     | (uint64_t)(pData->aCSR[ 9] & 0xffff) << 16
    3953                     | (uint64_t)(pData->aCSR[10] & 0xffff) << 32
    3954                     | (uint64_t)(pData->aCSR[11] & 0xffff) << 48);
     3950                    pThis->aCSR[8], pThis->aCSR[9], pThis->aCSR[10], pThis->aCSR[11],
     3951                      (uint64_t)(pThis->aCSR[ 8] & 0xffff)
     3952                    | (uint64_t)(pThis->aCSR[ 9] & 0xffff) << 16
     3953                    | (uint64_t)(pThis->aCSR[10] & 0xffff) << 32
     3954                    | (uint64_t)(pThis->aCSR[11] & 0xffff) << 48);
    39553955
    39563956    pHlp->pfnPrintf(pHlp,
    39573957                    "CSR12..14=%#06x,%#06x,%#06x: PADR=%02x:%02x:%02x:%02x:%02x:%02x (Current MAC Address)\n",
    3958                     pData->aCSR[12], pData->aCSR[13], pData->aCSR[14],
    3959                      pData->aCSR[12]       & 0xff,
    3960                     (pData->aCSR[12] >> 8) & 0xff,
    3961                      pData->aCSR[13]       & 0xff,
    3962                     (pData->aCSR[13] >> 8) & 0xff,
    3963                      pData->aCSR[14]       & 0xff,
    3964                     (pData->aCSR[14] >> 8) & 0xff);
     3958                    pThis->aCSR[12], pThis->aCSR[13], pThis->aCSR[14],
     3959                     pThis->aCSR[12]       & 0xff,
     3960                    (pThis->aCSR[12] >> 8) & 0xff,
     3961                     pThis->aCSR[13]       & 0xff,
     3962                    (pThis->aCSR[13] >> 8) & 0xff,
     3963                     pThis->aCSR[14]       & 0xff,
     3964                    (pThis->aCSR[14] >> 8) & 0xff);
    39653965
    39663966    pHlp->pfnPrintf(pHlp,
    39673967                    "CSR15=%#06x: DXR=%d DTX=%d LOOP=%d DXMTFCS=%d FCOLL=%d DRTY=%d INTL=%d PORTSEL=%d LTR=%d\n"
    39683968                    "              MENDECL=%d DAPC=%d DLNKTST=%d DRCVPV=%d DRCVBC=%d PROM=%d\n",
    3969                     pData->aCSR[15],
    3970                     !!(pData->aCSR[15] & RT_BIT( 0)), !!(pData->aCSR[15] & RT_BIT( 1)), !!(pData->aCSR[15] & RT_BIT( 2)), !!(pData->aCSR[15] & RT_BIT( 3)),
    3971                     !!(pData->aCSR[15] & RT_BIT( 4)), !!(pData->aCSR[15] & RT_BIT( 5)), !!(pData->aCSR[15] & RT_BIT( 6)),   (pData->aCSR[15] >> 7) & 3,
    3972                                                    !!(pData->aCSR[15] & RT_BIT( 9)), !!(pData->aCSR[15] & RT_BIT(10)), !!(pData->aCSR[15] & RT_BIT(11)),
    3973                     !!(pData->aCSR[15] & RT_BIT(12)), !!(pData->aCSR[15] & RT_BIT(13)), !!(pData->aCSR[15] & RT_BIT(14)), !!(pData->aCSR[15] & RT_BIT(15)));
     3969                    pThis->aCSR[15],
     3970                    !!(pThis->aCSR[15] & RT_BIT( 0)), !!(pThis->aCSR[15] & RT_BIT( 1)), !!(pThis->aCSR[15] & RT_BIT( 2)), !!(pThis->aCSR[15] & RT_BIT( 3)),
     3971                    !!(pThis->aCSR[15] & RT_BIT( 4)), !!(pThis->aCSR[15] & RT_BIT( 5)), !!(pThis->aCSR[15] & RT_BIT( 6)),   (pThis->aCSR[15] >> 7) & 3,
     3972                                                   !!(pThis->aCSR[15] & RT_BIT( 9)), !!(pThis->aCSR[15] & RT_BIT(10)), !!(pThis->aCSR[15] & RT_BIT(11)),
     3973                    !!(pThis->aCSR[15] & RT_BIT(12)), !!(pThis->aCSR[15] & RT_BIT(13)), !!(pThis->aCSR[15] & RT_BIT(14)), !!(pThis->aCSR[15] & RT_BIT(15)));
    39743974
    39753975    pHlp->pfnPrintf(pHlp,
    39763976                    "CSR46=%#06x: POLL=%#06x (Poll Time Counter)\n",
    3977                     pData->aCSR[46], pData->aCSR[46] & 0xffff);
     3977                    pThis->aCSR[46], pThis->aCSR[46] & 0xffff);
    39783978
    39793979    pHlp->pfnPrintf(pHlp,
    39803980                    "CSR47=%#06x: POLLINT=%#06x (Poll Time Interval)\n",
    3981                     pData->aCSR[47], pData->aCSR[47] & 0xffff);
     3981                    pThis->aCSR[47], pThis->aCSR[47] & 0xffff);
    39823982
    39833983    pHlp->pfnPrintf(pHlp,
    39843984                    "CSR58=%#06x: SWSTYLE=%d %s SSIZE32=%d CSRPCNET=%d APERRENT=%d\n",
    3985                     pData->aCSR[58],
    3986                     pData->aCSR[58] & 0x7f,
    3987                     (pData->aCSR[58] & 0x7f) == 0 ? "C-LANCE / PCnet-ISA"
    3988                     : (pData->aCSR[58] & 0x7f) == 1 ? "ILACC"
    3989                     : (pData->aCSR[58] & 0x7f) == 2 ? "PCNet-PCI II"
    3990                     : (pData->aCSR[58] & 0x7f) == 3 ? "PCNet-PCI II controller"
     3985                    pThis->aCSR[58],
     3986                    pThis->aCSR[58] & 0x7f,
     3987                    (pThis->aCSR[58] & 0x7f) == 0 ? "C-LANCE / PCnet-ISA"
     3988                    : (pThis->aCSR[58] & 0x7f) == 1 ? "ILACC"
     3989                    : (pThis->aCSR[58] & 0x7f) == 2 ? "PCNet-PCI II"
     3990                    : (pThis->aCSR[58] & 0x7f) == 3 ? "PCNet-PCI II controller"
    39913991                    : "!!reserved!!",
    3992                     !!(pData->aCSR[58] & RT_BIT(8)), !!(pData->aCSR[58] & RT_BIT(9)), !!(pData->aCSR[58] & RT_BIT(10)));
     3992                    !!(pThis->aCSR[58] & RT_BIT(8)), !!(pThis->aCSR[58] & RT_BIT(9)), !!(pThis->aCSR[58] & RT_BIT(10)));
    39933993
    39943994    pHlp->pfnPrintf(pHlp,
    39953995                    "CSR112=%04RX32: MFC=%04x (Missed receive Frame Count)\n",
    3996                     pData->aCSR[112], pData->aCSR[112] & 0xffff);
     3996                    pThis->aCSR[112], pThis->aCSR[112] & 0xffff);
    39973997
    39983998    pHlp->pfnPrintf(pHlp,
    39993999                    "CSR122=%04RX32: RCVALGN=%04x (Receive Frame Align)\n",
    4000                     pData->aCSR[122], !!(pData->aCSR[122] & RT_BIT(0)));
     4000                    pThis->aCSR[122], !!(pThis->aCSR[122] & RT_BIT(0)));
    40014001
    40024002    pHlp->pfnPrintf(pHlp,
    40034003                    "CSR124=%04RX32: RPA=%04x (Runt Packet Accept)\n",
    4004                     pData->aCSR[122], !!(pData->aCSR[122] & RT_BIT(3)));
     4004                    pThis->aCSR[122], !!(pThis->aCSR[122] & RT_BIT(3)));
    40054005
    40064006
     
    40144014                    "NNRDA=%08RX32\n"
    40154015                    ,
    4016                     CSR_RCVRL(pData), CSR_RCVRC(pData), pData->GCRDRA,
    4017                     CSR_CRDA(pData), CSR_CRBA(pData), CSR_CRBC(pData), CSR_CRST(pData),
    4018                     CSR_NRDA(pData), CSR_NRBA(pData), CSR_NRBC(pData), CSR_NRST(pData),
    4019                     CSR_NNRD(pData));
     4016                    CSR_RCVRL(pThis), CSR_RCVRC(pThis), pThis->GCRDRA,
     4017                    CSR_CRDA(pThis), CSR_CRBA(pThis), CSR_CRBC(pThis), CSR_CRST(pThis),
     4018                    CSR_NRDA(pThis), CSR_NRBA(pThis), CSR_NRBC(pThis), CSR_NRST(pThis),
     4019                    CSR_NNRD(pThis));
    40204020    if (fRcvRing)
    40214021    {
    4022         const unsigned  cb = 1 << pData->iLog2DescSize;
    4023         RTGCPHYS32      GCPhys = pData->GCRDRA;
    4024         unsigned        i = CSR_RCVRL(pData);
     4022        const unsigned  cb = 1 << pThis->iLog2DescSize;
     4023        RTGCPHYS32      GCPhys = pThis->GCRDRA;
     4024        unsigned        i = CSR_RCVRL(pThis);
    40254025        while (i-- > 0)
    40264026        {
    40274027            RMD rmd;
    4028             pcnetRmdLoad(pData, &rmd, PHYSADDR(pData, GCPhys), false);
     4028            pcnetRmdLoad(pThis, &rmd, PHYSADDR(pThis, GCPhys), false);
    40294029            pHlp->pfnPrintf(pHlp,
    40304030                            "%04x %RGp:%c%c RBADR=%08RX32 BCNT=%03x MCNT=%03x "
    40314031                            "OWN=%d ERR=%d FRAM=%d OFLO=%d CRC=%d BUFF=%d STP=%d ENP=%d BPE=%d "
    40324032                            "PAM=%d LAFM=%d BAM=%d RCC=%02x RPC=%02x ONES=%#x ZEROS=%d\n",
    4033                             i, GCPhys, i + 1 == CSR_RCVRC(pData) ? '*' : ' ', GCPhys == CSR_CRDA(pData) ? '*' : ' ',
     4033                            i, GCPhys, i + 1 == CSR_RCVRC(pThis) ? '*' : ' ', GCPhys == CSR_CRDA(pThis) ? '*' : ' ',
    40344034                            rmd.rmd0.rbadr, 4096 - rmd.rmd1.bcnt, rmd.rmd2.mcnt,
    40354035                            rmd.rmd1.own, rmd.rmd1.err, rmd.rmd1.fram, rmd.rmd1.oflo, rmd.rmd1.crc, rmd.rmd1.buff,
     
    40524052                    "NNXDA=%08RX32\n"
    40534053                    ,
    4054                     CSR_XMTRL(pData), CSR_XMTRC(pData),
    4055                     pData->GCTDRA, CSR_BADX(pData),
    4056                     CSR_PXDA(pData),                  CSR_PXBC(pData), CSR_PXST(pData),
    4057                     CSR_CXDA(pData), CSR_CXBA(pData), CSR_CXBC(pData), CSR_CXST(pData),
    4058                     CSR_NXDA(pData), CSR_NXBA(pData), CSR_NXBC(pData), CSR_NXST(pData),
    4059                     CSR_NNXD(pData));
     4054                    CSR_XMTRL(pThis), CSR_XMTRC(pThis),
     4055                    pThis->GCTDRA, CSR_BADX(pThis),
     4056                    CSR_PXDA(pThis),                  CSR_PXBC(pThis), CSR_PXST(pThis),
     4057                    CSR_CXDA(pThis), CSR_CXBA(pThis), CSR_CXBC(pThis), CSR_CXST(pThis),
     4058                    CSR_NXDA(pThis), CSR_NXBA(pThis), CSR_NXBC(pThis), CSR_NXST(pThis),
     4059                    CSR_NNXD(pThis));
    40604060    if (fXmtRing)
    40614061    {
    4062         const unsigned  cb = 1 << pData->iLog2DescSize;
    4063         RTGCPHYS32      GCPhys = pData->GCTDRA;
    4064         unsigned        i = CSR_XMTRL(pData);
     4062        const unsigned  cb = 1 << pThis->iLog2DescSize;
     4063        RTGCPHYS32      GCPhys = pThis->GCTDRA;
     4064        unsigned        i = CSR_XMTRL(pThis);
    40654065        while (i-- > 0)
    40664066        {
    40674067            TMD tmd;
    4068             pcnetTmdLoad(pData, &tmd, PHYSADDR(pData, GCPhys), false);
     4068            pcnetTmdLoad(pThis, &tmd, PHYSADDR(pThis, GCPhys), false);
    40694069            pHlp->pfnPrintf(pHlp,
    40704070                            "%04x %RGp:%c%c TBADR=%08RX32 BCNT=%03x OWN=%d "
     
    40724072                            "BUFF=%d UFLO=%d EXDEF=%d LCOL=%d LCAR=%d RTRY=%d TDR=%03x TRC=%#x ONES=%#x\n"
    40734073                            ,
    4074                             i, GCPhys, i + 1 == CSR_XMTRC(pData) ? '*' : ' ', GCPhys == CSR_CXDA(pData) ? '*' : ' ',
     4074                            i, GCPhys, i + 1 == CSR_XMTRC(pThis) ? '*' : ' ', GCPhys == CSR_CXDA(pThis) ? '*' : ' ',
    40754075                            tmd.tmd0.tbadr, 4096 - tmd.tmd1.bcnt,
    40764076                            tmd.tmd2.tdr,
     
    40994099    }
    41004100
    4101     PDMCritSectLeave(&pData->CritSect);
     4101    PDMCritSectLeave(&pThis->CritSect);
    41024102}
    41034103
     
    41124112static DECLCALLBACK(int) pcnetSavePrep(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    41134113{
    4114     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    4115 
    4116     int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     4114    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     4115
     4116    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    41174117    AssertRC(rc);
    4118     PDMCritSectLeave(&pData->CritSect);
     4118    PDMCritSectLeave(&pThis->CritSect);
    41194119
    41204120    return VINF_SUCCESS;
     
    41314131static DECLCALLBACK(int) pcnetSaveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    41324132{
    4133     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     4133    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    41344134    int rc = VINF_SUCCESS;
    41354135
    4136     SSMR3PutBool(pSSMHandle, pData->fLinkUp);
    4137     SSMR3PutU32(pSSMHandle, pData->u32RAP);
    4138     SSMR3PutS32(pSSMHandle, pData->iISR);
    4139     SSMR3PutU32(pSSMHandle, pData->u32Lnkst);
    4140     SSMR3PutBool(pSSMHandle, pData->fPrivIfEnabled);              /* >= If version 0.9 */
    4141     SSMR3PutBool(pSSMHandle, pData->fSignalRxMiss);               /* >= If version 0.10 */
    4142     SSMR3PutGCPhys32(pSSMHandle, pData->GCRDRA);
    4143     SSMR3PutGCPhys32(pSSMHandle, pData->GCTDRA);
    4144     SSMR3PutMem(pSSMHandle, pData->aPROM, sizeof(pData->aPROM));
    4145     SSMR3PutMem(pSSMHandle, pData->aCSR, sizeof(pData->aCSR));
    4146     SSMR3PutMem(pSSMHandle, pData->aBCR, sizeof(pData->aBCR));
    4147     SSMR3PutMem(pSSMHandle, pData->aMII, sizeof(pData->aMII));
    4148     SSMR3PutU16(pSSMHandle, pData->u16CSR0LastSeenByGuest);
    4149     SSMR3PutU64(pSSMHandle, pData->u64LastPoll);
    4150     SSMR3PutMem(pSSMHandle, &pData->MacConfigured, sizeof(pData->MacConfigured));
    4151     SSMR3PutBool(pSSMHandle, pData->fAm79C973);                   /* >= If version 0.8 */
    4152     SSMR3PutU32(pSSMHandle, pData->u32LinkSpeed);
     4136    SSMR3PutBool(pSSMHandle, pThis->fLinkUp);
     4137    SSMR3PutU32(pSSMHandle, pThis->u32RAP);
     4138    SSMR3PutS32(pSSMHandle, pThis->iISR);
     4139    SSMR3PutU32(pSSMHandle, pThis->u32Lnkst);
     4140    SSMR3PutBool(pSSMHandle, pThis->fPrivIfEnabled);              /* >= If version 0.9 */
     4141    SSMR3PutBool(pSSMHandle, pThis->fSignalRxMiss);               /* >= If version 0.10 */
     4142    SSMR3PutGCPhys32(pSSMHandle, pThis->GCRDRA);
     4143    SSMR3PutGCPhys32(pSSMHandle, pThis->GCTDRA);
     4144    SSMR3PutMem(pSSMHandle, pThis->aPROM, sizeof(pThis->aPROM));
     4145    SSMR3PutMem(pSSMHandle, pThis->aCSR, sizeof(pThis->aCSR));
     4146    SSMR3PutMem(pSSMHandle, pThis->aBCR, sizeof(pThis->aBCR));
     4147    SSMR3PutMem(pSSMHandle, pThis->aMII, sizeof(pThis->aMII));
     4148    SSMR3PutU16(pSSMHandle, pThis->u16CSR0LastSeenByGuest);
     4149    SSMR3PutU64(pSSMHandle, pThis->u64LastPoll);
     4150    SSMR3PutMem(pSSMHandle, &pThis->MacConfigured, sizeof(pThis->MacConfigured));
     4151    SSMR3PutBool(pSSMHandle, pThis->fAm79C973);                   /* >= If version 0.8 */
     4152    SSMR3PutU32(pSSMHandle, pThis->u32LinkSpeed);
    41534153#ifdef PCNET_NO_POLLING
    41544154    return VINF_SUCCESS;
    41554155#else
    4156     rc = TMR3TimerSave(pData->CTX_SUFF(pTimerPoll), pSSMHandle);
     4156    rc = TMR3TimerSave(pThis->CTX_SUFF(pTimerPoll), pSSMHandle);
    41574157    if (RT_FAILURE(rc))
    41584158        return rc;
    41594159#endif
    4160     if (pData->fAm79C973)
    4161         rc = TMR3TimerSave(pData->CTX_SUFF(pTimerSoftInt), pSSMHandle);
     4160    if (pThis->fAm79C973)
     4161        rc = TMR3TimerSave(pThis->CTX_SUFF(pTimerSoftInt), pSSMHandle);
    41624162    return rc;
    41634163}
     
    41734173static DECLCALLBACK(int) pcnetLoadPrep(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    41744174{
    4175     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    4176 
    4177     int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     4175    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     4176
     4177    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    41784178    AssertRC(rc);
    4179     PDMCritSectLeave(&pData->CritSect);
     4179    PDMCritSectLeave(&pThis->CritSect);
    41804180
    41814181    return VINF_SUCCESS;
     
    41934193static DECLCALLBACK(int) pcnetLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle, uint32_t u32Version)
    41944194{
    4195     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     4195    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    41964196    RTMAC       Mac;
    41974197    if (   SSM_VERSION_MAJOR_CHANGED(u32Version, PCNET_SAVEDSTATE_VERSION)
     
    42004200
    42014201    /* restore data */
    4202     SSMR3GetBool(pSSMHandle, &pData->fLinkUp);
    4203     SSMR3GetU32(pSSMHandle, &pData->u32RAP);
    4204     SSMR3GetS32(pSSMHandle, &pData->iISR);
    4205     SSMR3GetU32(pSSMHandle, &pData->u32Lnkst);
     4202    SSMR3GetBool(pSSMHandle, &pThis->fLinkUp);
     4203    SSMR3GetU32(pSSMHandle, &pThis->u32RAP);
     4204    SSMR3GetS32(pSSMHandle, &pThis->iISR);
     4205    SSMR3GetU32(pSSMHandle, &pThis->u32Lnkst);
    42064206    if (   SSM_VERSION_MAJOR(u32Version) >  0
    42074207        || SSM_VERSION_MINOR(u32Version) >= 9)
    42084208    {
    4209         SSMR3GetBool(pSSMHandle, &pData->fPrivIfEnabled);
    4210         if (pData->fPrivIfEnabled)
     4209        SSMR3GetBool(pSSMHandle, &pThis->fPrivIfEnabled);
     4210        if (pThis->fPrivIfEnabled)
    42114211            LogRel(("PCNet#%d: Enabling private interface\n", PCNET_INST_NR));
    42124212    }
     
    42144214        || SSM_VERSION_MINOR(u32Version) >= 10)
    42154215    {
    4216         SSMR3GetBool(pSSMHandle, &pData->fSignalRxMiss);
    4217     }
    4218     SSMR3GetGCPhys32(pSSMHandle, &pData->GCRDRA);
    4219     SSMR3GetGCPhys32(pSSMHandle, &pData->GCTDRA);
    4220     SSMR3GetMem(pSSMHandle, &pData->aPROM, sizeof(pData->aPROM));
    4221     SSMR3GetMem(pSSMHandle, &pData->aCSR, sizeof(pData->aCSR));
    4222     SSMR3GetMem(pSSMHandle, &pData->aBCR, sizeof(pData->aBCR));
    4223     SSMR3GetMem(pSSMHandle, &pData->aMII, sizeof(pData->aMII));
    4224     SSMR3GetU16(pSSMHandle, &pData->u16CSR0LastSeenByGuest);
    4225     SSMR3GetU64(pSSMHandle, &pData->u64LastPoll);
     4216        SSMR3GetBool(pSSMHandle, &pThis->fSignalRxMiss);
     4217    }
     4218    SSMR3GetGCPhys32(pSSMHandle, &pThis->GCRDRA);
     4219    SSMR3GetGCPhys32(pSSMHandle, &pThis->GCTDRA);
     4220    SSMR3GetMem(pSSMHandle, &pThis->aPROM, sizeof(pThis->aPROM));
     4221    SSMR3GetMem(pSSMHandle, &pThis->aCSR, sizeof(pThis->aCSR));
     4222    SSMR3GetMem(pSSMHandle, &pThis->aBCR, sizeof(pThis->aBCR));
     4223    SSMR3GetMem(pSSMHandle, &pThis->aMII, sizeof(pThis->aMII));
     4224    SSMR3GetU16(pSSMHandle, &pThis->u16CSR0LastSeenByGuest);
     4225    SSMR3GetU64(pSSMHandle, &pThis->u64LastPoll);
    42264226    SSMR3GetMem(pSSMHandle, &Mac, sizeof(Mac));
    4227     Assert(     !memcmp(&Mac, &pData->MacConfigured, sizeof(Mac))
     4227    Assert(     !memcmp(&Mac, &pThis->MacConfigured, sizeof(Mac))
    42284228           ||   SSMR3HandleGetAfter(pSSMHandle) == SSMAFTER_DEBUG_IT);
    4229     SSMR3GetBool(pSSMHandle, &pData->fAm79C973);
    4230     SSMR3GetU32(pSSMHandle, &pData->u32LinkSpeed);
     4229    SSMR3GetBool(pSSMHandle, &pThis->fAm79C973);
     4230    SSMR3GetU32(pSSMHandle, &pThis->u32LinkSpeed);
    42314231#ifndef PCNET_NO_POLLING
    4232     TMR3TimerLoad(pData->CTX_SUFF(pTimerPoll), pSSMHandle);
    4233 #endif
    4234     if (pData->fAm79C973)
     4232    TMR3TimerLoad(pThis->CTX_SUFF(pTimerPoll), pSSMHandle);
     4233#endif
     4234    if (pThis->fAm79C973)
    42354235    {
    42364236        if (   SSM_VERSION_MAJOR(u32Version) >  0
    42374237            || SSM_VERSION_MINOR(u32Version) >= 8)
    4238             TMR3TimerLoad(pData->CTX_SUFF(pTimerSoftInt), pSSMHandle);
    4239     }
    4240 
    4241     pData->iLog2DescSize = BCR_SWSTYLE(pData)
     4238            TMR3TimerLoad(pThis->CTX_SUFF(pTimerSoftInt), pSSMHandle);
     4239    }
     4240
     4241    pThis->iLog2DescSize = BCR_SWSTYLE(pThis)
    42424242                         ? 4
    42434243                         : 3;
    4244     pData->GCUpperPhys   = BCR_SSIZE32(pData)
     4244    pThis->GCUpperPhys   = BCR_SSIZE32(pThis)
    42454245                         ? 0
    4246                          : (0xff00 & (uint32_t)pData->aCSR[2]) << 16;
     4246                         : (0xff00 & (uint32_t)pThis->aCSR[2]) << 16;
    42474247
    42484248    /* update promiscuous mode. */
    4249     if (pData->pDrv)
    4250         pData->pDrv->pfnSetPromiscuousMode(pData->pDrv, CSR_PROM(pData));
     4249    if (pThis->pDrv)
     4250        pThis->pDrv->pfnSetPromiscuousMode(pThis->pDrv, CSR_PROM(pThis));
    42514251
    42524252#ifdef PCNET_NO_POLLING
    42534253    /* Enable physical monitoring again (!) */
    4254     pcnetUpdateRingHandlers(pData);
     4254    pcnetUpdateRingHandlers(pThis);
    42554255#endif
    42564256    /* Indicate link down to the guest OS that all network connections have been lost. */
    4257     if (pData->fLinkUp)
    4258     {
    4259         pData->fLinkTempDown = true;
    4260         pData->cLinkDownReported = 0;
    4261         pData->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR (this is probably wrong) */
    4262         pData->Led.Asserted.s.fError = pData->Led.Actual.s.fError = 1;
    4263         return TMTimerSetMillies(pData->pTimerRestore, 5000);
     4257    if (pThis->fLinkUp)
     4258    {
     4259        pThis->fLinkTempDown = true;
     4260        pThis->cLinkDownReported = 0;
     4261        pThis->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR (this is probably wrong) */
     4262        pThis->Led.Asserted.s.fError = pThis->Led.Actual.s.fError = 1;
     4263        return TMTimerSetMillies(pThis->pTimerRestore, 5000);
    42644264    }
    42654265    return VINF_SUCCESS;
     
    42784278static DECLCALLBACK(void *) pcnetQueryInterface(struct PDMIBASE *pInterface, PDMINTERFACE enmInterface)
    42794279{
    4280     PCNetState *pData = (PCNetState *)((uintptr_t)pInterface - RT_OFFSETOF(PCNetState, IBase));
    4281     Assert(&pData->IBase == pInterface);
     4280    PCNetState *pThis = (PCNetState *)((uintptr_t)pInterface - RT_OFFSETOF(PCNetState, IBase));
     4281    Assert(&pThis->IBase == pInterface);
    42824282    switch (enmInterface)
    42834283    {
    42844284        case PDMINTERFACE_BASE:
    4285             return &pData->IBase;
     4285            return &pThis->IBase;
    42864286        case PDMINTERFACE_NETWORK_PORT:
    4287             return &pData->INetworkPort;
     4287            return &pThis->INetworkPort;
    42884288        case PDMINTERFACE_NETWORK_CONFIG:
    4289             return &pData->INetworkConfig;
     4289            return &pThis->INetworkConfig;
    42904290        case PDMINTERFACE_LED_PORTS:
    4291             return &pData->ILeds;
     4291            return &pThis->ILeds;
    42924292        default:
    42934293            return NULL;
     
    43064306 * @param   pInterface      Pointer to the interface structure containing the called function pointer.
    43074307 */
    4308 static int pcnetCanReceive(PCNetState *pData)
    4309 {
    4310     int rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     4308static int pcnetCanReceive(PCNetState *pThis)
     4309{
     4310    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    43114311    AssertReleaseRC(rc);
    43124312
    43134313    rc = VERR_NET_NO_BUFFER_SPACE;
    43144314
    4315     if (RT_LIKELY(!CSR_DRX(pData) && !CSR_STOP(pData) && !CSR_SPND(pData)))
    4316     {
    4317         if (HOST_IS_OWNER(CSR_CRST(pData)) && pData->GCRDRA)
    4318             pcnetRdtePoll(pData);
    4319 
    4320         if (RT_UNLIKELY(HOST_IS_OWNER(CSR_CRST(pData))))
     4315    if (RT_LIKELY(!CSR_DRX(pThis) && !CSR_STOP(pThis) && !CSR_SPND(pThis)))
     4316    {
     4317        if (HOST_IS_OWNER(CSR_CRST(pThis)) && pThis->GCRDRA)
     4318            pcnetRdtePoll(pThis);
     4319
     4320        if (RT_UNLIKELY(HOST_IS_OWNER(CSR_CRST(pThis))))
    43214321        {
    43224322            /** @todo Notify the guest _now_. Will potentially increase the interrupt load */
    4323             if (pData->fSignalRxMiss)
    4324                 pData->aCSR[0] |= 0x1000; /* Set MISS flag */
     4323            if (pThis->fSignalRxMiss)
     4324                pThis->aCSR[0] |= 0x1000; /* Set MISS flag */
    43254325        }
    43264326        else
     
    43284328    }
    43294329
    4330     PDMCritSectLeave(&pData->CritSect);
     4330    PDMCritSectLeave(&pThis->CritSect);
    43314331    return rc;
    43324332}
     
    43384338static DECLCALLBACK(int) pcnetWaitReceiveAvail(PPDMINETWORKPORT pInterface, unsigned cMillies)
    43394339{
    4340     PCNetState *pData = INETWORKPORT_2_DATA(pInterface);
    4341 
    4342     int rc = pcnetCanReceive(pData);
     4340    PCNetState *pThis = INETWORKPORT_2_DATA(pInterface);
     4341
     4342    int rc = pcnetCanReceive(pThis);
    43434343    if (RT_SUCCESS(rc))
    43444344        return VINF_SUCCESS;
     
    43474347
    43484348    rc = VERR_INTERRUPTED;
    4349     ASMAtomicXchgBool(&pData->fMaybeOutOfSpace, true);
    4350     STAM_PROFILE_START(&pData->StatRxOverflow, a);
    4351     while (RT_LIKELY(PDMDevHlpVMState(pData->CTX_SUFF(pDevIns)) == VMSTATE_RUNNING))
    4352     {
    4353         int rc2 = pcnetCanReceive(pData);
     4349    ASMAtomicXchgBool(&pThis->fMaybeOutOfSpace, true);
     4350    STAM_PROFILE_START(&pThis->StatRxOverflow, a);
     4351    while (RT_LIKELY(PDMDevHlpVMState(pThis->CTX_SUFF(pDevIns)) == VMSTATE_RUNNING))
     4352    {
     4353        int rc2 = pcnetCanReceive(pThis);
    43544354        if (RT_SUCCESS(rc2))
    43554355        {
     
    43604360        /* Start the poll timer once which will remain active as long fMaybeOutOfSpace
    43614361         * is true -- even if (transmit) polling is disabled (CSR_DPOLL). */
    4362         rc2 = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     4362        rc2 = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    43634363        AssertReleaseRC(rc2);
    4364         pcnetPollTimerStart(pData);
    4365         PDMCritSectLeave(&pData->CritSect);
    4366         RTSemEventWait(pData->hEventOutOfRxSpace, cMillies);
    4367     }
    4368     STAM_PROFILE_STOP(&pData->StatRxOverflow, a);
    4369     ASMAtomicXchgBool(&pData->fMaybeOutOfSpace, false);
     4364        pcnetPollTimerStart(pThis);
     4365        PDMCritSectLeave(&pThis->CritSect);
     4366        RTSemEventWait(pThis->hEventOutOfRxSpace, cMillies);
     4367    }
     4368    STAM_PROFILE_STOP(&pThis->StatRxOverflow, a);
     4369    ASMAtomicXchgBool(&pThis->fMaybeOutOfSpace, false);
    43704370
    43714371    return rc;
     
    43844384static DECLCALLBACK(int) pcnetReceive(PPDMINETWORKPORT pInterface, const void *pvBuf, size_t cb)
    43854385{
    4386     PCNetState *pData = INETWORKPORT_2_DATA(pInterface);
     4386    PCNetState *pThis = INETWORKPORT_2_DATA(pInterface);
    43874387    int         rc;
    43884388
    4389     STAM_PROFILE_ADV_START(&pData->StatReceive, a);
    4390     rc = PDMCritSectEnter(&pData->CritSect, VERR_SEM_BUSY);
     4389    STAM_PROFILE_ADV_START(&pThis->StatReceive, a);
     4390    rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    43914391    AssertReleaseRC(rc);
    43924392
    43934393    if (cb > 70) /* unqualified guess */
    4394         pData->Led.Asserted.s.fReading = pData->Led.Actual.s.fReading = 1;
    4395     pcnetReceiveNoSync(pData, (const uint8_t *)pvBuf, cb);
    4396     pData->Led.Actual.s.fReading = 0;
    4397 
    4398     PDMCritSectLeave(&pData->CritSect);
    4399     STAM_PROFILE_ADV_STOP(&pData->StatReceive, a);
     4394        pThis->Led.Asserted.s.fReading = pThis->Led.Actual.s.fReading = 1;
     4395    pcnetReceiveNoSync(pThis, (const uint8_t *)pvBuf, cb);
     4396    pThis->Led.Actual.s.fReading = 0;
     4397
     4398    PDMCritSectLeave(&pThis->CritSect);
     4399    STAM_PROFILE_ADV_STOP(&pThis->StatReceive, a);
    44004400
    44014401    return VINF_SUCCESS;
     
    44164416static DECLCALLBACK(int) pcnetGetMac(PPDMINETWORKCONFIG pInterface, PRTMAC pMac)
    44174417{
    4418     PCNetState *pData = INETWORKCONFIG_2_DATA(pInterface);
    4419     memcpy(pMac, pData->aPROM, sizeof(*pMac));
     4418    PCNetState *pThis = INETWORKCONFIG_2_DATA(pInterface);
     4419    memcpy(pMac, pThis->aPROM, sizeof(*pMac));
    44204420    return VINF_SUCCESS;
    44214421}
     
    44314431static DECLCALLBACK(PDMNETWORKLINKSTATE) pcnetGetLinkState(PPDMINETWORKCONFIG pInterface)
    44324432{
    4433     PCNetState *pData = INETWORKCONFIG_2_DATA(pInterface);
    4434     if (pData->fLinkUp && !pData->fLinkTempDown)
     4433    PCNetState *pThis = INETWORKCONFIG_2_DATA(pInterface);
     4434    if (pThis->fLinkUp && !pThis->fLinkTempDown)
    44354435        return PDMNETWORKLINKSTATE_UP;
    4436     if (!pData->fLinkUp)
     4436    if (!pThis->fLinkUp)
    44374437        return PDMNETWORKLINKSTATE_DOWN;
    4438     if (pData->fLinkTempDown)
     4438    if (pThis->fLinkTempDown)
    44394439        return PDMNETWORKLINKSTATE_DOWN_RESUME;
    44404440    AssertMsgFailed(("Invalid link state!\n"));
     
    44534453static DECLCALLBACK(int) pcnetSetLinkState(PPDMINETWORKCONFIG pInterface, PDMNETWORKLINKSTATE enmState)
    44544454{
    4455     PCNetState *pData = INETWORKCONFIG_2_DATA(pInterface);
     4455    PCNetState *pThis = INETWORKCONFIG_2_DATA(pInterface);
    44564456    bool fLinkUp;
    44574457    if (    enmState != PDMNETWORKLINKSTATE_DOWN
     
    44644464    /* has the state changed? */
    44654465    fLinkUp = enmState == PDMNETWORKLINKSTATE_UP;
    4466     if (pData->fLinkUp != fLinkUp)
    4467     {
    4468         pData->fLinkUp = fLinkUp;
     4466    if (pThis->fLinkUp != fLinkUp)
     4467    {
     4468        pThis->fLinkUp = fLinkUp;
    44694469        if (fLinkUp)
    44704470        {
    44714471            /* connect */
    4472             pData->aCSR[0] &= ~(RT_BIT(15) | RT_BIT(13)); /* ERR | CERR - probably not 100% correct either... */
    4473             pData->Led.Actual.s.fError = 0;
     4472            pThis->aCSR[0] &= ~(RT_BIT(15) | RT_BIT(13)); /* ERR | CERR - probably not 100% correct either... */
     4473            pThis->Led.Actual.s.fError = 0;
    44744474        }
    44754475        else
    44764476        {
    44774477            /* disconnect */
    4478             pData->cLinkDownReported = 0;
    4479             pData->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR (this is probably wrong) */
    4480             pData->Led.Asserted.s.fError = pData->Led.Actual.s.fError = 1;
     4478            pThis->cLinkDownReported = 0;
     4479            pThis->aCSR[0] |= RT_BIT(15) | RT_BIT(13); /* ERR | CERR (this is probably wrong) */
     4480            pThis->Led.Asserted.s.fError = pThis->Led.Actual.s.fError = 1;
    44814481        }
    4482         Assert(!PDMCritSectIsOwner(&pData->CritSect));
    4483         pData->pDrv->pfnNotifyLinkChanged(pData->pDrv, enmState);
     4482        Assert(!PDMCritSectIsOwner(&pThis->CritSect));
     4483        pThis->pDrv->pfnNotifyLinkChanged(pThis->pDrv, enmState);
    44844484    }
    44854485    return VINF_SUCCESS;
     
    44974497static DECLCALLBACK(int) pcnetQueryStatusLed(PPDMILEDPORTS pInterface, unsigned iLUN, PPDMLED *ppLed)
    44984498{
    4499     PCNetState *pData = (PCNetState *)( (uintptr_t)pInterface - RT_OFFSETOF(PCNetState, ILeds) );
     4499    PCNetState *pThis = (PCNetState *)( (uintptr_t)pInterface - RT_OFFSETOF(PCNetState, ILeds) );
    45004500    if (iLUN == 0)
    45014501    {
    4502         *ppLed = &pData->Led;
     4502        *ppLed = &pThis->Led;
    45034503        return VINF_SUCCESS;
    45044504    }
     
    45324532static DECLCALLBACK(void) pcnetReset(PPDMDEVINS pDevIns)
    45334533{
    4534     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    4535     if (pData->fLinkTempDown)
    4536     {
    4537         pData->cLinkDownReported = 0x10000;
    4538         TMTimerStop(pData->pTimerRestore);
    4539         pcnetTimerRestore(pDevIns, pData->pTimerRestore);
    4540     }
    4541     if (pData->pSharedMMIOR3)
    4542         pcnetInitSharedMemory(pData);
     4534    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     4535    if (pThis->fLinkTempDown)
     4536    {
     4537        pThis->cLinkDownReported = 0x10000;
     4538        TMTimerStop(pThis->pTimerRestore);
     4539        pcnetTimerRestore(pDevIns, pThis->pTimerRestore);
     4540    }
     4541    if (pThis->pSharedMMIOR3)
     4542        pcnetInitSharedMemory(pThis);
    45434543
    45444544    /** @todo How to flush the queues? */
    4545     pcnetHardReset(pData);
     4545    pcnetHardReset(pThis);
    45464546}
    45474547
     
    45524552static DECLCALLBACK(void) pcnetRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    45534553{
    4554     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    4555     pData->pDevInsRC     = PDMDEVINS_2_RCPTR(pDevIns);
    4556     pData->pXmitQueueRC  = PDMQueueRCPtr(pData->pXmitQueueR3);
    4557     pData->pCanRxQueueRC = PDMQueueRCPtr(pData->pCanRxQueueR3);
    4558     if (pData->pSharedMMIOR3)
    4559         pData->pSharedMMIORC += offDelta;
     4554    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     4555    pThis->pDevInsRC     = PDMDEVINS_2_RCPTR(pDevIns);
     4556    pThis->pXmitQueueRC  = PDMQueueRCPtr(pThis->pXmitQueueR3);
     4557    pThis->pCanRxQueueRC = PDMQueueRCPtr(pThis->pCanRxQueueR3);
     4558    if (pThis->pSharedMMIOR3)
     4559        pThis->pSharedMMIORC += offDelta;
    45604560#ifdef PCNET_NO_POLLING
    4561     pData->pfnEMInterpretInstructionRC += offDelta;
     4561    pThis->pfnEMInterpretInstructionRC += offDelta;
    45624562#else
    4563     pData->pTimerPollRC  = TMTimerRCPtr(pData->pTimerPollR3);
    4564 #endif
    4565     if (pData->fAm79C973)
    4566         pData->pTimerSoftIntRC = TMTimerRCPtr(pData->pTimerSoftIntR3);
     4563    pThis->pTimerPollRC  = TMTimerRCPtr(pThis->pTimerPollR3);
     4564#endif
     4565    if (pThis->fAm79C973)
     4566        pThis->pTimerSoftIntRC = TMTimerRCPtr(pThis->pTimerSoftIntR3);
    45674567}
    45684568
     
    45794579static DECLCALLBACK(int) pcnetDestruct(PPDMDEVINS pDevIns)
    45804580{
    4581     PCNetState *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
    4582 
    4583     if (PDMCritSectIsInitialized(&pData->CritSect))
     4581    PCNetState *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
     4582
     4583    if (PDMCritSectIsInitialized(&pThis->CritSect))
    45844584    {
    45854585        /*
     
    45884588         * will take care of terminating and cleaning up the thread.
    45894589         */
    4590         RTSemEventDestroy(pData->hSendEventSem);
    4591         pData->hSendEventSem = NIL_RTSEMEVENT;
    4592         RTSemEventSignal(pData->hEventOutOfRxSpace);
    4593         RTSemEventDestroy(pData->hEventOutOfRxSpace);
    4594         pData->hEventOutOfRxSpace = NIL_RTSEMEVENT;
    4595         PDMR3CritSectDelete(&pData->CritSect);
     4590        RTSemEventDestroy(pThis->hSendEventSem);
     4591        pThis->hSendEventSem = NIL_RTSEMEVENT;
     4592        RTSemEventSignal(pThis->hEventOutOfRxSpace);
     4593        RTSemEventDestroy(pThis->hEventOutOfRxSpace);
     4594        pThis->hEventOutOfRxSpace = NIL_RTSEMEVENT;
     4595        PDMR3CritSectDelete(&pThis->CritSect);
    45964596    }
    45974597#ifdef PCNET_QUEUE_SEND_PACKETS
    4598     if (pData->apXmitRingBuffer)
    4599         RTMemFree(pData->apXmitRingBuffer[0]);
     4598    if (pThis->apXmitRingBuffer)
     4599        RTMemFree(pThis->apXmitRingBuffer[0]);
    46004600#endif
    46014601    return VINF_SUCCESS;
     
    46184618static DECLCALLBACK(int) pcnetConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    46194619{
    4620     PCNetState     *pData = PDMINS_2_DATA(pDevIns, PCNetState *);
     4620    PCNetState     *pThis = PDMINS_2_DATA(pDevIns, PCNetState *);
    46214621    PPDMIBASE       pBase;
    46224622    char            szTmp[128];
     
    46264626    Assert((iInstance >= 0) && (iInstance < 4));
    46274627
    4628     Assert(RT_ELEMENTS(pData->aBCR) == BCR_MAX_RAP);
    4629     Assert(RT_ELEMENTS(pData->aMII) == MII_MAX_REG);
    4630     Assert(sizeof(pData->abSendBuf) == RT_ALIGN_Z(sizeof(pData->abSendBuf), 16));
     4628    Assert(RT_ELEMENTS(pThis->aBCR) == BCR_MAX_RAP);
     4629    Assert(RT_ELEMENTS(pThis->aMII) == MII_MAX_REG);
     4630    Assert(sizeof(pThis->abSendBuf) == RT_ALIGN_Z(sizeof(pThis->abSendBuf), 16));
    46314631
    46324632    /*
    46334633     * Init what's required to make the destructor safe.
    46344634     */
    4635     pData->hEventOutOfRxSpace = NIL_RTSEMEVENT;
    4636     pData->hSendEventSem = NIL_RTSEMEVENT;
     4635    pThis->hEventOutOfRxSpace = NIL_RTSEMEVENT;
     4636    pThis->hSendEventSem = NIL_RTSEMEVENT;
    46374637
    46384638    /*
     
    46464646     * Read the configuration.
    46474647     */
    4648     rc = CFGMR3QueryBytes(pCfgHandle, "MAC", &pData->MacConfigured, sizeof(pData->MacConfigured));
     4648    rc = CFGMR3QueryBytes(pCfgHandle, "MAC", &pThis->MacConfigured, sizeof(pThis->MacConfigured));
    46494649    if (RT_FAILURE(rc))
    46504650        return PDMDEV_SET_ERROR(pDevIns, rc,
    46514651                                N_("Configuration error: Failed to get the \"MAC\" value"));
    4652     rc = CFGMR3QueryBoolDef(pCfgHandle, "CableConnected", &pData->fLinkUp, true);
     4652    rc = CFGMR3QueryBoolDef(pCfgHandle, "CableConnected", &pThis->fLinkUp, true);
    46534653    if (RT_FAILURE(rc))
    46544654        return PDMDEV_SET_ERROR(pDevIns, rc,
    46554655                                N_("Configuration error: Failed to get the \"CableConnected\" value"));
    46564656
    4657     rc = CFGMR3QueryBoolDef(pCfgHandle, "Am79C973", &pData->fAm79C973, false);
     4657    rc = CFGMR3QueryBoolDef(pCfgHandle, "Am79C973", &pThis->fAm79C973, false);
    46584658    if (RT_FAILURE(rc))
    46594659        return PDMDEV_SET_ERROR(pDevIns, rc,
    46604660                                N_("Configuration error: Failed to get the \"Am79C973\" value"));
    46614661
    4662     rc = CFGMR3QueryU32Def(pCfgHandle, "LineSpeed", &pData->u32LinkSpeed, 1000000); /* 1GBit/s (in kbps units)*/
     4662    rc = CFGMR3QueryU32Def(pCfgHandle, "LineSpeed", &pThis->u32LinkSpeed, 1000000); /* 1GBit/s (in kbps units)*/
    46634663    if (RT_FAILURE(rc))
    46644664        return PDMDEV_SET_ERROR(pDevIns, rc,
     
    46664666
    46674667#ifdef PCNET_GC_ENABLED
    4668     rc = CFGMR3QueryBoolDef(pCfgHandle, "GCEnabled", &pData->fGCEnabled, true);
     4668    rc = CFGMR3QueryBoolDef(pCfgHandle, "GCEnabled", &pThis->fGCEnabled, true);
    46694669    if (RT_FAILURE(rc))
    46704670        return PDMDEV_SET_ERROR(pDevIns, rc,
    46714671                                N_("Configuration error: Failed to get the \"GCEnabled\" value"));
    46724672
    4673     rc = CFGMR3QueryBoolDef(pCfgHandle, "R0Enabled", &pData->fR0Enabled, true);
     4673    rc = CFGMR3QueryBoolDef(pCfgHandle, "R0Enabled", &pThis->fR0Enabled, true);
    46744674    if (RT_FAILURE(rc))
    46754675        return PDMDEV_SET_ERROR(pDevIns, rc,
     
    46774677
    46784678#else /* !PCNET_GC_ENABLED */
    4679     pData->fGCEnabled = false;
    4680     pData->fR0Enabled = false;
     4679    pThis->fGCEnabled = false;
     4680    pThis->fR0Enabled = false;
    46814681#endif /* !PCNET_GC_ENABLED */
    46824682
     
    46854685     * Initialize data (most of it anyway).
    46864686     */
    4687     pData->pDevInsR3                        = pDevIns;
    4688     pData->pDevInsR0                        = PDMDEVINS_2_R0PTR(pDevIns);
    4689     pData->pDevInsRC                        = PDMDEVINS_2_RCPTR(pDevIns);
    4690     pData->Led.u32Magic                     = PDMLED_MAGIC;
     4687    pThis->pDevInsR3                        = pDevIns;
     4688    pThis->pDevInsR0                        = PDMDEVINS_2_R0PTR(pDevIns);
     4689    pThis->pDevInsRC                        = PDMDEVINS_2_RCPTR(pDevIns);
     4690    pThis->Led.u32Magic                     = PDMLED_MAGIC;
    46914691    /* IBase */
    4692     pData->IBase.pfnQueryInterface          = pcnetQueryInterface;
     4692    pThis->IBase.pfnQueryInterface          = pcnetQueryInterface;
    46934693    /* INeworkPort */
    4694     pData->INetworkPort.pfnWaitReceiveAvail = pcnetWaitReceiveAvail;
    4695     pData->INetworkPort.pfnReceive          = pcnetReceive;
     4694    pThis->INetworkPort.pfnWaitReceiveAvail = pcnetWaitReceiveAvail;
     4695    pThis->INetworkPort.pfnReceive          = pcnetReceive;
    46964696    /* INetworkConfig */
    4697     pData->INetworkConfig.pfnGetMac         = pcnetGetMac;
    4698     pData->INetworkConfig.pfnGetLinkState   = pcnetGetLinkState;
    4699     pData->INetworkConfig.pfnSetLinkState   = pcnetSetLinkState;
     4697    pThis->INetworkConfig.pfnGetMac         = pcnetGetMac;
     4698    pThis->INetworkConfig.pfnGetLinkState   = pcnetGetLinkState;
     4699    pThis->INetworkConfig.pfnSetLinkState   = pcnetSetLinkState;
    47004700    /* ILeds */
    4701     pData->ILeds.pfnQueryStatusLed          = pcnetQueryStatusLed;
     4701    pThis->ILeds.pfnQueryStatusLed          = pcnetQueryStatusLed;
    47024702
    47034703    /* PCI Device */
    4704     PCIDevSetVendorId(&pData->PciDev, 0x1022);
    4705     PCIDevSetDeviceId(&pData->PciDev, 0x2000);
    4706     pData->PciDev.config[0x04] = 0x07; /* command */
    4707     pData->PciDev.config[0x05] = 0x00;
    4708     pData->PciDev.config[0x06] = 0x80; /* status */
    4709     pData->PciDev.config[0x07] = 0x02;
    4710     pData->PciDev.config[0x08] = pData->fAm79C973 ? 0x40 : 0x10; /* revision */
    4711     pData->PciDev.config[0x09] = 0x00;
    4712     pData->PciDev.config[0x0a] = 0x00; /* ethernet network controller */
    4713     pData->PciDev.config[0x0b] = 0x02;
    4714     pData->PciDev.config[0x0e] = 0x00; /* header_type */
    4715 
    4716     pData->PciDev.config[0x10] = 0x01; /* IO Base */
    4717     pData->PciDev.config[0x11] = 0x00;
    4718     pData->PciDev.config[0x12] = 0x00;
    4719     pData->PciDev.config[0x13] = 0x00;
    4720     pData->PciDev.config[0x14] = 0x00; /* MMIO Base */
    4721     pData->PciDev.config[0x15] = 0x00;
    4722     pData->PciDev.config[0x16] = 0x00;
    4723     pData->PciDev.config[0x17] = 0x00;
     4704    PCIDevSetVendorId(&pThis->PciDev, 0x1022);
     4705    PCIDevSetDeviceId(&pThis->PciDev, 0x2000);
     4706    pThis->PciDev.config[0x04] = 0x07; /* command */
     4707    pThis->PciDev.config[0x05] = 0x00;
     4708    pThis->PciDev.config[0x06] = 0x80; /* status */
     4709    pThis->PciDev.config[0x07] = 0x02;
     4710    pThis->PciDev.config[0x08] = pThis->fAm79C973 ? 0x40 : 0x10; /* revision */
     4711    pThis->PciDev.config[0x09] = 0x00;
     4712    pThis->PciDev.config[0x0a] = 0x00; /* ethernet network controller */
     4713    pThis->PciDev.config[0x0b] = 0x02;
     4714    pThis->PciDev.config[0x0e] = 0x00; /* header_type */
     4715
     4716    pThis->PciDev.config[0x10] = 0x01; /* IO Base */
     4717    pThis->PciDev.config[0x11] = 0x00;
     4718    pThis->PciDev.config[0x12] = 0x00;
     4719    pThis->PciDev.config[0x13] = 0x00;
     4720    pThis->PciDev.config[0x14] = 0x00; /* MMIO Base */
     4721    pThis->PciDev.config[0x15] = 0x00;
     4722    pThis->PciDev.config[0x16] = 0x00;
     4723    pThis->PciDev.config[0x17] = 0x00;
    47244724
    47254725    /* subsystem and subvendor IDs */
    4726     pData->PciDev.config[0x2c] = 0x22; /* subsystem vendor id */
    4727     pData->PciDev.config[0x2d] = 0x10;
    4728     pData->PciDev.config[0x2e] = 0x00; /* subsystem id */
    4729     pData->PciDev.config[0x2f] = 0x20;
    4730     pData->PciDev.config[0x3d] = 1;    /* interrupt pin 0 */
    4731     pData->PciDev.config[0x3e] = 0x06;
    4732     pData->PciDev.config[0x3f] = 0xff;
     4726    pThis->PciDev.config[0x2c] = 0x22; /* subsystem vendor id */
     4727    pThis->PciDev.config[0x2d] = 0x10;
     4728    pThis->PciDev.config[0x2e] = 0x00; /* subsystem id */
     4729    pThis->PciDev.config[0x2f] = 0x20;
     4730    pThis->PciDev.config[0x3d] = 1;    /* interrupt pin 0 */
     4731    pThis->PciDev.config[0x3e] = 0x06;
     4732    pThis->PciDev.config[0x3f] = 0xff;
    47334733
    47344734    /*
    47354735     * Register the PCI device, its I/O regions, the timer and the saved state item.
    47364736     */
    4737     rc = PDMDevHlpPCIRegister(pDevIns, &pData->PciDev);
     4737    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->PciDev);
    47384738    if (RT_FAILURE(rc))
    47394739        return rc;
     
    47614761         * should not care if there is an additional PCI ressource but just in case we made this configurable.
    47624762         */
    4763         rc = PDMDevHlpMMIO2Register(pDevIns, 2, PCNET_GUEST_SHARED_MEMORY_SIZE, 0, (void **)&pData->pSharedMMIOR3, "PCNetShMem");
     4763        rc = PDMDevHlpMMIO2Register(pDevIns, 2, PCNET_GUEST_SHARED_MEMORY_SIZE, 0, (void **)&pThis->pSharedMMIOR3, "PCNetShMem");
    47644764        if (RT_FAILURE(rc))
    47654765            return PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS,
    47664766                                       N_("Failed to allocate %u bytes of memory for the PCNet device"), PCNET_GUEST_SHARED_MEMORY_SIZE);
    4767         rc = PDMDevHlpMMHyperMapMMIO2(pDevIns, 2, 0, 8192, "PCNetShMem", &pData->pSharedMMIORC);
     4767        rc = PDMDevHlpMMHyperMapMMIO2(pDevIns, 2, 0, 8192, "PCNetShMem", &pThis->pSharedMMIORC);
    47684768        if (RT_FAILURE(rc))
    47694769            return PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS,
    47704770                                       N_("Failed to map 8192 bytes of memory for the PCNet device into the hyper memory"));
    4771         pData->pSharedMMIOR0 = (uintptr_t)pData->pSharedMMIOR3; /** @todo #1865: Map MMIO2 into ring-0. */
    4772 
    4773         pcnetInitSharedMemory(pData);
     4771        pThis->pSharedMMIOR0 = (uintptr_t)pThis->pSharedMMIOR3; /** @todo #1865: Map MMIO2 into ring-0. */
     4772
     4773        pcnetInitSharedMemory(pThis);
    47744774        rc = PDMDevHlpPCIIORegionRegister(pDevIns, 2, PCNET_GUEST_SHARED_MEMORY_SIZE,
    47754775                                          PCI_ADDRESS_SPACE_MEM, pcnetMMIOSharedMap);
     
    47824782     * Resolve the R0 and RC handlers.
    47834783     */
    4784     rc = PDMR3GetSymbolR0Lazy(PDMDevHlpGetVM(pDevIns), NULL, "EMInterpretInstruction", &pData->pfnEMInterpretInstructionR0);
     4784    rc = PDMR3GetSymbolR0Lazy(PDMDevHlpGetVM(pDevIns), NULL, "EMInterpretInstruction", &pThis->pfnEMInterpretInstructionR0);
    47854785    if (RT_SUCCESS(rc))
    4786         rc = PDMR3GetSymbolGCLazy(PDMDevHlpGetVM(pDevIns), NULL, "EMInterpretInstruction", (RTGCPTR *)&pData->pfnEMInterpretInstructionRC);
     4786        rc = PDMR3GetSymbolGCLazy(PDMDevHlpGetVM(pDevIns), NULL, "EMInterpretInstruction", (RTGCPTR *)&pThis->pfnEMInterpretInstructionRC);
    47874787    AssertLogRelMsgRCReturn(rc, ("PDMR3GetSymbolGCLazy(EMInterpretInstruction) -> %Vrc\n", rc), rc);
    47884788#else
    47894789    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetTimer,
    4790                                 "PCNet Poll Timer", &pData->pTimerPollR3);
     4790                                "PCNet Poll Timer", &pThis->pTimerPollR3);
    47914791    if (RT_FAILURE(rc))
    47924792        return rc;
    4793     pData->pTimerPollR0 = TMTimerR0Ptr(pData->pTimerPollR3);
    4794     pData->pTimerPollRC = TMTimerRCPtr(pData->pTimerPollR3);
    4795 #endif
    4796     if (pData->fAm79C973)
     4793    pThis->pTimerPollR0 = TMTimerR0Ptr(pThis->pTimerPollR3);
     4794    pThis->pTimerPollRC = TMTimerRCPtr(pThis->pTimerPollR3);
     4795#endif
     4796    if (pThis->fAm79C973)
    47974797    {
    47984798        /* Software Interrupt timer */
    47994799        rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetTimerSoftInt,
    4800                                     "PCNet SoftInt Timer", &pData->pTimerSoftIntR3);
     4800                                    "PCNet SoftInt Timer", &pThis->pTimerSoftIntR3);
    48014801        if (RT_FAILURE(rc))
    48024802            return rc;
    4803         pData->pTimerSoftIntR0 = TMTimerR0Ptr(pData->pTimerSoftIntR3);
    4804         pData->pTimerSoftIntRC = TMTimerRCPtr(pData->pTimerSoftIntR3);
     4803        pThis->pTimerSoftIntR0 = TMTimerR0Ptr(pThis->pTimerSoftIntR3);
     4804        pThis->pTimerSoftIntRC = TMTimerRCPtr(pThis->pTimerSoftIntR3);
    48054805    }
    48064806    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL, pcnetTimerRestore,
    4807                                 "PCNet Restore Timer", &pData->pTimerRestore);
     4807                                "PCNet Restore Timer", &pThis->pTimerRestore);
    48084808    if (RT_FAILURE(rc))
    48094809        return rc;
    48104810
    48114811    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance,
    4812                               PCNET_SAVEDSTATE_VERSION, sizeof(*pData),
     4812                              PCNET_SAVEDSTATE_VERSION, sizeof(*pThis),
    48134813                              pcnetSavePrep, pcnetSaveExec, NULL,
    48144814                              pcnetLoadPrep, pcnetLoadExec, NULL);
     
    48224822    char szName[24];
    48234823    RTStrPrintf(szName, sizeof(szName), "PCNet#%d", iInstance);
    4824     rc = PDMDevHlpCritSectInit(pDevIns, &pData->CritSect, szName);
     4824    rc = PDMDevHlpCritSectInit(pDevIns, &pThis->CritSect, szName);
    48254825    if (RT_FAILURE(rc))
    48264826        return rc;
    48274827
    4828     rc = RTSemEventCreate(&pData->hEventOutOfRxSpace);
     4828    rc = RTSemEventCreate(&pThis->hEventOutOfRxSpace);
    48294829    AssertRC(rc);
    48304830
     
    48334833     */
    48344834    rc = PDMDevHlpPDMQueueCreate(pDevIns, sizeof(PDMQUEUEITEMCORE), 1, 0,
    4835                                  pcnetXmitQueueConsumer, true, &pData->pXmitQueueR3);
     4835                                 pcnetXmitQueueConsumer, true, &pThis->pXmitQueueR3);
    48364836    if (RT_FAILURE(rc))
    48374837        return rc;
    4838     pData->pXmitQueueR0 = PDMQueueR0Ptr(pData->pXmitQueueR3);
    4839     pData->pXmitQueueRC = PDMQueueRCPtr(pData->pXmitQueueR3);
     4838    pThis->pXmitQueueR0 = PDMQueueR0Ptr(pThis->pXmitQueueR3);
     4839    pThis->pXmitQueueRC = PDMQueueRCPtr(pThis->pXmitQueueR3);
    48404840
    48414841    /*
     
    48434843     */
    48444844    rc = PDMDevHlpPDMQueueCreate(pDevIns, sizeof(PDMQUEUEITEMCORE), 1, 0,
    4845                                  pcnetCanRxQueueConsumer, true, &pData->pCanRxQueueR3);
     4845                                 pcnetCanRxQueueConsumer, true, &pThis->pCanRxQueueR3);
    48464846    if (RT_FAILURE(rc))
    48474847        return rc;
    4848     pData->pCanRxQueueR0 = PDMQueueR0Ptr(pData->pCanRxQueueR3);
    4849     pData->pCanRxQueueRC = PDMQueueRCPtr(pData->pCanRxQueueR3);
     4848    pThis->pCanRxQueueR0 = PDMQueueR0Ptr(pThis->pCanRxQueueR3);
     4849    pThis->pCanRxQueueRC = PDMQueueRCPtr(pThis->pCanRxQueueR3);
    48504850
    48514851    /*
     
    48584858     * Attach status driver (optional).
    48594859     */
    4860     rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pData->IBase, &pBase, "Status Port");
     4860    rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pThis->IBase, &pBase, "Status Port");
    48614861    if (RT_SUCCESS(rc))
    4862         pData->pLedsConnector = (PPDMILEDCONNECTORS)
     4862        pThis->pLedsConnector = (PPDMILEDCONNECTORS)
    48634863            pBase->pfnQueryInterface(pBase, PDMINTERFACE_LED_CONNECTORS);
    48644864    else if (rc != VERR_PDM_NO_ATTACHED_DRIVER)
     
    48714871     * Attach driver.
    48724872     */
    4873     rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->IBase, &pData->pDrvBase, "Network Port");
     4873    rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThis->IBase, &pThis->pDrvBase, "Network Port");
    48744874    if (RT_SUCCESS(rc))
    48754875    {
     
    48844884#endif
    48854885        }
    4886         pData->pDrv = (PPDMINETWORKCONNECTOR)
    4887             pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_NETWORK_CONNECTOR);
    4888         if (!pData->pDrv)
     4886        pThis->pDrv = (PPDMINETWORKCONNECTOR)
     4887            pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_NETWORK_CONNECTOR);
     4888        if (!pThis->pDrv)
    48894889        {
    48904890            AssertMsgFailed(("Failed to obtain the PDMINTERFACE_NETWORK_CONNECTOR interface!\n"));
     
    49004900     * Reset the device state. (Do after attaching.)
    49014901     */
    4902     pcnetHardReset(pData);
     4902    pcnetHardReset(pThis);
    49034903
    49044904    /* Create send queue for the async send thread. */
    4905     rc = RTSemEventCreate(&pData->hSendEventSem);
     4905    rc = RTSemEventCreate(&pThis->hSendEventSem);
    49064906    AssertRC(rc);
    49074907
    49084908    /* Create asynchronous thread */
    4909     rc = PDMDevHlpPDMThreadCreate(pDevIns, &pData->pSendThread, pData, pcnetAsyncSendThread, pcnetAsyncSendThreadWakeUp, 0, RTTHREADTYPE_IO, "PCNET_TX");
     4909    rc = PDMDevHlpPDMThreadCreate(pDevIns, &pThis->pSendThread, pThis, pcnetAsyncSendThread, pcnetAsyncSendThreadWakeUp, 0, RTTHREADTYPE_IO, "PCNET_TX");
    49104910    AssertRCReturn(rc, rc);
    49114911
    49124912#ifdef PCNET_QUEUE_SEND_PACKETS
    4913     pData->apXmitRingBuffer[0] = (uint8_t *)RTMemAlloc(PCNET_MAX_XMIT_SLOTS * MAX_FRAME);
     4913    pThis->apXmitRingBuffer[0] = (uint8_t *)RTMemAlloc(PCNET_MAX_XMIT_SLOTS * MAX_FRAME);
    49144914    for (unsigned i = 1; i < PCNET_MAX_XMIT_SLOTS; i++)
    4915         pData->apXmitRingBuffer[i] = pData->apXmitRingBuffer[0] + i*MAX_FRAME;
     4915        pThis->apXmitRingBuffer[i] = pThis->apXmitRingBuffer[0] + i*MAX_FRAME;
    49164916#endif
    49174917
    49184918#ifdef VBOX_WITH_STATISTICS
    4919     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatMMIOReadGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in GC",         "/Devices/PCNet%d/MMIO/ReadGC", iInstance);
    4920     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatMMIOReadHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in HC",         "/Devices/PCNet%d/MMIO/ReadHC", iInstance);
    4921     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatMMIOWriteGC,        STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in GC",        "/Devices/PCNet%d/MMIO/WriteGC", iInstance);
    4922     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatMMIOWriteHC,        STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in HC",        "/Devices/PCNet%d/MMIO/WriteHC", iInstance);
    4923     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatAPROMRead,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM reads",              "/Devices/PCNet%d/IO/APROMRead", iInstance);
    4924     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatAPROMWrite,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM writes",             "/Devices/PCNet%d/IO/APROMWrite", iInstance);
    4925     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatIOReadGC,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in GC",           "/Devices/PCNet%d/IO/ReadGC", iInstance);
    4926     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatIOReadHC,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in HC",           "/Devices/PCNet%d/IO/ReadHC", iInstance);
    4927     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatIOWriteGC,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in GC",          "/Devices/PCNet%d/IO/WriteGC", iInstance);
    4928     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatIOWriteHC,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in HC",          "/Devices/PCNet%d/IO/WriteHC", iInstance);
    4929     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTimer,              STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling Timer",                    "/Devices/PCNet%d/Timer", iInstance);
    4930     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatReceive,            STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling receive",                  "/Devices/PCNet%d/Receive", iInstance);
    4931     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRxOverflow,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Profiling RX overflows",        "/Devices/PCNet%d/RxOverflow", iInstance);
    4932     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRxOverflowWakeup,   STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Nr of RX overflow wakeups",     "/Devices/PCNet%d/RxOverflowWakeup", iInstance);
    4933 #endif
    4934     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatReceiveBytes,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Amount of data received",            "/Devices/PCNet%d/ReceiveBytes", iInstance);
     4919    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in GC",         "/Devices/PCNet%d/MMIO/ReadGC", iInstance);
     4920    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOReadHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO reads in HC",         "/Devices/PCNet%d/MMIO/ReadHC", iInstance);
     4921    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteGC,        STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in GC",        "/Devices/PCNet%d/MMIO/WriteGC", iInstance);
     4922    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMMIOWriteHC,        STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling MMIO writes in HC",        "/Devices/PCNet%d/MMIO/WriteHC", iInstance);
     4923    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatAPROMRead,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM reads",              "/Devices/PCNet%d/IO/APROMRead", iInstance);
     4924    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatAPROMWrite,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling APROM writes",             "/Devices/PCNet%d/IO/APROMWrite", iInstance);
     4925    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadGC,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in GC",           "/Devices/PCNet%d/IO/ReadGC", iInstance);
     4926    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOReadHC,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO reads in HC",           "/Devices/PCNet%d/IO/ReadHC", iInstance);
     4927    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteGC,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in GC",          "/Devices/PCNet%d/IO/WriteGC", iInstance);
     4928    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatIOWriteHC,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling IO writes in HC",          "/Devices/PCNet%d/IO/WriteHC", iInstance);
     4929    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTimer,              STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling Timer",                    "/Devices/PCNet%d/Timer", iInstance);
     4930    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatReceive,            STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling receive",                  "/Devices/PCNet%d/Receive", iInstance);
     4931    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRxOverflow,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Profiling RX overflows",        "/Devices/PCNet%d/RxOverflow", iInstance);
     4932    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRxOverflowWakeup,   STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Nr of RX overflow wakeups",     "/Devices/PCNet%d/RxOverflowWakeup", iInstance);
     4933#endif
     4934    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatReceiveBytes,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Amount of data received",            "/Devices/PCNet%d/ReceiveBytes", iInstance);
    49354935#ifdef VBOX_WITH_STATISTICS
    4936     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTransmit,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling transmits in HC",          "/Devices/PCNet%d/Transmit/Total", iInstance);
    4937 #endif
    4938     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTransmitBytes,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Amount of data transmitted",         "/Devices/PCNet%d/TransmitBytes", iInstance);
     4936    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmit,           STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling transmits in HC",          "/Devices/PCNet%d/Transmit/Total", iInstance);
     4937#endif
     4938    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitBytes,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Amount of data transmitted",         "/Devices/PCNet%d/TransmitBytes", iInstance);
    49394939#ifdef VBOX_WITH_STATISTICS
    4940     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTransmitSend,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet send transmit in HC","/Devices/PCNet%d/Transmit/Send", iInstance);
    4941     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTdtePollGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in GC",     "/Devices/PCNet%d/TdtePollGC", iInstance);
    4942     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTdtePollHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in HC",     "/Devices/PCNet%d/TdtePollHC", iInstance);
    4943     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRdtePollGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in GC",     "/Devices/PCNet%d/RdtePollGC", iInstance);
    4944     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRdtePollHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in HC",     "/Devices/PCNet%d/RdtePollHC", iInstance);
    4945 
    4946     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTmdStoreGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in GC",     "/Devices/PCNet%d/TmdStoreGC", iInstance);
    4947     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTmdStoreHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in HC",     "/Devices/PCNet%d/TmdStoreHC", iInstance);
     4940    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTransmitSend,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet send transmit in HC","/Devices/PCNet%d/Transmit/Send", iInstance);
     4941    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in GC",     "/Devices/PCNet%d/TdtePollGC", iInstance);
     4942    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTdtePollHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TdtePoll in HC",     "/Devices/PCNet%d/TdtePollHC", iInstance);
     4943    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in GC",     "/Devices/PCNet%d/RdtePollGC", iInstance);
     4944    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRdtePollHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet RdtePoll in HC",     "/Devices/PCNet%d/RdtePollHC", iInstance);
     4945
     4946    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreGC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in GC",     "/Devices/PCNet%d/TmdStoreGC", iInstance);
     4947    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTmdStoreHC,         STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling PCNet TmdStore in HC",     "/Devices/PCNet%d/TmdStoreHC", iInstance);
    49484948
    49494949    unsigned i;
    4950     for (i = 0; i < RT_ELEMENTS(pData->aStatXmitFlush) - 1; i++)
    4951         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aStatXmitFlush[i],  STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,       "",                                   "/Devices/PCNet%d/XmitFlushIrq/%d", iInstance, i + 1);
    4952     PDMDevHlpSTAMRegisterF(pDevIns, &pData->aStatXmitFlush[i],      STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,       "",                                   "/Devices/PCNet%d/XmitFlushIrq/%d+", iInstance, i + 1);
    4953 
    4954     for (i = 0; i < RT_ELEMENTS(pData->aStatXmitChainCounts) - 1; i++)
    4955         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aStatXmitChainCounts[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,  "",                                   "/Devices/PCNet%d/XmitChainCounts/%d", iInstance, i + 1);
    4956     PDMDevHlpSTAMRegisterF(pDevIns, &pData->aStatXmitChainCounts[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,      "",                                   "/Devices/PCNet%d/XmitChainCounts/%d+", iInstance, i + 1);
    4957 
    4958     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatXmitSkipCurrent,    STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "",                                   "/Devices/PCNet%d/Xmit/Skipped", iInstance, i + 1);
    4959 
    4960     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatInterrupt,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling interrupt checks",         "/Devices/PCNet%d/UpdateIRQ", iInstance);
    4961     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatPollTimer,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling poll timer",               "/Devices/PCNet%d/PollTimer", iInstance);
    4962     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatMIIReads,           STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of MII reads",                "/Devices/PCNet%d/MIIReads", iInstance);
     4950    for (i = 0; i < RT_ELEMENTS(pThis->aStatXmitFlush) - 1; i++)
     4951        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatXmitFlush[i],  STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,       "",                                   "/Devices/PCNet%d/XmitFlushIrq/%d", iInstance, i + 1);
     4952    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatXmitFlush[i],      STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,       "",                                   "/Devices/PCNet%d/XmitFlushIrq/%d+", iInstance, i + 1);
     4953
     4954    for (i = 0; i < RT_ELEMENTS(pThis->aStatXmitChainCounts) - 1; i++)
     4955        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatXmitChainCounts[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,  "",                                   "/Devices/PCNet%d/XmitChainCounts/%d", iInstance, i + 1);
     4956    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aStatXmitChainCounts[i], STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_OCCURENCES,      "",                                   "/Devices/PCNet%d/XmitChainCounts/%d+", iInstance, i + 1);
     4957
     4958    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatXmitSkipCurrent,    STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "",                                   "/Devices/PCNet%d/Xmit/Skipped", iInstance, i + 1);
     4959
     4960    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatInterrupt,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling interrupt checks",         "/Devices/PCNet%d/UpdateIRQ", iInstance);
     4961    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatPollTimer,          STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling poll timer",               "/Devices/PCNet%d/PollTimer", iInstance);
     4962    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatMIIReads,           STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of MII reads",                "/Devices/PCNet%d/MIIReads", iInstance);
    49634963# ifdef PCNET_NO_POLLING
    4964     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRCVRingWrite,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of receive ring writes",          "/Devices/PCNet%d/Ring/RCVWrites", iInstance);
    4965     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatTXRingWrite,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of transmit ring writes",         "/Devices/PCNet%d/Ring/TXWrites", iInstance);
    4966     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteHC,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/HC/Writes", iInstance);
    4967     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteR0,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/R0/Writes", iInstance);
    4968     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteGC,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/GC/Writes", iInstance);
    4969     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteFailedHC,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/HC/Failed", iInstance);
    4970     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteFailedR0,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/R0/Failed", iInstance);
    4971     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteFailedGC,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/GC/Failed", iInstance);
    4972     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteOutsideHC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/HC/Outside", iInstance);
    4973     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteOutsideR0, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/R0/Outside", iInstance);
    4974     PDMDevHlpSTAMRegisterF(pDevIns, &pData->StatRingWriteOutsideGC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/GC/Outside", iInstance);
     4964    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRCVRingWrite,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of receive ring writes",          "/Devices/PCNet%d/Ring/RCVWrites", iInstance);
     4965    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatTXRingWrite,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of transmit ring writes",         "/Devices/PCNet%d/Ring/TXWrites", iInstance);
     4966    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteHC,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/HC/Writes", iInstance);
     4967    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteR0,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/R0/Writes", iInstance);
     4968    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteGC,        STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored ring page writes",   "/Devices/PCNet%d/Ring/GC/Writes", iInstance);
     4969    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedHC,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/HC/Failed", iInstance);
     4970    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedR0,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/R0/Failed", iInstance);
     4971    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteFailedGC,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of failed ring page writes",      "/Devices/PCNet%d/Ring/GC/Failed", iInstance);
     4972    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideHC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/HC/Outside", iInstance);
     4973    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideR0, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/R0/Outside", iInstance);
     4974    PDMDevHlpSTAMRegisterF(pDevIns, &pThis->StatRingWriteOutsideGC, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Nr of monitored writes outside ring","/Devices/PCNet%d/Ring/GC/Outside", iInstance);
    49754975# endif /* PCNET_NO_POLLING */
    49764976#endif
  • trunk/src/VBox/Devices/Network/DrvNAT.cpp

    r11267 r11269  
    112112static DECLCALLBACK(void) drvNATOutput(const void * data, const uint8_t *msg, size_t size)
    113113{
    114         PDRVNAT pData = (PDRVNAT)(void *)data;
     114        PDRVNAT pThis = (PDRVNAT)(void *)data;
    115115        LogFlow(("output: pvBuf=%p cb=%#x\n", msg, size));
    116         int rc =  pData->pPort->pfnWaitReceiveAvail(pData->pPort, 0);
     116        int rc =  pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0);
    117117        if (RT_SUCCESS(rc))
    118                 pData->pPort->pfnReceive(pData->pPort, msg, size);
     118                pThis->pPort->pfnReceive(pThis->pPort, msg, size);
    119119        LogFlow(("output: exit\n"));
    120120}
     
    133133static DECLCALLBACK(int) drvNATSend(PPDMINETWORKCONNECTOR pInterface, const void *pvBuf, size_t cb)
    134134{
    135     PDRVNAT pData = PDMINETWORKCONNECTOR_2_DRVNAT(pInterface);
     135    PDRVNAT pThis = PDMINETWORKCONNECTOR_2_DRVNAT(pInterface);
    136136
    137137    LogFlow(("drvNATSend: pvBuf=%p cb=%#x\n", pvBuf, cb));
     
    140140          pvBuf, cb, cb, pvBuf));
    141141
    142     int rc = RTCritSectEnter(&pData->CritSect);
     142    int rc = RTCritSectEnter(&pThis->CritSect);
    143143    AssertReleaseRC(rc);
    144144
    145     Assert(pData->enmLinkState == PDMNETWORKLINKSTATE_UP);
    146     if (pData->enmLinkState == PDMNETWORKLINKSTATE_UP) {
    147 #ifndef VBOX_NAT_SOURCES
    148         slirp_input(pData->pNATState, (uint8_t *)pvBuf, cb);
     145    Assert(pThis->enmLinkState == PDMNETWORKLINKSTATE_UP);
     146    if (pThis->enmLinkState == PDMNETWORKLINKSTATE_UP) {
     147#ifndef VBOX_NAT_SOURCES
     148        slirp_input(pThis->pNATState, (uint8_t *)pvBuf, cb);
    149149#else
    150                 ether_chk(pData, pvBuf, cb);
     150                ether_chk(pThis, pvBuf, cb);
    151151#endif
    152152        }
    153     RTCritSectLeave(&pData->CritSect);
     153    RTCritSectLeave(&pThis->CritSect);
    154154    LogFlow(("drvNATSend: end\n"));
    155155    return VINF_SUCCESS;
     
    183183static DECLCALLBACK(void) drvNATNotifyLinkChanged(PPDMINETWORKCONNECTOR pInterface, PDMNETWORKLINKSTATE enmLinkState)
    184184{
    185     PDRVNAT pData = PDMINETWORKCONNECTOR_2_DRVNAT(pInterface);
     185    PDRVNAT pThis = PDMINETWORKCONNECTOR_2_DRVNAT(pInterface);
    186186
    187187    LogFlow(("drvNATNotifyLinkChanged: enmLinkState=%d\n", enmLinkState));
    188188
    189     int rc = RTCritSectEnter(&pData->CritSect);
     189    int rc = RTCritSectEnter(&pThis->CritSect);
    190190    AssertReleaseRC(rc);
    191     pData->enmLinkState = enmLinkState;
     191    pThis->enmLinkState = enmLinkState;
    192192
    193193    switch (enmLinkState)
     
    196196            LogRel(("NAT: link up\n"));
    197197#ifndef VBOX_NAT_SOURCES
    198             slirp_link_up(pData->pNATState);
     198            slirp_link_up(pThis->pNATState);
    199199#endif
    200200            break;
     
    204204            LogRel(("NAT: link down\n"));
    205205#ifndef VBOX_NAT_SOURCES
    206             slirp_link_down(pData->pNATState);
     206            slirp_link_down(pThis->pNATState);
    207207#endif
    208208            break;
     
    211211            AssertMsgFailed(("drvNATNotifyLinkChanged: unexpected link state %d\n", enmLinkState));
    212212    }
    213     RTCritSectLeave(&pData->CritSect);
     213    RTCritSectLeave(&pThis->CritSect);
    214214}
    215215
     
    220220static DECLCALLBACK(void) drvNATPoller(PPDMDRVINS pDrvIns)
    221221{
    222     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     222    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    223223    fd_set  ReadFDs;
    224224    fd_set  WriteFDs;
     
    229229    FD_ZERO(&XcptFDs);
    230230
    231     int rc = RTCritSectEnter(&pData->CritSect);
     231    int rc = RTCritSectEnter(&pThis->CritSect);
    232232    AssertReleaseRC(rc);
    233233
    234234#ifndef VBOX_NAT_SOURCES
    235     slirp_select_fill(pData->pNATState, &cFDs, &ReadFDs, &WriteFDs, &XcptFDs);
     235    slirp_select_fill(pThis->pNATState, &cFDs, &ReadFDs, &WriteFDs, &XcptFDs);
    236236#else
    237237        nat_select_fill(NULL, &cFDs, &ReadFDs, &WriteFDs, &XcptFDs);
     
    242242#ifndef VBOX_NAT_SOURCES
    243243    if (cReadFDs >= 0)
    244         slirp_select_poll(pData->pNATState, &ReadFDs, &WriteFDs, &XcptFDs);
     244        slirp_select_poll(pThis->pNATState, &ReadFDs, &WriteFDs, &XcptFDs);
    245245#else
    246246    if (cReadFDs >= 0) {
    247                 nat_select_poll(pData, &ReadFDs, &WriteFDs, &XcptFDs);
     247                nat_select_poll(pThis, &ReadFDs, &WriteFDs, &XcptFDs);
    248248        }
    249249#endif
    250250
    251     RTCritSectLeave(&pData->CritSect);
     251    RTCritSectLeave(&pThis->CritSect);
    252252}
    253253
     
    260260int slirp_can_output(void *pvUser)
    261261{
    262     PDRVNAT pData = (PDRVNAT)pvUser;
    263 
    264     Assert(pData);
     262    PDRVNAT pThis = (PDRVNAT)pvUser;
     263
     264    Assert(pThis);
    265265
    266266    /** Happens during termination */
    267     if (!RTCritSectIsOwner(&pData->CritSect))
     267    if (!RTCritSectIsOwner(&pThis->CritSect))
    268268        return 0;
    269269
    270     int rc =  pData->pPort->pfnWaitReceiveAvail(pData->pPort, 0);
     270    int rc =  pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, 0);
    271271    return RT_SUCCESS(rc);
    272272}
     
    278278void slirp_output(void *pvUser, const uint8_t *pu8Buf, int cb)
    279279{
    280     PDRVNAT pData = (PDRVNAT)pvUser;
     280    PDRVNAT pThis = (PDRVNAT)pvUser;
    281281
    282282    LogFlow(("slirp_output BEGIN %x %d\n", pu8Buf, cb));
    283     Log2(("slirp_output: pu8Buf=%p cb=%#x (pData=%p)\n"
     283    Log2(("slirp_output: pu8Buf=%p cb=%#x (pThis=%p)\n"
    284284          "%.*Vhxd\n",
    285           pu8Buf, cb, pData,
     285          pu8Buf, cb, pThis,
    286286          cb, pu8Buf));
    287287
    288     Assert(pData);
     288    Assert(pThis);
    289289
    290290    /** Happens during termination */
    291     if (!RTCritSectIsOwner(&pData->CritSect))
     291    if (!RTCritSectIsOwner(&pThis->CritSect))
    292292        return;
    293293
    294     int rc = pData->pPort->pfnReceive(pData->pPort, pu8Buf, cb);
     294    int rc = pThis->pPort->pfnReceive(pThis->pPort, pu8Buf, cb);
    295295    AssertRC(rc);
    296296    LogFlow(("slirp_output END %x %d\n", pu8Buf, cb));
     
    310310{
    311311    PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    312     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     312    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    313313    switch (enmInterface)
    314314    {
     
    316316            return &pDrvIns->IBase;
    317317        case PDMINTERFACE_NETWORK_CONNECTOR:
    318             return &pData->INetworkConnector;
     318            return &pThis->INetworkConnector;
    319319        default:
    320320            return NULL;
     
    333333static DECLCALLBACK(void) drvNATDestruct(PPDMDRVINS pDrvIns)
    334334{
    335     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     335    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    336336
    337337    LogFlow(("drvNATDestruct:\n"));
    338338
    339     int rc = RTCritSectEnter(&pData->CritSect);
     339    int rc = RTCritSectEnter(&pThis->CritSect);
    340340    AssertReleaseRC(rc);
    341341#ifndef VBOX_NAT_SOURCES
    342     slirp_term(pData->pNATState);
    343     pData->pNATState = NULL;
    344 #endif
    345     RTCritSectLeave(&pData->CritSect);
    346 
    347     RTCritSectDelete(&pData->CritSect);
     342    slirp_term(pThis->pNATState);
     343    pThis->pNATState = NULL;
     344#endif
     345    RTCritSectLeave(&pThis->CritSect);
     346
     347    RTCritSectDelete(&pThis->CritSect);
    348348}
    349349
     
    355355 * @param   pCfgHandle      The drivers configuration handle.
    356356 */
    357 static int drvNATConstructRedir(unsigned iInstance, PDRVNAT pData, PCFGMNODE pCfgHandle, RTIPV4ADDR Network)
     357static int drvNATConstructRedir(unsigned iInstance, PDRVNAT pThis, PCFGMNODE pCfgHandle, RTIPV4ADDR Network)
    358358{
    359359#ifndef VBOX_NAT_SOURCES
     
    367367         */
    368368        if (!CFGMR3AreValuesValid(pNode, "Protocol\0UDP\0HostPort\0GuestPort\0GuestIP\0"))
    369             return PDMDRV_SET_ERROR(pData->pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES, N_("Unknown configuration in port forwarding"));
     369            return PDMDRV_SET_ERROR(pThis->pDrvIns, VERR_PDM_DRVINS_UNKNOWN_CFG_VALUES, N_("Unknown configuration in port forwarding"));
    370370
    371371        /* protocol type */
     
    379379                fUDP = false;
    380380            else if (RT_FAILURE(rc))
    381                 return PDMDrvHlpVMSetError(pData->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"UDP\" boolean failed"), iInstance);
     381                return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"UDP\" boolean failed"), iInstance);
    382382        }
    383383        else if (RT_SUCCESS(rc))
     
    388388                fUDP = true;
    389389            else
    390                 return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_INVALID_PARAMETER, RT_SRC_POS, N_("NAT#%d: Invalid configuration value for \"Protocol\": \"%s\""), iInstance, szProtocol);
     390                return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_INVALID_PARAMETER, RT_SRC_POS, N_("NAT#%d: Invalid configuration value for \"Protocol\": \"%s\""), iInstance, szProtocol);
    391391        }
    392392        else
    393             return PDMDrvHlpVMSetError(pData->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"Protocol\" string failed"), iInstance);
     393            return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"Protocol\" string failed"), iInstance);
    394394
    395395        /* host port */
     
    397397        rc = CFGMR3QueryS32(pNode, "HostPort", &iHostPort);
    398398        if (RT_FAILURE(rc))
    399             return PDMDrvHlpVMSetError(pData->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"HostPort\" integer failed"), iInstance);
     399            return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"HostPort\" integer failed"), iInstance);
    400400
    401401        /* guest port */
     
    403403        rc = CFGMR3QueryS32(pNode, "GuestPort", &iGuestPort);
    404404        if (RT_FAILURE(rc))
    405             return PDMDrvHlpVMSetError(pData->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"GuestPort\" integer failed"), iInstance);
     405            return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"GuestPort\" integer failed"), iInstance);
    406406
    407407        /* guest address */
     
    412412                        (Network & 0xFF000000) >> 24, (Network & 0xFF0000) >> 16, (Network & 0xFF00) >> 8, (Network & 0xE0) | 15);
    413413        else if (RT_FAILURE(rc))
    414             return PDMDrvHlpVMSetError(pData->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"GuestIP\" string failed"), iInstance);
     414            return PDMDrvHlpVMSetError(pThis->pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"GuestIP\" string failed"), iInstance);
    415415        struct in_addr GuestIP;
    416416        if (!inet_aton(szGuestIP, &GuestIP))
    417             return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_NAT_REDIR_GUEST_IP, RT_SRC_POS, N_("NAT#%d: configuration error: invalid \"GuestIP\"=\"%s\", inet_aton failed"), iInstance, szGuestIP);
     417            return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_NAT_REDIR_GUEST_IP, RT_SRC_POS, N_("NAT#%d: configuration error: invalid \"GuestIP\"=\"%s\", inet_aton failed"), iInstance, szGuestIP);
    418418
    419419        /*
     
    421421         */
    422422        Log(("drvNATConstruct: Redir %d -> %s:%d\n", iHostPort, szGuestIP, iGuestPort));
    423         if (slirp_redir(pData->pNATState, fUDP, iHostPort, GuestIP, iGuestPort) < 0)
    424             return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_NAT_REDIR_SETUP, RT_SRC_POS, N_("NAT#%d: configuration error: failed to set up redirection of %d to %s:%d. Probably a conflict with existing services or other rules"), iInstance, iHostPort, szGuestIP, iGuestPort);
     423        if (slirp_redir(pThis->pNATState, fUDP, iHostPort, GuestIP, iGuestPort) < 0)
     424            return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_NAT_REDIR_SETUP, RT_SRC_POS, N_("NAT#%d: configuration error: failed to set up redirection of %d to %s:%d. Probably a conflict with existing services or other rules"), iInstance, iHostPort, szGuestIP, iGuestPort);
    425425    } /* for each redir rule */
    426426#endif
     
    432432 * Get the MAC address into the slirp stack.
    433433 */
    434 static void drvNATSetMac(PDRVNAT pData)
    435 {
    436 #ifndef VBOX_NAT_SOURCES
    437     if (pData->pConfig)
     434static void drvNATSetMac(PDRVNAT pThis)
     435{
     436#ifndef VBOX_NAT_SOURCES
     437    if (pThis->pConfig)
    438438    {
    439439        RTMAC Mac;
    440         pData->pConfig->pfnGetMac(pData->pConfig, &Mac);
    441         slirp_set_ethaddr(pData->pNATState, Mac.au8);
     440        pThis->pConfig->pfnGetMac(pThis->pConfig, &Mac);
     441        slirp_set_ethaddr(pThis->pNATState, Mac.au8);
    442442    }
    443443#endif
     
    452452static DECLCALLBACK(int) drvNATLoadDone(PPDMDRVINS pDrvIns, PSSMHANDLE pSSMHandle)
    453453{
    454     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    455     drvNATSetMac(pData);
     454    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     455    drvNATSetMac(pThis);
    456456    return VINF_SUCCESS;
    457457}
     
    463463static DECLCALLBACK(void) drvNATPowerOn(PPDMDRVINS pDrvIns)
    464464{
    465     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    466     drvNATSetMac(pData);
     465    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     466    drvNATSetMac(pThis);
    467467}
    468468
     
    480480static DECLCALLBACK(int) drvNATConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    481481{
    482     PDRVNAT pData = PDMINS_2_DATA(pDrvIns, PDRVNAT);
     482    PDRVNAT pThis = PDMINS_2_DATA(pDrvIns, PDRVNAT);
    483483    char szNetAddr[16];
    484484    char szNetwork[32]; /* xxx.xxx.xxx.xxx/yy */
     
    494494     * Init the static parts.
    495495     */
    496     pData->pDrvIns                      = pDrvIns;
    497 #ifndef VBOX_NAT_SOURCES
    498     pData->pNATState                    = NULL;
    499 #endif
    500     pData->pszTFTPPrefix                = NULL;
    501     pData->pszBootFile                  = NULL;
     496    pThis->pDrvIns                      = pDrvIns;
     497#ifndef VBOX_NAT_SOURCES
     498    pThis->pNATState                    = NULL;
     499#endif
     500    pThis->pszTFTPPrefix                = NULL;
     501    pThis->pszBootFile                  = NULL;
    502502    /* IBase */
    503503    pDrvIns->IBase.pfnQueryInterface    = drvNATQueryInterface;
    504504    /* INetwork */
    505     pData->INetworkConnector.pfnSend               = drvNATSend;
    506     pData->INetworkConnector.pfnSetPromiscuousMode = drvNATSetPromiscuousMode;
    507     pData->INetworkConnector.pfnNotifyLinkChanged  = drvNATNotifyLinkChanged;
     505    pThis->INetworkConnector.pfnSend               = drvNATSend;
     506    pThis->INetworkConnector.pfnSetPromiscuousMode = drvNATSetPromiscuousMode;
     507    pThis->INetworkConnector.pfnNotifyLinkChanged  = drvNATNotifyLinkChanged;
    508508
    509509    /*
     
    517517        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"PassDomain\" boolean failed"), pDrvIns->iInstance);
    518518
    519     rc = CFGMR3QueryStringAlloc(pCfgHandle, "TFTPPrefix", &pData->pszTFTPPrefix);
     519    rc = CFGMR3QueryStringAlloc(pCfgHandle, "TFTPPrefix", &pThis->pszTFTPPrefix);
    520520    if (RT_FAILURE(rc) && rc != VERR_CFGM_VALUE_NOT_FOUND)
    521521        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"TFTPPrefix\" string failed"), pDrvIns->iInstance);
    522     rc = CFGMR3QueryStringAlloc(pCfgHandle, "BootFile", &pData->pszBootFile);
     522    rc = CFGMR3QueryStringAlloc(pCfgHandle, "BootFile", &pThis->pszBootFile);
    523523    if (RT_FAILURE(rc) && rc != VERR_CFGM_VALUE_NOT_FOUND)
    524524        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NAT#%d: configuration query for \"BootFile\" string failed"), pDrvIns->iInstance);
     
    527527     * Query the network port interface.
    528528     */
    529     pData->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
    530     if (!pData->pPort)
     529    pThis->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
     530    if (!pThis->pPort)
    531531        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE,
    532532                                N_("Configuration error: the above device/driver didn't export the network port interface"));
    533     pData->pConfig = (PPDMINETWORKCONFIG)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_CONFIG);
    534     if (!pData->pConfig)
     533    pThis->pConfig = (PPDMINETWORKCONFIG)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_CONFIG);
     534    if (!pThis->pConfig)
    535535        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE,
    536536                                N_("Configuration error: the above device/driver didn't export the network config interface"));
     
    555555     * The slirp lock..
    556556     */
    557     rc = RTCritSectInit(&pData->CritSect);
     557    rc = RTCritSectInit(&pThis->CritSect);
    558558    if (RT_FAILURE(rc))
    559559        return rc;
     
    574574             * Initialize slirp.
    575575             */
    576             rc = slirp_init(&pData->pNATState, &szNetAddr[0], Netmask, fPassDomain, pData->pszTFTPPrefix, pData->pszBootFile, pData);
     576            rc = slirp_init(&pThis->pNATState, &szNetAddr[0], Netmask, fPassDomain, pThis->pszTFTPPrefix, pThis->pszBootFile, pThis);
    577577            if (RT_SUCCESS(rc))
    578578            {
    579                 int rc2 = drvNATConstructRedir(pDrvIns->iInstance, pData, pCfgHandle, Network);
     579                int rc2 = drvNATConstructRedir(pDrvIns->iInstance, pThis, pCfgHandle, Network);
    580580                if (RT_SUCCESS(rc2))
    581581                {
     
    590590                    pDrvIns->pDrvHlp->pfnPDMPollerRegister(pDrvIns, drvNATPoller);
    591591
    592                     pData->enmLinkState = PDMNETWORKLINKSTATE_UP;
     592                    pThis->enmLinkState = PDMNETWORKLINKSTATE_UP;
    593593#if 0
    594594                    RTSemEventSignal(g_EventSem);
     
    600600                /* failure path */
    601601                rc = rc2;
    602                 slirp_term(pData->pNATState);
    603                 pData->pNATState = NULL;
     602                slirp_term(pThis->pNATState);
     603                pThis->pNATState = NULL;
    604604            }
    605605            else
     
    610610#else
    611611        pDrvIns->pDrvHlp->pfnPDMPollerRegister(pDrvIns, drvNATPoller);
    612         pData->enmLinkState = PDMNETWORKLINKSTATE_UP;
     612        pThis->enmLinkState = PDMNETWORKLINKSTATE_UP;
    613613        mbuf_init(NULL);
    614614        struct nat_output_callbacks cb;
     
    631631#endif
    632632#ifndef VBOX_NAT_SOURCES
    633     RTCritSectDelete(&pData->CritSect);
     633    RTCritSectDelete(&pThis->CritSect);
    634634#endif
    635635    return rc;
  • trunk/src/VBox/Devices/Network/DrvTAP.cpp

    r11268 r11269  
    151151#ifdef RT_OS_SOLARIS
    152152# ifdef VBOX_WITH_CROSSBOW
    153 static int              SolarisOpenVNIC(PDRVTAP pData);
     153static int              SolarisOpenVNIC(PDRVTAP pThis);
    154154static int              SolarisDLPIErr2VBoxErr(int rc);
    155155# else
    156 static int              SolarisTAPAttach(PDRVTAP pData);
     156static int              SolarisTAPAttach(PDRVTAP pThis);
    157157# endif
    158158#endif
     
    170170static DECLCALLBACK(int) drvTAPSend(PPDMINETWORKCONNECTOR pInterface, const void *pvBuf, size_t cb)
    171171{
    172     PDRVTAP pData = PDMINETWORKCONNECTOR_2_DRVTAP(pInterface);
    173     STAM_COUNTER_INC(&pData->StatPktSent);
    174     STAM_COUNTER_ADD(&pData->StatPktSentBytes, cb);
    175     STAM_PROFILE_START(&pData->StatTransmit, a);
     172    PDRVTAP pThis = PDMINETWORKCONNECTOR_2_DRVTAP(pInterface);
     173    STAM_COUNTER_INC(&pThis->StatPktSent);
     174    STAM_COUNTER_ADD(&pThis->StatPktSentBytes, cb);
     175    STAM_PROFILE_START(&pThis->StatTransmit, a);
    176176
    177177#ifdef LOG_ENABLED
    178178    uint64_t u64Now = RTTimeProgramNanoTS();
    179179    LogFlow(("drvTAPSend: %-4d bytes at %llu ns  deltas: r=%llu t=%llu\n",
    180              cb, u64Now, u64Now - pData->u64LastReceiveTS, u64Now - pData->u64LastTransferTS));
    181     pData->u64LastTransferTS = u64Now;
     180             cb, u64Now, u64Now - pThis->u64LastReceiveTS, u64Now - pThis->u64LastTransferTS));
     181    pThis->u64LastTransferTS = u64Now;
    182182#endif
    183183    Log2(("drvTAPSend: pvBuf=%p cb=%#x\n"
     
    185185          pvBuf, cb, cb, pvBuf));
    186186
    187     int rc = RTFileWrite(pData->FileDevice, pvBuf, cb, NULL);
    188 
    189     STAM_PROFILE_STOP(&pData->StatTransmit, a);
     187    int rc = RTFileWrite(pThis->FileDevice, pvBuf, cb, NULL);
     188
     189    STAM_PROFILE_STOP(&pThis->StatTransmit, a);
    190190    AssertRC(rc);
    191191    return rc;
     
    233233static DECLCALLBACK(int) drvTAPAsyncIoThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    234234{
    235     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    236     LogFlow(("drvTAPAsyncIoThread: pData=%p\n", pData));
     235    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     236    LogFlow(("drvTAPAsyncIoThread: pThis=%p\n", pThis));
    237237
    238238    if (pThread->enmState == PDMTHREADSTATE_INITIALIZING)
    239239        return VINF_SUCCESS;
    240240
    241     STAM_PROFILE_ADV_START(&pData->StatReceive, a);
     241    STAM_PROFILE_ADV_START(&pThis->StatReceive, a);
    242242
    243243    /*
     
    250250         */
    251251        struct pollfd aFDs[2];
    252         aFDs[0].fd      = pData->FileDevice;
     252        aFDs[0].fd      = pThis->FileDevice;
    253253        aFDs[0].events  = POLLIN | POLLPRI;
    254254        aFDs[0].revents = 0;
    255         aFDs[1].fd      = pData->PipeRead;
     255        aFDs[1].fd      = pThis->PipeRead;
    256256        aFDs[1].events  = POLLIN | POLLPRI | POLLERR | POLLHUP;
    257257        aFDs[1].revents = 0;
    258         STAM_PROFILE_ADV_STOP(&pData->StatReceive, a);
     258        STAM_PROFILE_ADV_STOP(&pThis->StatReceive, a);
    259259        errno=0;
    260260        int rc = poll(&aFDs[0], RT_ELEMENTS(aFDs), -1 /* infinite */);
     
    264264            break;
    265265
    266         STAM_PROFILE_ADV_START(&pData->StatReceive, a);
     266        STAM_PROFILE_ADV_START(&pThis->StatReceive, a);
    267267        if (    rc > 0
    268268            &&  (aFDs[0].revents & (POLLIN | POLLPRI))
     
    276276#ifdef VBOX_WITH_CROSSBOW
    277277            cbRead = sizeof(achBuf);
    278             rc = g_pfnLibDlpiRecv(pData->pDeviceHandle, NULL, NULL, achBuf, &cbRead, -1, NULL);
     278            rc = g_pfnLibDlpiRecv(pThis->pDeviceHandle, NULL, NULL, achBuf, &cbRead, -1, NULL);
    279279            rc = RT_LIKELY(rc == DLPI_SUCCESS) ? VINF_SUCCESS : SolarisDLPIErr2VBoxErr(rc);
    280280#else
     
    282282             *        after poll() returned successfully. I don't know why but a second
    283283             *        RTFileRead() operation will return with VERR_TRY_AGAIN in any case. */
    284             rc = RTFileRead(pData->FileDevice, achBuf, sizeof(achBuf), &cbRead);
     284            rc = RTFileRead(pThis->FileDevice, achBuf, sizeof(achBuf), &cbRead);
    285285#endif
    286286            if (RT_SUCCESS(rc))
     
    299299                 *    overflow error to allocate more receive buffers
    300300                 */
    301                 STAM_PROFILE_ADV_STOP(&pData->StatReceive, a);
    302                 int rc = pData->pPort->pfnWaitReceiveAvail(pData->pPort, RT_INDEFINITE_WAIT);
    303                 STAM_PROFILE_ADV_START(&pData->StatReceive, a);
     301                STAM_PROFILE_ADV_STOP(&pThis->StatReceive, a);
     302                int rc = pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, RT_INDEFINITE_WAIT);
     303                STAM_PROFILE_ADV_START(&pThis->StatReceive, a);
    304304
    305305                /*
     
    316316                uint64_t u64Now = RTTimeProgramNanoTS();
    317317                LogFlow(("drvTAPAsyncIoThread: %-4d bytes at %llu ns  deltas: r=%llu t=%llu\n",
    318                          cbRead, u64Now, u64Now - pData->u64LastReceiveTS, u64Now - pData->u64LastTransferTS));
    319                 pData->u64LastReceiveTS = u64Now;
     318                         cbRead, u64Now, u64Now - pThis->u64LastReceiveTS, u64Now - pThis->u64LastTransferTS));
     319                pThis->u64LastReceiveTS = u64Now;
    320320#endif
    321321                Log2(("drvTAPAsyncIoThread: cbRead=%#x\n" "%.*Vhxd\n", cbRead, cbRead, achBuf));
    322                 STAM_COUNTER_INC(&pData->StatPktRecv);
    323                 STAM_COUNTER_ADD(&pData->StatPktRecvBytes, cbRead);
    324                 rc = pData->pPort->pfnReceive(pData->pPort, achBuf, cbRead);
     322                STAM_COUNTER_INC(&pThis->StatPktRecv);
     323                STAM_COUNTER_ADD(&pThis->StatPktRecvBytes, cbRead);
     324                rc = pThis->pPort->pfnReceive(pThis->pPort, achBuf, cbRead);
    325325                AssertRC(rc);
    326326            }
     
    343343            char ch;
    344344            size_t cbRead;
    345             RTFileRead(pData->PipeRead, &ch, 1, &cbRead);
     345            RTFileRead(pThis->PipeRead, &ch, 1, &cbRead);
    346346        }
    347347        else
     
    363363
    364364    LogFlow(("drvTAPAsyncIoThread: returns %Vrc\n", VINF_SUCCESS));
    365     STAM_PROFILE_ADV_STOP(&pData->StatReceive, a);
     365    STAM_PROFILE_ADV_STOP(&pThis->StatReceive, a);
    366366    return VINF_SUCCESS;
    367367}
     
    377377static DECLCALLBACK(int) drvTapAsyncIoWakeup(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    378378{
    379     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    380 
    381     int rc = RTFileWrite(pData->PipeWrite, "", 1, NULL);
     379    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     380
     381    int rc = RTFileWrite(pThis->PipeWrite, "", 1, NULL);
    382382    AssertRC(rc);
    383383
     
    391391 *
    392392 * @returns VBox error code.
    393  * @param   pData           The instance data.
    394  */
    395 static int drvTAPSetupApplication(PDRVTAP pData)
     393 * @param   pThis           The instance data.
     394 */
     395static int drvTAPSetupApplication(PDRVTAP pThis)
    396396{
    397397    char szCommand[4096];
     
    400400    /* Convert MAC address bytes to string (required by Solaris' dladm). */
    401401    char *pszHex = "0123456789abcdef";
    402     uint8_t *pMacAddr8 = pData->MacAddress.au8;
     402    uint8_t *pMacAddr8 = pThis->MacAddress.au8;
    403403    char szMacAddress[3 * sizeof(RTMAC)];
    404404    for (unsigned int i = 0; i < sizeof(RTMAC); i++)
     
    411411    szMacAddress[sizeof(szMacAddress) - 1] =  0;
    412412
    413     RTStrPrintf(szCommand, sizeof(szCommand), "%s %s %s", pData->pszSetupApplication,
    414             szMacAddress, pData->fStatic ? pData->pszDeviceName : "");
     413    RTStrPrintf(szCommand, sizeof(szCommand), "%s %s %s", pThis->pszSetupApplication,
     414            szMacAddress, pThis->fStatic ? pThis->pszDeviceName : "");
    415415#else
    416     RTStrPrintf(szCommand, sizeof(szCommand), "%s %s", pData->pszSetupApplication,
    417             pData->fStatic ? pData->pszDeviceName : "");
     416    RTStrPrintf(szCommand, sizeof(szCommand), "%s %s", pThis->pszSetupApplication,
     417            pThis->fStatic ? pThis->pszDeviceName : "");
    418418#endif
    419419
     
    423423    if (pfSetupHandle == 0)
    424424    {
    425         LogRel(("TAP#%d: Failed to run TAP setup application: %s\n", pData->pDrvIns->iInstance,
    426               pData->pszSetupApplication, strerror(errno)));
     425        LogRel(("TAP#%d: Failed to run TAP setup application: %s\n", pThis->pDrvIns->iInstance,
     426              pThis->pszSetupApplication, strerror(errno)));
    427427        return VERR_HOSTIF_INIT_FAILED;
    428428    }
    429     if (!pData->fStatic)
     429    if (!pThis->fStatic)
    430430    {
    431431        /* Obtain device name from setup application. */
     
    444444        /* Overwrite the terminating newline character. */
    445445        acBuffer[cBufSize - 1] = 0;
    446         RTStrAPrintf(&pData->pszDeviceName, "%s", acBuffer);
     446        RTStrAPrintf(&pThis->pszDeviceName, "%s", acBuffer);
    447447    }
    448448    int rc = pclose(pfSetupHandle);
     
    465465 *
    466466 * @returns VBox error code.
    467  * @param   pData           The instance data.
    468  */
    469 static int drvTAPTerminateApplication(PDRVTAP pData)
     467 * @param   pThis           The instance data.
     468 */
     469static int drvTAPTerminateApplication(PDRVTAP pThis)
    470470{
    471471    char *pszArgs[3];
    472     pszArgs[0] = pData->pszTerminateApplication;
    473     pszArgs[1] = pData->pszDeviceName;
     472    pszArgs[0] = pThis->pszTerminateApplication;
     473    pszArgs[1] = pThis->pszDeviceName;
    474474    pszArgs[2] = NULL;
    475475
    476     Log2(("Starting TAP terminate application: %s %s\n", pData->pszTerminateApplication, pData->pszDeviceName));
     476    Log2(("Starting TAP terminate application: %s %s\n", pThis->pszTerminateApplication, pThis->pszDeviceName));
    477477    RTPROCESS pid = NIL_RTPROCESS;
    478478    int rc = RTProcCreate(pszArgs[0], pszArgs, RTENV_DEFAULT, 0, &pid);
     
    487487                return VINF_SUCCESS;
    488488
    489             LogRel(("TAP#%d: Error running TAP terminate application: %s\n", pData->pDrvIns->iInstance, pData->pszTerminateApplication));
     489            LogRel(("TAP#%d: Error running TAP terminate application: %s\n", pThis->pDrvIns->iInstance, pThis->pszTerminateApplication));
    490490        }
    491491        else
    492             LogRel(("TAP#%d: RTProcWait failed for: %s\n", pData->pDrvIns->iInstance, pData->pszTerminateApplication));
     492            LogRel(("TAP#%d: RTProcWait failed for: %s\n", pThis->pDrvIns->iInstance, pThis->pszTerminateApplication));
    493493    }
    494494    else
    495495    {
    496496        /* Bad. RTProcCreate() failed! */
    497         LogRel(("TAP#%d: Failed to fork() process for running TAP terminate application: %s\n", pData->pDrvIns->iInstance,
    498               pData->pszTerminateApplication, strerror(errno)));
     497        LogRel(("TAP#%d: Failed to fork() process for running TAP terminate application: %s\n", pThis->pDrvIns->iInstance,
     498              pThis->pszTerminateApplication, strerror(errno)));
    499499    }
    500500    return VERR_HOSTIF_TERM_FAILED;
     
    510510 *
    511511 * @returns VBox error code.
    512  * @param   pData           The instance data.
    513  */
    514 static int SolarisOpenVNIC(PDRVTAP pData)
     512 * @param   pThis           The instance data.
     513 */
     514static int SolarisOpenVNIC(PDRVTAP pThis)
    515515{
    516516    /*
    517517     * Open & bind the NIC using the datalink provider routine.
    518518     */
    519     int rc = g_pfnLibDlpiOpen(pData->pszDeviceName, &pData->pDeviceHandle, DLPI_RAW);
     519    int rc = g_pfnLibDlpiOpen(pThis->pszDeviceName, &pThis->pDeviceHandle, DLPI_RAW);
    520520    if (rc != DLPI_SUCCESS)
    521         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    522                            N_("Failed to open VNIC \"%s\" in raw mode"), pData->pszDeviceName);
     521        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     522                           N_("Failed to open VNIC \"%s\" in raw mode"), pThis->pszDeviceName);
    523523
    524524    dlpi_info_t vnicInfo;
    525     rc = g_pfnLibDlpiInfo(pData->pDeviceHandle, &vnicInfo, 0);
     525    rc = g_pfnLibDlpiInfo(pThis->pDeviceHandle, &vnicInfo, 0);
    526526    if (rc == DLPI_SUCCESS)
    527527    {
    528528        if (vnicInfo.di_mactype == DL_ETHER)
    529529        {
    530             rc = g_pfnLibDlpiBind(pData->pDeviceHandle, DLPI_ANY_SAP, NULL);
     530            rc = g_pfnLibDlpiBind(pThis->pDeviceHandle, DLPI_ANY_SAP, NULL);
    531531            if (rc == DLPI_SUCCESS)
    532532            {
    533                 rc = g_pfnLibDlpiSetPhysAddr(pData->pDeviceHandle, DL_CURR_PHYS_ADDR, &pData->MacAddress, ETHERADDRL);
     533                rc = g_pfnLibDlpiSetPhysAddr(pThis->pDeviceHandle, DL_CURR_PHYS_ADDR, &pThis->MacAddress, ETHERADDRL);
    534534                if (rc == DLPI_SUCCESS)
    535535                {
    536                     rc = g_pfnLibDlpiPromiscon(pData->pDeviceHandle, DL_PROMISC_SAP);
     536                    rc = g_pfnLibDlpiPromiscon(pThis->pDeviceHandle, DL_PROMISC_SAP);
    537537                    if (rc == DLPI_SUCCESS)
    538538                    {
    539539                        /* Need to use DL_PROMIS_PHYS (not multicast) as we cannot be sure what the guest needs. */
    540                         rc = g_pfnLibDlpiPromiscon(pData->pDeviceHandle, DL_PROMISC_PHYS);
     540                        rc = g_pfnLibDlpiPromiscon(pThis->pDeviceHandle, DL_PROMISC_PHYS);
    541541                        if (rc == DLPI_SUCCESS)
    542542                        {
    543                             pData->FileDevice = g_pfnLibDlpiFd(pData->pDeviceHandle);
    544                             if (pData->FileDevice >= 0)
     543                            pThis->FileDevice = g_pfnLibDlpiFd(pThis->pDeviceHandle);
     544                            if (pThis->FileDevice >= 0)
    545545                            {
    546                                 Log(("SolarisOpenVNIC: %s -> %d\n", pData->pszDeviceName, pData->FileDevice));
     546                                Log(("SolarisOpenVNIC: %s -> %d\n", pThis->pszDeviceName, pThis->FileDevice));
    547547                                return VINF_SUCCESS;
    548548                            }
    549549
    550                             rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     550                            rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    551551                                                     N_("Failed to obtain file descriptor for VNIC"));
    552552                        }
    553553                        else
    554                             rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     554                            rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    555555                                                     N_("Failed to set appropriate promiscous mode"));
    556556                    }
    557557                    else
    558                         rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     558                        rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    559559                                                 N_("Failed to activate promiscous mode for VNIC"));
    560560                }
    561561                else
    562                     rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     562                    rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    563563                                             N_("Failed to set physical address for VNIC"));
    564564            }
    565565            else
    566                 rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     566                rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    567567                                         N_("Failed to bind VNIC"));
    568568        }
    569569        else
    570             rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     570            rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    571571                                         N_("VNIC type is not ethernet"));
    572572    }
    573573    else
    574         rc = PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     574        rc = PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    575575                                         N_("Failed to obtain VNIC info"));
    576     g_pfnLibDlpiClose(pData->pDeviceHandle);
     576    g_pfnLibDlpiClose(pThis->pDeviceHandle);
    577577    return rc;
    578578}
     
    625625 *
    626626 * @returns VBox error code.
    627  * @param   pData            The instance data.
    628  */
    629 static DECLCALLBACK(int) SolarisTAPAttach(PDRVTAP pData)
    630 {
    631     LogFlow(("SolarisTapAttach: pData=%p\n", pData));
     627 * @param   pThis            The instance data.
     628 */
     629static DECLCALLBACK(int) SolarisTAPAttach(PDRVTAP pThis)
     630{
     631    LogFlow(("SolarisTapAttach: pThis=%p\n", pThis));
    632632
    633633
    634634    int IPFileDes = open("/dev/udp", O_RDWR, 0);
    635635    if (IPFileDes < 0)
    636         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
     636        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
    637637                                   N_("Failed to open /dev/udp. errno=%d"), errno);
    638638
    639639    int TapFileDes = open("/dev/tap", O_RDWR, 0);
    640640    if (TapFileDes < 0)
    641         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
     641        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
    642642                                   N_("Failed to open /dev/tap for TAP. errno=%d"), errno);
    643643
    644644    /* Use the PPA from the ifname if possible (e.g "tap2", then use 2 as PPA) */
    645645    int iPPA = -1;
    646     if (pData->pszDeviceName)
    647     {
    648         size_t cch = strlen(pData->pszDeviceName);
    649         if (cch > 1 && isdigit(pData->pszDeviceName[cch - 1]) != 0)
    650             iPPA = pData->pszDeviceName[cch - 1] - '0';
     646    if (pThis->pszDeviceName)
     647    {
     648        size_t cch = strlen(pThis->pszDeviceName);
     649        if (cch > 1 && isdigit(pThis->pszDeviceName[cch - 1]) != 0)
     650            iPPA = pThis->pszDeviceName[cch - 1] - '0';
    651651    }
    652652
     
    660660    {
    661661        close(TapFileDes);
    662         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
     662        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
    663663                                   N_("Failed to get new interface. errno=%d"), errno);
    664664    }
     
    666666    int InterfaceFD = open("/dev/tap", O_RDWR, 0);
    667667    if (!InterfaceFD)
    668         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
     668        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_PDM_HIF_OPEN_FAILED, RT_SRC_POS,
    669669                                   N_("Failed to open interface /dev/tap. errno=%d"), errno);
    670670
     
    672672    {
    673673        close(InterfaceFD);
    674         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
     674        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
    675675                                   N_("Failed to push IP. errno=%d"), errno);
    676676    }
     
    679679    memset(&ifReq, 0, sizeof(ifReq));
    680680    if (ioctl(InterfaceFD, SIOCGLIFFLAGS, &ifReq) == -1)
    681         LogRel(("TAP#%d: Failed to get interface flags.\n", pData->pDrvIns->iInstance));
     681        LogRel(("TAP#%d: Failed to get interface flags.\n", pThis->pDrvIns->iInstance));
    682682
    683683    ifReq.lifr_ppa = iPPA;
    684     RTStrPrintf (ifReq.lifr_name, sizeof(ifReq.lifr_name), pData->pszDeviceName);
     684    RTStrPrintf (ifReq.lifr_name, sizeof(ifReq.lifr_name), pThis->pszDeviceName);
    685685
    686686    if (ioctl(InterfaceFD, SIOCSLIFNAME, &ifReq) == -1)
    687         LogRel(("TAP#%d: Failed to set PPA. errno=%d\n", pData->pDrvIns->iInstance, errno));
     687        LogRel(("TAP#%d: Failed to set PPA. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    688688
    689689    if (ioctl(InterfaceFD, SIOCGLIFFLAGS, &ifReq) == -1)
    690         LogRel(("TAP#%d: Failed to get interface flags after setting PPA. errno=%d\n", pData->pDrvIns->iInstance, errno));
     690        LogRel(("TAP#%d: Failed to get interface flags after setting PPA. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    691691
    692692#ifdef VBOX_SOLARIS_TAP_ARP
    693693    /* Interface */
    694694    if (ioctl(InterfaceFD, I_PUSH, "arp") == -1)
    695         LogRel(("TAP#%d: Failed to push ARP to Interface FD. errno=%d\n", pData->pDrvIns->iInstance, errno));
     695        LogRel(("TAP#%d: Failed to push ARP to Interface FD. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    696696
    697697    /* IP */
    698698    if (ioctl(IPFileDes, I_POP, NULL) == -1)
    699         LogRel(("TAP#%d: Failed I_POP from IP FD. errno=%d\n", pData->pDrvIns->iInstance, errno));
     699        LogRel(("TAP#%d: Failed I_POP from IP FD. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    700700
    701701    if (ioctl(IPFileDes, I_PUSH, "arp") == -1)
    702         LogRel(("TAP#%d: Failed to push ARP to IP FD. errno=%d\n", pData->pDrvIns->iInstance, errno));
     702        LogRel(("TAP#%d: Failed to push ARP to IP FD. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    703703
    704704    /* ARP */
    705705    int ARPFileDes = open("/dev/tap", O_RDWR, 0);
    706706    if (ARPFileDes < 0)
    707         LogRel(("TAP#%d: Failed to open for /dev/tap for ARP. errno=%d", pData->pDrvIns->iInstance, errno));
     707        LogRel(("TAP#%d: Failed to open for /dev/tap for ARP. errno=%d", pThis->pDrvIns->iInstance, errno));
    708708
    709709    if (ioctl(ARPFileDes, I_PUSH, "arp") == -1)
    710         LogRel(("TAP#%d: Failed to push ARP to ARP FD. errno=%d\n", pData->pDrvIns->iInstance, errno));
     710        LogRel(("TAP#%d: Failed to push ARP to ARP FD. errno=%d\n", pThis->pDrvIns->iInstance, errno));
    711711
    712712    ioIF.ic_cmd = SIOCSLIFNAME;
     
    715715    ioIF.ic_dp = (char *)&ifReq;
    716716    if (ioctl(ARPFileDes, I_STR, &ioIF) == -1)
    717         LogRel(("TAP#%d: Failed to set interface name to ARP.\n", pData->pDrvIns->iInstance));
     717        LogRel(("TAP#%d: Failed to set interface name to ARP.\n", pThis->pDrvIns->iInstance));
    718718#endif
    719719
     
    729729        close(ARPFileDes);
    730730#endif
    731         LogRel(("TAP#%d: Cannot link TAP device to IP.\n", pData->pDrvIns->iInstance));
    732         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
     731        LogRel(("TAP#%d: Cannot link TAP device to IP.\n", pThis->pDrvIns->iInstance));
     732        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
    733733                    N_("Failed to link TAP device to IP. Check TAP interface name. errno=%d"), errno);
    734734    }
     
    737737    int ARPMuxID = ioctl(IPFileDes, I_LINK, ARPFileDes);
    738738    if (ARPMuxID == -1)
    739         LogRel(("TAP#%d: Failed to link TAP device to ARP\n", pData->pDrvIns->iInstance));
     739        LogRel(("TAP#%d: Failed to link TAP device to ARP\n", pThis->pDrvIns->iInstance));
    740740
    741741    close(ARPFileDes);
     
    745745    /* Reuse ifReq */
    746746    memset(&ifReq, 0, sizeof(ifReq));
    747     RTStrPrintf (ifReq.lifr_name, sizeof(ifReq.lifr_name), pData->pszDeviceName);
     747    RTStrPrintf (ifReq.lifr_name, sizeof(ifReq.lifr_name), pThis->pszDeviceName);
    748748    ifReq.lifr_ip_muxid  = IPMuxID;
    749749#ifdef VBOX_SOLARIS_TAP_ARP
     
    758758        ioctl(IPFileDes, I_PUNLINK, IPMuxID);
    759759        close(IPFileDes);
    760         LogRel(("TAP#%d: Failed to set Mux ID.\n", pData->pDrvIns->iInstance));
    761         return PDMDrvHlpVMSetError(pData->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
     760        LogRel(("TAP#%d: Failed to set Mux ID.\n", pThis->pDrvIns->iInstance));
     761        return PDMDrvHlpVMSetError(pThis->pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
    762762                                   N_("Failed to set Mux ID. Check TAP interface name. errno=%d"), errno);
    763763    }
    764764
    765     pData->FileDevice = (RTFILE)TapFileDes;
    766     pData->IPFileDevice = (RTFILE)IPFileDes;
     765    pThis->FileDevice = (RTFILE)TapFileDes;
     766    pThis->IPFileDevice = (RTFILE)IPFileDes;
    767767
    768768    return VINF_SUCCESS;
     
    785785{
    786786    PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    787     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     787    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    788788    switch (enmInterface)
    789789    {
     
    791791            return &pDrvIns->IBase;
    792792        case PDMINTERFACE_NETWORK_CONNECTOR:
    793             return &pData->INetworkConnector;
     793            return &pThis->INetworkConnector;
    794794        default:
    795795            return NULL;
     
    809809{
    810810    LogFlow(("drvTAPDestruct\n"));
    811     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     811    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    812812
    813813    /*
    814814     * Terminate the control pipe.
    815815     */
    816     if (pData->PipeWrite != NIL_RTFILE)
    817     {
    818         int rc = RTFileClose(pData->PipeWrite);
     816    if (pThis->PipeWrite != NIL_RTFILE)
     817    {
     818        int rc = RTFileClose(pThis->PipeWrite);
    819819        AssertRC(rc);
    820         pData->PipeWrite = NIL_RTFILE;
    821     }
    822     if (pData->PipeRead != NIL_RTFILE)
    823     {
    824         int rc = RTFileClose(pData->PipeRead);
     820        pThis->PipeWrite = NIL_RTFILE;
     821    }
     822    if (pThis->PipeRead != NIL_RTFILE)
     823    {
     824        int rc = RTFileClose(pThis->PipeRead);
    825825        AssertRC(rc);
    826         pData->PipeRead = NIL_RTFILE;
     826        pThis->PipeRead = NIL_RTFILE;
    827827    }
    828828
    829829#ifdef RT_OS_SOLARIS
    830830    /** @todo r=bird: This *does* need checking against ConsoleImpl2.cpp if used on non-solaris systems. */
    831     if (pData->FileDevice != NIL_RTFILE)
    832     {
    833         int rc = RTFileClose(pData->FileDevice);
     831    if (pThis->FileDevice != NIL_RTFILE)
     832    {
     833        int rc = RTFileClose(pThis->FileDevice);
    834834        AssertRC(rc);
    835         pData->FileDevice = NIL_RTFILE;
     835        pThis->FileDevice = NIL_RTFILE;
    836836    }
    837837
    838838# ifndef VBOX_WITH_CROSSBOW
    839     if (pData->IPFileDevice != NIL_RTFILE)
    840     {
    841         int rc = RTFileClose(pData->IPFileDevice);
     839    if (pThis->IPFileDevice != NIL_RTFILE)
     840    {
     841        int rc = RTFileClose(pThis->IPFileDevice);
    842842        AssertRC(rc);
    843         pData->IPFileDevice = NIL_RTFILE;
     843        pThis->IPFileDevice = NIL_RTFILE;
    844844    }
    845845# endif
     
    849849     * TerminateApplication would not be able to unplumb it.
    850850     */
    851     if (pData->pszTerminateApplication)
    852         drvTAPTerminateApplication(pData);
     851    if (pThis->pszTerminateApplication)
     852        drvTAPTerminateApplication(pThis);
    853853
    854854#endif  /* RT_OS_SOLARIS */
    855855
    856856#ifdef RT_OS_SOLARIS
    857     if (!pData->fStatic)
    858         RTStrFree(pData->pszDeviceName);    /* allocated by drvTAPSetupApplication */
     857    if (!pThis->fStatic)
     858        RTStrFree(pThis->pszDeviceName);    /* allocated by drvTAPSetupApplication */
    859859    else
    860         MMR3HeapFree(pData->pszDeviceName);
     860        MMR3HeapFree(pThis->pszDeviceName);
    861861#else
    862     MMR3HeapFree(pData->pszDeviceName);
    863 #endif
    864     MMR3HeapFree(pData->pszSetupApplication);
    865     MMR3HeapFree(pData->pszTerminateApplication);
     862    MMR3HeapFree(pThis->pszDeviceName);
     863#endif
     864    MMR3HeapFree(pThis->pszSetupApplication);
     865    MMR3HeapFree(pThis->pszTerminateApplication);
    866866}
    867867
     
    879879static DECLCALLBACK(int) drvTAPConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    880880{
    881     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     881    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    882882
    883883    /*
    884884     * Init the static parts.
    885885     */
    886     pData->pDrvIns                      = pDrvIns;
    887     pData->FileDevice                   = NIL_RTFILE;
    888     pData->pszDeviceName                = NULL;
     886    pThis->pDrvIns                      = pDrvIns;
     887    pThis->FileDevice                   = NIL_RTFILE;
     888    pThis->pszDeviceName                = NULL;
    889889#ifdef RT_OS_SOLARIS
    890890# ifdef VBOX_WITH_CROSSBOW
    891     pData->pDeviceHandle                = NULL;
     891    pThis->pDeviceHandle                = NULL;
    892892# else
    893     pData->IPFileDevice                 = NIL_RTFILE;
     893    pThis->IPFileDevice                 = NIL_RTFILE;
    894894# endif
    895     pData->fStatic                      = true;
    896 #endif
    897     pData->pszSetupApplication          = NULL;
    898     pData->pszTerminateApplication      = NULL;
     895    pThis->fStatic                      = true;
     896#endif
     897    pThis->pszSetupApplication          = NULL;
     898    pThis->pszTerminateApplication      = NULL;
    899899
    900900    /* IBase */
    901901    pDrvIns->IBase.pfnQueryInterface    = drvTAPQueryInterface;
    902902    /* INetwork */
    903     pData->INetworkConnector.pfnSend                = drvTAPSend;
    904     pData->INetworkConnector.pfnSetPromiscuousMode  = drvTAPSetPromiscuousMode;
    905     pData->INetworkConnector.pfnNotifyLinkChanged   = drvTAPNotifyLinkChanged;
     903    pThis->INetworkConnector.pfnSend                = drvTAPSend;
     904    pThis->INetworkConnector.pfnSetPromiscuousMode  = drvTAPSetPromiscuousMode;
     905    pThis->INetworkConnector.pfnNotifyLinkChanged   = drvTAPNotifyLinkChanged;
    906906
    907907    /*
     
    922922     * Query the network port interface.
    923923     */
    924     pData->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
    925     if (!pData->pPort)
     924    pThis->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
     925    if (!pThis->pPort)
    926926        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE,
    927927                                N_("Configuration error: The above device/driver didn't export the network port interface"));
     
    931931     */
    932932#if defined(RT_OS_SOLARIS)   /** @todo Other platforms' TAP code should be moved here from ConsoleImpl & VBoxBFE. */
    933     rc = CFGMR3QueryStringAlloc(pCfgHandle, "TAPSetupApplication", &pData->pszSetupApplication);
     933    rc = CFGMR3QueryStringAlloc(pCfgHandle, "TAPSetupApplication", &pThis->pszSetupApplication);
    934934    if (RT_SUCCESS(rc))
    935935    {
    936         if (!RTPathExists(pData->pszSetupApplication))
     936        if (!RTPathExists(pThis->pszSetupApplication))
    937937            return PDMDrvHlpVMSetError(pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    938                                        N_("Invalid TAP setup program path: %s"), pData->pszSetupApplication);
     938                                       N_("Invalid TAP setup program path: %s"), pThis->pszSetupApplication);
    939939    }
    940940    else if (rc != VERR_CFGM_VALUE_NOT_FOUND)
    941941        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Configuration error: failed to query \"TAPTerminateApplication\""));
    942942
    943     rc = CFGMR3QueryStringAlloc(pCfgHandle, "TAPTerminateApplication", &pData->pszTerminateApplication);
     943    rc = CFGMR3QueryStringAlloc(pCfgHandle, "TAPTerminateApplication", &pThis->pszTerminateApplication);
    944944    if (RT_SUCCESS(rc))
    945945    {
    946         if (!RTPathExists(pData->pszTerminateApplication))
     946        if (!RTPathExists(pThis->pszTerminateApplication))
    947947            return PDMDrvHlpVMSetError(pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
    948                                        N_("Invalid TAP terminate program path: %s"), pData->pszTerminateApplication);
     948                                       N_("Invalid TAP terminate program path: %s"), pThis->pszTerminateApplication);
    949949    }
    950950    else if (rc != VERR_CFGM_VALUE_NOT_FOUND)
     
    952952
    953953# ifdef VBOX_WITH_CROSSBOW
    954     rc = CFGMR3QueryBytes(pCfgHandle, "MAC", &pData->MacAddress, sizeof(pData->MacAddress));
     954    rc = CFGMR3QueryBytes(pCfgHandle, "MAC", &pThis->MacAddress, sizeof(pThis->MacAddress));
    955955    if (RT_FAILURE(rc))
    956956        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Configuration error: Failed to query \"MAC\""));
    957957# endif
    958958
    959     rc = CFGMR3QueryStringAlloc(pCfgHandle, "Device", &pData->pszDeviceName);
     959    rc = CFGMR3QueryStringAlloc(pCfgHandle, "Device", &pThis->pszDeviceName);
    960960    if (RT_FAILURE(rc))
    961         pData->fStatic = false;
     961        pThis->fStatic = false;
    962962
    963963    /* Obtain the device name from the setup application (if none was specified). */
    964     if (pData->pszSetupApplication)
    965     {
    966         rc = drvTAPSetupApplication(pData);
     964    if (pThis->pszSetupApplication)
     965    {
     966        rc = drvTAPSetupApplication(pThis);
    967967        if (RT_FAILURE(rc))
    968968            return PDMDrvHlpVMSetError(pDrvIns, VERR_HOSTIF_INIT_FAILED, RT_SRC_POS,
     
    979979                                       N_("Failed to load library %s required for host interface networking."), LIB_DLPI);
    980980    }
    981     rc = SolarisOpenVNIC(pData);
     981    rc = SolarisOpenVNIC(pThis);
    982982# else
    983     rc = SolarisTAPAttach(pData);
     983    rc = SolarisTAPAttach(pThis);
    984984# endif
    985985    if (RT_FAILURE(rc))
     
    993993        return PDMDRV_SET_ERROR(pDrvIns, rc,
    994994                                N_("Configuration error: Query for \"FileHandle\" 32-bit signed integer failed"));
    995     pData->FileDevice = (RTFILE)iFile;
    996     if (!RTFileIsValid(pData->FileDevice))
     995    pThis->FileDevice = (RTFILE)iFile;
     996    if (!RTFileIsValid(pThis->FileDevice))
    997997        return PDMDrvHlpVMSetError(pDrvIns, VERR_INVALID_HANDLE, RT_SRC_POS,
    998                                    N_("The TAP file handle %RTfile is not valid"), pData->FileDevice);
     998                                   N_("The TAP file handle %RTfile is not valid"), pThis->FileDevice);
    999999#endif /* !RT_OS_SOLARIS */
    10001000
     
    10051005     * found any way to do that.
    10061006     */
    1007     if (fcntl(pData->FileDevice, F_SETFL, O_NONBLOCK) == -1)
     1007    if (fcntl(pThis->FileDevice, F_SETFL, O_NONBLOCK) == -1)
    10081008        return PDMDrvHlpVMSetError(pDrvIns, VERR_HOSTIF_IOCTL, RT_SRC_POS,
    10091009                                   N_("Configuration error: Failed to configure /dev/net/tun. errno=%d"), errno);
    10101010    /** @todo determine device name. This can be done by reading the link /proc/<pid>/fd/<fd> */
    1011     Log(("drvTAPContruct: %d (from fd)\n", pData->FileDevice));
     1011    Log(("drvTAPContruct: %d (from fd)\n", pThis->FileDevice));
    10121012    rc = VINF_SUCCESS;
    10131013
     
    10261026        return rc;
    10271027    }
    1028     pData->PipeRead = fds[0];
    1029     pData->PipeWrite = fds[1];
     1028    pThis->PipeRead = fds[0];
     1029    pThis->PipeWrite = fds[1];
    10301030
    10311031    /*
    10321032     * Create the async I/O thread.
    10331033     */
    1034     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pThread, pData, drvTAPAsyncIoThread, drvTapAsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "TAP");
     1034    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pThread, pThis, drvTAPAsyncIoThread, drvTapAsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "TAP");
    10351035    AssertRCReturn(rc, rc);
    10361036
     
    10391039     * Statistics.
    10401040     */
    1041     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktSent,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,        "Number of sent packets.",          "/Drivers/TAP%d/Packets/Sent", pDrvIns->iInstance);
    1042     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktSentBytes,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,             "Number of sent bytes.",            "/Drivers/TAP%d/Bytes/Sent", pDrvIns->iInstance);
    1043     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktRecv,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,        "Number of received packets.",      "/Drivers/TAP%d/Packets/Received", pDrvIns->iInstance);
    1044     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktRecvBytes,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,             "Number of received bytes.",        "/Drivers/TAP%d/Bytes/Received", pDrvIns->iInstance);
    1045     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatTransmit,      STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,    "Profiling packet transmit runs.",  "/Drivers/TAP%d/Transmit", pDrvIns->iInstance);
    1046     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatReceive,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,    "Profiling packet receive runs.",   "/Drivers/TAP%d/Receive", pDrvIns->iInstance);
     1041    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktSent,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,        "Number of sent packets.",          "/Drivers/TAP%d/Packets/Sent", pDrvIns->iInstance);
     1042    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktSentBytes,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,             "Number of sent bytes.",            "/Drivers/TAP%d/Bytes/Sent", pDrvIns->iInstance);
     1043    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktRecv,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,        "Number of received packets.",      "/Drivers/TAP%d/Packets/Received", pDrvIns->iInstance);
     1044    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktRecvBytes,  STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,             "Number of received bytes.",        "/Drivers/TAP%d/Bytes/Received", pDrvIns->iInstance);
     1045    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatTransmit,      STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,    "Profiling packet transmit runs.",  "/Drivers/TAP%d/Transmit", pDrvIns->iInstance);
     1046    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatReceive,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL,    "Profiling packet receive runs.",   "/Drivers/TAP%d/Receive", pDrvIns->iInstance);
    10471047#endif /* VBOX_WITH_STATISTICS */
    10481048
  • trunk/src/VBox/Devices/Network/DrvTAPWin.cpp

    r11267 r11269  
    112112    DWORD      cbBytesWritten;
    113113    int        rc;
    114     PDRVTAP    pData = PDMINETWORKCONNECTOR_2_DRVTAP(pInterface);
     114    PDRVTAP    pThis = PDMINETWORKCONNECTOR_2_DRVTAP(pInterface);
    115115
    116116    Log2(("drvTAPW32Send%d: pvBuf=%p cb=%#x\n"
    117           "%.*Vhxd\n", pData->pDrvIns->iInstance, pvBuf, cb, cb, pvBuf));
     117          "%.*Vhxd\n", pThis->pDrvIns->iInstance, pvBuf, cb, cb, pvBuf));
    118118
    119119#ifdef DEBUG
    120     pData->dwLastReadTime = timeGetTime();
    121     Log(("drvTAPW32Send %d bytes at %08x - delta %x\n", cb, pData->dwLastReadTime, pData->dwLastReadTime - pData->dwLastWriteTime));
     120    pThis->dwLastReadTime = timeGetTime();
     121    Log(("drvTAPW32Send %d bytes at %08x - delta %x\n", cb, pThis->dwLastReadTime, pThis->dwLastReadTime - pThis->dwLastWriteTime));
    122122#endif
    123123
    124     STAM_COUNTER_INC(&pData->StatPktSent);
    125     STAM_COUNTER_ADD(&pData->StatPktSentBytes, cb);
    126     STAM_PROFILE_ADV_START(&pData->StatTransmit, a);
     124    STAM_COUNTER_INC(&pThis->StatPktSent);
     125    STAM_COUNTER_ADD(&pThis->StatPktSentBytes, cb);
     126    STAM_PROFILE_ADV_START(&pThis->StatTransmit, a);
    127127
    128128    memset(&overlapped, 0, sizeof(overlapped));
    129     overlapped.hEvent = pData->hEventWrite;
     129    overlapped.hEvent = pThis->hEventWrite;
    130130
    131131    rc = VINF_SUCCESS;
    132     if (WriteFile(pData->hFile, pvBuf, cb, &cbBytesWritten, &overlapped) == FALSE)
     132    if (WriteFile(pThis->hFile, pvBuf, cb, &cbBytesWritten, &overlapped) == FALSE)
    133133    {
    134134        if (GetLastError() == ERROR_IO_PENDING)
     
    145145        }
    146146    }
    147     STAM_PROFILE_ADV_STOP(&pData->StatTransmit, a);
     147    STAM_PROFILE_ADV_STOP(&pThis->StatTransmit, a);
    148148    AssertRC(rc);
    149149    return rc;
     
    187187static DECLCALLBACK(int) drvTAPW32AsyncIoThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    188188{
    189     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     189    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    190190    HANDLE  haWait[2];
    191191    DWORD   rc = ERROR_SUCCESS, dwNumberOfBytesTransferred;
     
    194194        return VINF_SUCCESS;
    195195
    196     Assert(pData);
    197     haWait[0] = pData->hEventRead;
    198     haWait[1] = pData->hHaltAsyncEventSem;
     196    Assert(pThis);
     197    haWait[0] = pThis->hEventRead;
     198    haWait[1] = pThis->hHaltAsyncEventSem;
    199199
    200200    while(1)
     
    202202        BOOL  bRet;
    203203
    204         memset(&pData->overlappedRead, 0, sizeof(pData->overlappedRead));
    205         pData->overlappedRead.hEvent = pData->hEventRead;
    206         bRet = ReadFile(pData->hFile, pData->readBuffer, sizeof(pData->readBuffer),
    207                         &dwNumberOfBytesTransferred, &pData->overlappedRead);
     204        memset(&pThis->overlappedRead, 0, sizeof(pThis->overlappedRead));
     205        pThis->overlappedRead.hEvent = pThis->hEventRead;
     206        bRet = ReadFile(pThis->hFile, pThis->readBuffer, sizeof(pThis->readBuffer),
     207                        &dwNumberOfBytesTransferred, &pThis->overlappedRead);
    208208        if (bRet == FALSE)
    209209        {
     
    219219                break;  /* asked to quit or fatal error. */
    220220
    221             rc = GetOverlappedResult(pData->hFile, &pData->overlappedRead, &dwNumberOfBytesTransferred, FALSE);
     221            rc = GetOverlappedResult(pThis->hFile, &pThis->overlappedRead, &dwNumberOfBytesTransferred, FALSE);
    222222            Assert(rc == TRUE);
    223223
     
    230230         * current packet and wait for the next one.
    231231         */
    232         rc = pData->pPort->pfnWaitReceiveAvail(pData->pPort, RT_INDEFINITE_WAIT);
     232        rc = pThis->pPort->pfnWaitReceiveAvail(pThis->pPort, RT_INDEFINITE_WAIT);
    233233        if (RT_FAILURE(rc))
    234234            continue;
    235235
    236         STAM_COUNTER_INC(&pData->StatPktRecv);
    237         STAM_COUNTER_ADD(&pData->StatPktRecvBytes, dwNumberOfBytesTransferred);
     236        STAM_COUNTER_INC(&pThis->StatPktRecv);
     237        STAM_COUNTER_ADD(&pThis->StatPktRecvBytes, dwNumberOfBytesTransferred);
    238238#ifdef DEBUG
    239         pData->dwLastWriteTime = timeGetTime();
     239        pThis->dwLastWriteTime = timeGetTime();
    240240        Log(("drvTAPW32AsyncIo %d bytes at %08x - delta %x\n", dwNumberOfBytesTransferred,
    241              pData->dwLastWriteTime, pData->dwLastWriteTime - pData->dwLastReadTime));
     241             pThis->dwLastWriteTime, pThis->dwLastWriteTime - pThis->dwLastReadTime));
    242242#endif
    243         rc = pData->pPort->pfnReceive(pData->pPort, pData->readBuffer, dwNumberOfBytesTransferred);
     243        rc = pThis->pPort->pfnReceive(pThis->pPort, pThis->readBuffer, dwNumberOfBytesTransferred);
    244244        AssertRC(rc);
    245245    }
    246246
    247     SetEvent(pData->hHaltAsyncEventSem);
     247    SetEvent(pThis->hHaltAsyncEventSem);
    248248    Log(("drvTAPW32AsyncIo: exit thread!!\n"));
    249249    return VINF_SUCCESS;
     
    260260static DECLCALLBACK(int) drvTAPW32AsyncIoWakeup(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    261261{
    262     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     262    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    263263
    264264    /** @todo this isn't a safe method to notify the async thread; it might be using the instance
     
    266266     *        without risks either.
    267267     */
    268     SetEvent(pData->hHaltAsyncEventSem);
     268    SetEvent(pThis->hHaltAsyncEventSem);
    269269
    270270    /* Yield or else our async thread will never acquire the event semaphore */
    271271    RTThreadSleep(16);
    272272    /* Wait for the async thread to quit; up to half a second */
    273     WaitForSingleObject(pData->hHaltAsyncEventSem, 500);
     273    WaitForSingleObject(pThis->hHaltAsyncEventSem, 500);
    274274
    275275    return VINF_SUCCESS;
     
    288288{
    289289    PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    290     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     290    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    291291    switch (enmInterface)
    292292    {
     
    294294            return &pDrvIns->IBase;
    295295        case PDMINTERFACE_NETWORK_CONNECTOR:
    296             return &pData->INetworkConnector;
     296            return &pThis->INetworkConnector;
    297297        default:
    298298            return NULL;
     
    311311static DECLCALLBACK(void) drvTAPW32Destruct(PPDMDRVINS pDrvIns)
    312312{
    313     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     313    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    314314    TAP_MEDIASTATUS mediastatus;
    315315    DWORD dwLength;
     
    318318
    319319    mediastatus.fConnect = FALSE;
    320     BOOL ret = DeviceIoControl(pData->hFile, TAP_IOCTL_SET_MEDIA_STATUS,
     320    BOOL ret = DeviceIoControl(pThis->hFile, TAP_IOCTL_SET_MEDIA_STATUS,
    321321                               &mediastatus, sizeof(mediastatus), NULL, 0, &dwLength, NULL);
    322322    Assert(ret);
    323323
    324     CloseHandle(pData->hEventWrite);
    325     CancelIo(pData->hFile);
    326     CloseHandle(pData->hFile);
     324    CloseHandle(pThis->hEventWrite);
     325    CancelIo(pThis->hFile);
     326    CloseHandle(pThis->hFile);
    327327}
    328328
     
    340340static DECLCALLBACK(int) drvTAPW32Construct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    341341{
    342     PDRVTAP pData = PDMINS_2_DATA(pDrvIns, PDRVTAP);
     342    PDRVTAP pThis = PDMINS_2_DATA(pDrvIns, PDRVTAP);
    343343
    344344    /*
    345345     * Init the static parts.
    346346     */
    347     pData->pDrvIns                      = pDrvIns;
    348     pData->hFile                        = INVALID_HANDLE_VALUE;
     347    pThis->pDrvIns                      = pDrvIns;
     348    pThis->hFile                        = INVALID_HANDLE_VALUE;
    349349    /* IBase */
    350350    pDrvIns->IBase.pfnQueryInterface    = drvTAPW32QueryInterface;
    351351    /* INetwork */
    352     pData->INetworkConnector.pfnSend                = drvTAPW32Send;
    353     pData->INetworkConnector.pfnSetPromiscuousMode  = drvTAPW32SetPromiscuousMode;
    354     pData->INetworkConnector.pfnNotifyLinkChanged   = drvTAPW32NotifyLinkChanged;
     352    pThis->INetworkConnector.pfnSend                = drvTAPW32Send;
     353    pThis->INetworkConnector.pfnSetPromiscuousMode  = drvTAPW32SetPromiscuousMode;
     354    pThis->INetworkConnector.pfnNotifyLinkChanged   = drvTAPW32NotifyLinkChanged;
    355355
    356356    /*
     
    371371     * Query the network port interface.
    372372     */
    373     pData->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
    374     if (!pData->pPort)
     373    pThis->pPort = (PPDMINETWORKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_NETWORK_PORT);
     374    if (!pThis->pPort)
    375375        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE,
    376376                                N_("Configuration error: the above device/driver didn't export the network port interface"));
     
    397397    RTStrPrintfEx(NULL, NULL, szFullDriverName, sizeof(szFullDriverName), "\\\\.\\Global\\%s.tap", szDriverGUID);
    398398
    399     pData->hFile = CreateFile(szFullDriverName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
     399    pThis->hFile = CreateFile(szFullDriverName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING,
    400400                              FILE_ATTRIBUTE_SYSTEM | FILE_FLAG_OVERLAPPED, 0);
    401401
    402     if (pData->hFile == INVALID_HANDLE_VALUE)
     402    if (pThis->hFile == INVALID_HANDLE_VALUE)
    403403    {
    404404        rc = GetLastError();
     
    412412    }
    413413
    414     BOOL ret = DeviceIoControl(pData->hFile, TAP_IOCTL_GET_VERSION, &pData->tapVersion, sizeof (pData->tapVersion),
    415                                &pData->tapVersion, sizeof(pData->tapVersion), &length, NULL);
     414    BOOL ret = DeviceIoControl(pThis->hFile, TAP_IOCTL_GET_VERSION, &pThis->tapVersion, sizeof (pThis->tapVersion),
     415                               &pThis->tapVersion, sizeof(pThis->tapVersion), &length, NULL);
    416416    if (ret == FALSE)
    417417    {
    418         CloseHandle(pData->hFile);
     418        CloseHandle(pThis->hFile);
    419419        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_HIF_INVALID_VERSION,
    420420                                N_("Failed to get the Host Interface Networking device driver version"));;
    421421    }
    422     LogRel(("TAP version %d.%d\n", pData->tapVersion.major, pData->tapVersion.minor));
     422    LogRel(("TAP version %d.%d\n", pThis->tapVersion.major, pThis->tapVersion.minor));
    423423
    424424    /* Must be at least version 8.1 */
    425     if (    pData->tapVersion.major != 8
    426         ||  pData->tapVersion.minor < 1)
    427     {
    428         CloseHandle(pData->hFile);
     425    if (    pThis->tapVersion.major != 8
     426        ||  pThis->tapVersion.minor < 1)
     427    {
     428        CloseHandle(pThis->hFile);
    429429        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_HIF_INVALID_VERSION,
    430430                                N_("Invalid Host Interface Networking device driver version"));;
     
    432432
    433433    mediastatus.fConnect = TRUE;
    434     ret = DeviceIoControl(pData->hFile, TAP_IOCTL_SET_MEDIA_STATUS, &mediastatus, sizeof(mediastatus), NULL, 0, &length, NULL);
     434    ret = DeviceIoControl(pThis->hFile, TAP_IOCTL_SET_MEDIA_STATUS, &mediastatus, sizeof(mediastatus), NULL, 0, &length, NULL);
    435435    if (ret == FALSE)
    436436    {
    437         CloseHandle(pData->hFile);
     437        CloseHandle(pThis->hFile);
    438438        return VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES;
    439439    }
     
    442442        MMR3HeapFree(pszHostDriver);
    443443
    444     pData->hEventWrite = CreateEvent(NULL, FALSE, FALSE, NULL);
    445     pData->hEventRead  = CreateEvent(NULL, FALSE, FALSE, NULL);
    446     memset(&pData->overlappedRead, 0, sizeof(pData->overlappedRead));
    447 
    448     pData->hHaltAsyncEventSem = CreateEvent(NULL, FALSE, FALSE, NULL);
    449     Assert(pData->hHaltAsyncEventSem != NULL);
     444    pThis->hEventWrite = CreateEvent(NULL, FALSE, FALSE, NULL);
     445    pThis->hEventRead  = CreateEvent(NULL, FALSE, FALSE, NULL);
     446    memset(&pThis->overlappedRead, 0, sizeof(pThis->overlappedRead));
     447
     448    pThis->hHaltAsyncEventSem = CreateEvent(NULL, FALSE, FALSE, NULL);
     449    Assert(pThis->hHaltAsyncEventSem != NULL);
    450450
    451451    /* Create asynchronous thread */
    452     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pThread, pData, drvTAPW32AsyncIoThread, drvTAPW32AsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "TAP");
     452    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pThread, pThis, drvTAPW32AsyncIoThread, drvTAPW32AsyncIoWakeup, 128 * _1K, RTTHREADTYPE_IO, "TAP");
    453453    AssertRCReturn(rc, rc);
    454454
     
    457457     * Statistics.
    458458     */
    459     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktSent,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of sent packets.",         "/Drivers/TAP%d/Packets/Sent", pDrvIns->iInstance);
    460     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktSentBytes, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Number of sent bytes.",           "/Drivers/TAP%d/Bytes/Sent", pDrvIns->iInstance);
    461     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktRecv,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of received packets.",     "/Drivers/TAP%d/Packets/Received", pDrvIns->iInstance);
    462     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatPktRecvBytes, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Number of received bytes.",       "/Drivers/TAP%d/Bytes/Received", pDrvIns->iInstance);
    463     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatTransmit,     STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling packet transmit runs.", "/Drivers/TAP%d/Transmit", pDrvIns->iInstance);
    464     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatReceive,      STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling packet receive runs.",  "/Drivers/TAP%d/Receive", pDrvIns->iInstance);
    465     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatRecvOverflows,STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Profiling packet receive overflows.", "/Drivers/TAP%d/RecvOverflows", pDrvIns->iInstance);
     459    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktSent,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of sent packets.",         "/Drivers/TAP%d/Packets/Sent", pDrvIns->iInstance);
     460    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktSentBytes, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Number of sent bytes.",           "/Drivers/TAP%d/Bytes/Sent", pDrvIns->iInstance);
     461    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktRecv,      STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,     "Number of received packets.",     "/Drivers/TAP%d/Packets/Received", pDrvIns->iInstance);
     462    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatPktRecvBytes, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_BYTES,          "Number of received bytes.",       "/Drivers/TAP%d/Bytes/Received", pDrvIns->iInstance);
     463    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatTransmit,     STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling packet transmit runs.", "/Drivers/TAP%d/Transmit", pDrvIns->iInstance);
     464    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatReceive,      STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling packet receive runs.",  "/Drivers/TAP%d/Receive", pDrvIns->iInstance);
     465    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatRecvOverflows,STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_OCCURENCE, "Profiling packet receive overflows.", "/Drivers/TAP%d/RecvOverflows", pDrvIns->iInstance);
    466466#endif
    467467
  • trunk/src/VBox/Devices/PC/DevACPI.cpp

    r11208 r11269  
    14661466static DECLCALLBACK(void *) acpiQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    14671467{
    1468     ACPIState *pData = (ACPIState*)((uintptr_t)pInterface - RT_OFFSETOF(ACPIState, IBase));
     1468    ACPIState *pThis = (ACPIState*)((uintptr_t)pInterface - RT_OFFSETOF(ACPIState, IBase));
    14691469    switch (enmInterface)
    14701470    {
    14711471        case PDMINTERFACE_BASE:
    1472             return &pData->IBase;
     1472            return &pThis->IBase;
    14731473        case PDMINTERFACE_ACPI_PORT:
    1474             return &pData->IACPIPort;
     1474            return &pThis->IACPIPort;
    14751475        default:
    14761476            return NULL;
  • trunk/src/VBox/Devices/PC/DevAPIC.cpp

    r11223 r11269  
    16561656static DECLCALLBACK(void) apicRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    16571657{
    1658     APICState *pData = PDMINS_2_DATA(pDevIns, APICState *);
    1659     pData->pDevInsRC  = PDMDEVINS_2_RCPTR(pDevIns);
    1660     pData->pApicHlpRC = pData->pApicHlpR3->pfnGetRCHelpers(pDevIns);
    1661     pData->pTimerRC   = TMTimerRCPtr(pData->CTX_SUFF(pTimer));
     1658    APICState *pThis = PDMINS_2_DATA(pDevIns, APICState *);
     1659    pThis->pDevInsRC  = PDMDEVINS_2_RCPTR(pDevIns);
     1660    pThis->pApicHlpRC = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns);
     1661    pThis->pTimerRC   = TMTimerRCPtr(pThis->CTX_SUFF(pTimer));
    16621662}
    16631663
     
    16671667static DECLCALLBACK(int) apicConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    16681668{
    1669     APICState      *pData = PDMINS_2_DATA(pDevIns, APICState *);
     1669    APICState      *pThis = PDMINS_2_DATA(pDevIns, APICState *);
    16701670    PDMAPICREG      ApicReg;
    16711671    int             rc;
     
    17011701     * Init the data.
    17021702     */
    1703     pData->pDevInsR3 = pDevIns;
    1704     pData->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    1705     pData->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    1706     pData->apicbase  = UINT32_C(0xfee00000) | MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE;
     1703    pThis->pDevInsR3 = pDevIns;
     1704    pThis->pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
     1705    pThis->pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     1706    pThis->apicbase  = UINT32_C(0xfee00000) | MSR_IA32_APICBASE_BSP | MSR_IA32_APICBASE_ENABLE;
    17071707    for (i = 0; i < APIC_LVT_NB; i++)
    1708         pData->lvt[i] = 1 << 16; /* mask LVT */
    1709     pData->spurious_vec = 0xff;
     1708        pThis->lvt[i] = 1 << 16; /* mask LVT */
     1709    pThis->spurious_vec = 0xff;
    17101710
    17111711    /*
     
    17561756
    17571757    Assert(pDevIns->pDevHlp->pfnAPICRegister);
    1758     rc = pDevIns->pDevHlp->pfnAPICRegister(pDevIns, &ApicReg, &pData->pApicHlpR3);
     1758    rc = pDevIns->pDevHlp->pfnAPICRegister(pDevIns, &ApicReg, &pThis->pApicHlpR3);
    17591759    if (RT_FAILURE(rc))
    17601760    {
     
    17791779        {
    17801780            LogRel(("Activating Local APIC\n"));
    1781             pData->pApicHlpR3->pfnChangeFeature(pDevIns, true);
     1781            pThis->pApicHlpR3->pfnChangeFeature(pDevIns, true);
    17821782        }
    17831783    }
     
    17861786     * Register the MMIO range.
    17871787     */
    1788     rc = PDMDevHlpMMIORegister(pDevIns, pData->apicbase & ~0xfff, 0x1000, pData,
     1788    rc = PDMDevHlpMMIORegister(pDevIns, pThis->apicbase & ~0xfff, 0x1000, pThis,
    17891789                               apicMMIOWrite, apicMMIORead, NULL, "APIC Memory");
    17901790    if (RT_FAILURE(rc))
     
    17921792
    17931793    if (fGCEnabled) {
    1794         pData->pApicHlpRC = pData->pApicHlpR3->pfnGetRCHelpers(pDevIns);
    1795 
    1796         rc = PDMDevHlpMMIORegisterGC(pDevIns, pData->apicbase & ~0xfff, 0x1000, 0,
     1794        pThis->pApicHlpRC = pThis->pApicHlpR3->pfnGetRCHelpers(pDevIns);
     1795
     1796        rc = PDMDevHlpMMIORegisterGC(pDevIns, pThis->apicbase & ~0xfff, 0x1000, 0,
    17971797                                     "apicMMIOWrite", "apicMMIORead", NULL);
    17981798        if (RT_FAILURE(rc))
     
    18011801
    18021802    if (fR0Enabled) {
    1803         pData->pApicHlpR0 = pData->pApicHlpR3->pfnGetR0Helpers(pDevIns);
    1804 
    1805         rc = PDMDevHlpMMIORegisterR0(pDevIns, pData->apicbase & ~0xfff, 0x1000, 0,
     1803        pThis->pApicHlpR0 = pThis->pApicHlpR3->pfnGetR0Helpers(pDevIns);
     1804
     1805        rc = PDMDevHlpMMIORegisterR0(pDevIns, pThis->apicbase & ~0xfff, 0x1000, 0,
    18061806                                     "apicMMIOWrite", "apicMMIORead", NULL);
    18071807        if (RT_FAILURE(rc))
     
    18131813     */
    18141814    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, apicTimer,
    1815                                 "APIC Timer", &pData->CTX_SUFF(pTimer));
     1815                                "APIC Timer", &pThis->CTX_SUFF(pTimer));
    18161816    if (RT_FAILURE(rc))
    18171817        return rc;
    1818     pData->pTimerR0 = TMTimerR0Ptr(pData->CTX_SUFF(pTimer));
    1819     pData->pTimerRC = TMTimerRCPtr(pData->CTX_SUFF(pTimer));
     1818    pThis->pTimerR0 = TMTimerR0Ptr(pThis->CTX_SUFF(pTimer));
     1819    pThis->pTimerRC = TMTimerRCPtr(pThis->CTX_SUFF(pTimer));
    18201820
    18211821    /*
     
    18231823     */
    18241824    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */,
    1825                               sizeof(*pData), NULL, apicSaveExec, NULL, NULL, apicLoadExec, NULL);
     1825                              sizeof(*pThis), NULL, apicSaveExec, NULL, NULL, apicLoadExec, NULL);
    18261826    if (RT_FAILURE(rc))
    18271827        return rc;
     
    18311831     * Statistics.
    18321832     */
    1833     PDMDevHlpSTAMRegister(pDevIns, &pData->StatMMIOReadGC,     STAMTYPE_COUNTER,  "/PDM/APIC/MMIOReadGC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC.");
    1834     PDMDevHlpSTAMRegister(pDevIns, &pData->StatMMIOReadHC,     STAMTYPE_COUNTER,  "/PDM/APIC/MMIOReadHC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC.");
    1835     PDMDevHlpSTAMRegister(pDevIns, &pData->StatMMIOWriteGC,    STAMTYPE_COUNTER,  "/PDM/APIC/MMIOWriteGC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC.");
    1836     PDMDevHlpSTAMRegister(pDevIns, &pData->StatMMIOWriteHC,    STAMTYPE_COUNTER,  "/PDM/APIC/MMIOWriteHC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC.");
    1837     PDMDevHlpSTAMRegister(pDevIns, &pData->StatClearedActiveIrq, STAMTYPE_COUNTER,  "/PDM/APIC/Masked/ActiveIRQ",  STAMUNIT_OCCURENCES, "Number of cleared irqs.");
     1833    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadGC,     STAMTYPE_COUNTER,  "/PDM/APIC/MMIOReadGC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in GC.");
     1834    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOReadHC,     STAMTYPE_COUNTER,  "/PDM/APIC/MMIOReadHC",   STAMUNIT_OCCURENCES, "Number of APIC MMIO reads in HC.");
     1835    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteGC,    STAMTYPE_COUNTER,  "/PDM/APIC/MMIOWriteGC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in GC.");
     1836    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatMMIOWriteHC,    STAMTYPE_COUNTER,  "/PDM/APIC/MMIOWriteHC",  STAMUNIT_OCCURENCES, "Number of APIC MMIO writes in HC.");
     1837    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatClearedActiveIrq, STAMTYPE_COUNTER,  "/PDM/APIC/Masked/ActiveIRQ",  STAMUNIT_OCCURENCES, "Number of cleared irqs.");
    18381838#endif
    18391839
  • trunk/src/VBox/Devices/PC/DevPit-i8254.cpp

    r11252 r11269  
    638638    if (cb == 1)
    639639    {
    640         PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
    641         const uint64_t u64Now = TMTimerGet(pData->channels[0].CTX_SUFF(pTimer));
    642         Assert(TMTimerGetFreq(pData->channels[0].CTX_SUFF(pTimer)) == 1000000000); /* lazy bird. */
     640        PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
     641        const uint64_t u64Now = TMTimerGet(pThis->channels[0].CTX_SUFF(pTimer));
     642        Assert(TMTimerGetFreq(pThis->channels[0].CTX_SUFF(pTimer)) == 1000000000); /* lazy bird. */
    643643
    644644        /* bit 6,7 Parity error stuff. */
    645645        /* bit 5 - mirrors timer 2 output condition. */
    646         const int fOut = pit_get_out(pData, 2, u64Now);
     646        const int fOut = pit_get_out(pThis, 2, u64Now);
    647647        /* bit 4 - toggled every with each (DRAM?) refresh request, every 15.085 µs. */
    648648#ifdef FAKE_REFRESH_CLOCK
    649         pData->dummy_refresh_clock ^= 1;
    650         const int fRefresh = pData->dummy_refresh_clock;
     649        pThis->dummy_refresh_clock ^= 1;
     650        const int fRefresh = pThis->dummy_refresh_clock;
    651651#else
    652652        const int fRefresh = (u64Now / 15085) & 1;
     
    654654        /* bit 2,3 NMI / parity status stuff. */
    655655        /* bit 1 - speaker data status */
    656         const int fSpeakerStatus = pData->speaker_data_on;
     656        const int fSpeakerStatus = pThis->speaker_data_on;
    657657        /* bit 0 - timer 2 clock gate to speaker status. */
    658         const int fTimer2GateStatus = pit_get_gate(pData, 2);
     658        const int fTimer2GateStatus = pit_get_gate(pThis, 2);
    659659
    660660        *pu32 = fTimer2GateStatus
     
    687687    if (cb == 1)
    688688    {
    689         PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
    690         pData->speaker_data_on = (u32 >> 1) & 1;
    691         pit_set_gate(pData, 2, u32 & 1);
     689        PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
     690        pThis->speaker_data_on = (u32 >> 1) & 1;
     691        pit_set_gate(pThis, 2, u32 & 1);
    692692    }
    693693    Log(("pitIOPortSpeakerWrite: Port=%#x cb=%x u32=%#x\n", Port, cb, u32));
     
    705705static DECLCALLBACK(int) pitSaveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    706706{
    707     PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
     707    PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    708708    unsigned i;
    709709
    710     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    711     {
    712         PITChannelState *s = &pData->channels[i];
     710    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     711    {
     712        PITChannelState *s = &pThis->channels[i];
    713713        SSMR3PutU32(pSSMHandle, s->count);
    714714        SSMR3PutU16(pSSMHandle, s->latched_count);
     
    731731    }
    732732
    733     SSMR3PutS32(pSSMHandle, pData->speaker_data_on);
     733    SSMR3PutS32(pSSMHandle, pThis->speaker_data_on);
    734734#ifdef FAKE_REFRESH_CLOCK
    735     return SSMR3PutS32(pSSMHandle, pData->dummy_refresh_clock);
     735    return SSMR3PutS32(pSSMHandle, pThis->dummy_refresh_clock);
    736736#else
    737737    return SSMR3PutS32(pSSMHandle, 0);
     
    750750static DECLCALLBACK(int) pitLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle, uint32_t u32Version)
    751751{
    752     PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
     752    PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    753753    unsigned i;
    754754
     
    756756        return VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION;
    757757
    758     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    759     {
    760         PITChannelState *s = &pData->channels[i];
     758    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     759    {
     760        PITChannelState *s = &pThis->channels[i];
    761761        SSMR3GetU32(pSSMHandle, &s->count);
    762762        SSMR3GetU16(pSSMHandle, &s->latched_count);
     
    781781                    s->mode, s->count, s->count, PIT_FREQ / s->count, (PIT_FREQ * 100 / s->count) % 100, i));
    782782        }
    783         pData->channels[0].cRelLogEntries = 0;
    784     }
    785 
    786     SSMR3GetS32(pSSMHandle, &pData->speaker_data_on);
     783        pThis->channels[0].cRelLogEntries = 0;
     784    }
     785
     786    SSMR3GetS32(pSSMHandle, &pThis->speaker_data_on);
    787787#ifdef FAKE_REFRESH_CLOCK
    788     return SSMR3GetS32(pSSMHandle, &pData->dummy_refresh_clock);
     788    return SSMR3GetS32(pSSMHandle, &pThis->dummy_refresh_clock);
    789789#else
    790790    int32_t u32Dummy;
     
    802802static DECLCALLBACK(void) pitTimer(PPDMDEVINS pDevIns, PTMTIMER pTimer)
    803803{
    804     PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
    805     PITChannelState *s = &pData->channels[0];
     804    PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
     805    PITChannelState *s = &pThis->channels[0];
    806806    STAM_PROFILE_ADV_START(&s->CTX_SUFF(pPit)->StatPITHandler, a);
    807807    pit_irq_timer_update(s, s->next_transition_time);
     
    819819static DECLCALLBACK(void) pitRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    820820{
    821     PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
     821    PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    822822    unsigned i;
    823823    LogFlow(("pitRelocate: \n"));
    824824
    825     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    826     {
    827         PITChannelState *pCh = &pData->channels[i];
     825    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     826    {
     827        PITChannelState *pCh = &pThis->channels[i];
    828828        if (pCh->pTimerR3)
    829829            pCh->pTimerRC = TMTimerRCPtr(pCh->pTimerR3);
    830         pData->channels[i].pPitRC = PDMINS_2_DATA_RCPTR(pDevIns);
     830        pThis->channels[i].pPitRC = PDMINS_2_DATA_RCPTR(pDevIns);
    831831    }
    832832}
     
    843843static DECLCALLBACK(void) pitReset(PPDMDEVINS pDevIns)
    844844{
    845     PITState *pData = PDMINS_2_DATA(pDevIns, PITState *);
     845    PITState *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    846846    unsigned i;
    847847    LogFlow(("pitReset: \n"));
    848848
    849     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    850     {
    851         PITChannelState *s = &pData->channels[i];
     849    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     850    {
     851        PITChannelState *s = &pThis->channels[i];
    852852
    853853#if 1 /* Set everything back to virgin state. (might not be strictly correct) */
     
    879879static DECLCALLBACK(void) pitInfo(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    880880{
    881     PITState   *pData = PDMINS_2_DATA(pDevIns, PITState *);
     881    PITState   *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    882882    unsigned    i;
    883     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    884     {
    885         const PITChannelState *pCh = &pData->channels[i];
     883    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     884    {
     885        const PITChannelState *pCh = &pThis->channels[i];
    886886
    887887        pHlp->pfnPrintf(pHlp,
     
    904904#ifdef FAKE_REFRESH_CLOCK
    905905    pHlp->pfnPrintf(pHlp, "speaker_data_on=%#x dummy_refresh_clock=%#x\n",
    906                     pData->speaker_data_on, pData->dummy_refresh_clock);
     906                    pThis->speaker_data_on, pThis->dummy_refresh_clock);
    907907#else
    908     pHlp->pfnPrintf(pHlp, "speaker_data_on=%#x\n", pData->speaker_data_on);
     908    pHlp->pfnPrintf(pHlp, "speaker_data_on=%#x\n", pThis->speaker_data_on);
    909909#endif
    910910}
     
    926926static DECLCALLBACK(int)  pitConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    927927{
    928     PITState   *pData = PDMINS_2_DATA(pDevIns, PITState *);
     928    PITState   *pThis = PDMINS_2_DATA(pDevIns, PITState *);
    929929    int         rc;
    930930    uint8_t     u8Irq;
     
    970970                                N_("Configuration error: failed to read R0Enabled as boolean"));
    971971
    972     pData->pDevIns = pDevIns;
    973     pData->channels[0].irq = u8Irq;
    974     for (i = 0; i < RT_ELEMENTS(pData->channels); i++)
    975     {
    976         pData->channels[i].pPitR3 = pData;
    977         pData->channels[i].pPitR0 = PDMINS_2_DATA_R0PTR(pDevIns);
    978         pData->channels[i].pPitRC = PDMINS_2_DATA_RCPTR(pDevIns);
     972    pThis->pDevIns = pDevIns;
     973    pThis->channels[0].irq = u8Irq;
     974    for (i = 0; i < RT_ELEMENTS(pThis->channels); i++)
     975    {
     976        pThis->channels[i].pPitR3 = pThis;
     977        pThis->channels[i].pPitR0 = PDMINS_2_DATA_R0PTR(pDevIns);
     978        pThis->channels[i].pPitRC = PDMINS_2_DATA_RCPTR(pDevIns);
    979979    }
    980980
     
    983983     */
    984984    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, pitTimer, "i8254 Programmable Interval Timer",
    985                                 &pData->channels[0].pTimerR3);
     985                                &pThis->channels[0].pTimerR3);
    986986    if (RT_FAILURE(rc))
    987987        return rc;
    988     pData->channels[0].pTimerRC = TMTimerRCPtr(pData->channels[0].pTimerR3);
    989     pData->channels[0].pTimerR0 = TMTimerR0Ptr(pData->channels[0].pTimerR3);
     988    pThis->channels[0].pTimerRC = TMTimerRCPtr(pThis->channels[0].pTimerR3);
     989    pThis->channels[0].pTimerR0 = TMTimerR0Ptr(pThis->channels[0].pTimerR3);
    990990
    991991    rc = PDMDevHlpIOPortRegister(pDevIns, u16Base, 4, NULL, pitIOPortWrite, pitIOPortRead, NULL, NULL, "i8254 Programmable Interval Timer");
     
    10181018    }
    10191019
    1020     rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, PIT_SAVED_STATE_VERSION, sizeof(*pData),
     1020    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, PIT_SAVED_STATE_VERSION, sizeof(*pThis),
    10211021                                          NULL, pitSaveExec, NULL,
    10221022                                          NULL, pitLoadExec, NULL);
     
    10321032     * Register statistics and debug info.
    10331033     */
    1034     PDMDevHlpSTAMRegister(pDevIns, &pData->StatPITIrq,      STAMTYPE_COUNTER, "/TM/PIT/Irq",      STAMUNIT_OCCURENCES,     "The number of times a timer interrupt was triggered.");
    1035     PDMDevHlpSTAMRegister(pDevIns, &pData->StatPITHandler,  STAMTYPE_PROFILE, "/TM/PIT/Handler",  STAMUNIT_TICKS_PER_CALL, "Profiling timer callback handler.");
     1034    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatPITIrq,      STAMTYPE_COUNTER, "/TM/PIT/Irq",      STAMUNIT_OCCURENCES,     "The number of times a timer interrupt was triggered.");
     1035    PDMDevHlpSTAMRegister(pDevIns, &pThis->StatPITHandler,  STAMTYPE_PROFILE, "/TM/PIT/Handler",  STAMUNIT_TICKS_PER_CALL, "Profiling timer callback handler.");
    10361036
    10371037    PDMDevHlpDBGFInfoRegister(pDevIns, "pit", "Display PIT (i8254) status. (no arguments)", pitInfo);
  • trunk/src/VBox/Devices/PC/DevRTC.cpp

    r11245 r11269  
    673673 * Calculate and update the standard CMOS checksum.
    674674 *
    675  * @param   pData       Pointer to the RTC state data.
    676  */
    677 static void rtcCalcCRC(RTCState *pData)
     675 * @param   pThis       Pointer to the RTC state data.
     676 */
     677static void rtcCalcCRC(RTCState *pThis)
    678678{
    679679    uint16_t u16;
     
    681681
    682682    for (i = RTC_CRC_START, u16 = 0; i <= RTC_CRC_LAST; i++)
    683         u16 += pData->cmos_data[i];
    684     pData->cmos_data[RTC_CRC_LOW] = u16 & 0xff;
    685     pData->cmos_data[RTC_CRC_HIGH] = (u16 >> 8) & 0xff;
     683        u16 += pThis->cmos_data[i];
     684    pThis->cmos_data[RTC_CRC_LOW] = u16 & 0xff;
     685    pThis->cmos_data[RTC_CRC_HIGH] = (u16 >> 8) & 0xff;
    686686}
    687687
     
    697697static DECLCALLBACK(int) rtcCMOSWrite(PPDMDEVINS pDevIns, unsigned iReg, uint8_t u8Value)
    698698{
    699     RTCState *pData = PDMINS_2_DATA(pDevIns, RTCState *);
    700     if (iReg < RT_ELEMENTS(pData->cmos_data))
     699    RTCState *pThis = PDMINS_2_DATA(pDevIns, RTCState *);
     700    if (iReg < RT_ELEMENTS(pThis->cmos_data))
    701701    {
    702         pData->cmos_data[iReg] = u8Value;
     702        pThis->cmos_data[iReg] = u8Value;
    703703
    704704        /* does it require checksum update? */
    705705        if (    iReg >= RTC_CRC_START
    706706            &&  iReg <= RTC_CRC_LAST)
    707             rtcCalcCRC(pData);
     707            rtcCalcCRC(pThis);
    708708
    709709        return VINF_SUCCESS;
     
    724724static DECLCALLBACK(int) rtcCMOSRead(PPDMDEVINS pDevIns, unsigned iReg, uint8_t *pu8Value)
    725725{
    726     RTCState   *pData = PDMINS_2_DATA(pDevIns, RTCState *);
    727     if (iReg < RT_ELEMENTS(pData->cmos_data))
     726    RTCState   *pThis = PDMINS_2_DATA(pDevIns, RTCState *);
     727    if (iReg < RT_ELEMENTS(pThis->cmos_data))
    728728    {
    729         *pu8Value = pData->cmos_data[iReg];
     729        *pu8Value = pThis->cmos_data[iReg];
    730730        return VINF_SUCCESS;
    731731    }
     
    741741{
    742742    /** @todo this should be (re)done at power on if we didn't load a state... */
    743     RTCState   *pData = PDMINS_2_DATA(pDevIns, RTCState *);
     743    RTCState   *pThis = PDMINS_2_DATA(pDevIns, RTCState *);
    744744
    745745    /*
     
    749749    PDMDevHlpUTCNow(pDevIns, &Now);
    750750    RTTIME Time;
    751     if (pData->fUTC)
     751    if (pThis->fUTC)
    752752        RTTimeExplode(&Time, &Now);
    753753    else
     
    765765    Tm.tm_sec  = Time.u8Second;
    766766
    767     rtc_set_date(pData, &Tm);
    768 
    769     int iYear = to_bcd(pData, (Tm.tm_year / 100) + 19); /* tm_year is 1900 based */
    770     rtc_set_memory(pData, 0x32, iYear);                                     /* 32h - Century Byte (BCD value for the century */
    771     rtc_set_memory(pData, 0x37, iYear);                                     /* 37h - (IBM PS/2) Date Century Byte */
     767    rtc_set_date(pThis, &Tm);
     768
     769    int iYear = to_bcd(pThis, (Tm.tm_year / 100) + 19); /* tm_year is 1900 based */
     770    rtc_set_memory(pThis, 0x32, iYear);                                     /* 32h - Century Byte (BCD value for the century */
     771    rtc_set_memory(pThis, 0x37, iYear);                                     /* 37h - (IBM PS/2) Date Century Byte */
    772772
    773773    /*
    774774     * Recalculate the checksum just in case.
    775775     */
    776     rtcCalcCRC(pData);
    777 
    778     Log(("CMOS: \n%16.128Vhxd\n", pData->cmos_data));
     776    rtcCalcCRC(pThis);
     777
     778    Log(("CMOS: \n%16.128Vhxd\n", pThis->cmos_data));
    779779    return VINF_SUCCESS;
    780780}
     
    812812static DECLCALLBACK(int)  rtcConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    813813{
    814     RTCState   *pData = PDMINS_2_DATA(pDevIns, RTCState *);
     814    RTCState   *pThis = PDMINS_2_DATA(pDevIns, RTCState *);
    815815    int         rc;
    816816    uint8_t     u8Irq;
     
    852852
    853853
    854     pData->pDevInsR3            = pDevIns;
    855     pData->pDevInsR0            = PDMDEVINS_2_R0PTR(pDevIns);
    856     pData->pDevInsRC            = PDMDEVINS_2_RCPTR(pDevIns);
    857     pData->irq                  = u8Irq;
    858     pData->cmos_data[RTC_REG_A] = 0x26;
    859     pData->cmos_data[RTC_REG_B] = 0x02;
    860     pData->cmos_data[RTC_REG_C] = 0x00;
    861     pData->cmos_data[RTC_REG_D] = 0x80;
    862     pData->RtcReg.u32Version    = PDM_RTCREG_VERSION;
    863     pData->RtcReg.pfnRead       = rtcCMOSRead;
    864     pData->RtcReg.pfnWrite      = rtcCMOSWrite;
     854    pThis->pDevInsR3            = pDevIns;
     855    pThis->pDevInsR0            = PDMDEVINS_2_R0PTR(pDevIns);
     856    pThis->pDevInsRC            = PDMDEVINS_2_RCPTR(pDevIns);
     857    pThis->irq                  = u8Irq;
     858    pThis->cmos_data[RTC_REG_A] = 0x26;
     859    pThis->cmos_data[RTC_REG_B] = 0x02;
     860    pThis->cmos_data[RTC_REG_C] = 0x00;
     861    pThis->cmos_data[RTC_REG_D] = 0x80;
     862    pThis->RtcReg.u32Version    = PDM_RTCREG_VERSION;
     863    pThis->RtcReg.pfnRead       = rtcCMOSRead;
     864    pThis->RtcReg.pfnWrite      = rtcCMOSWrite;
    865865
    866866    /*
    867867     * Create timers, arm them, register I/O Ports and save state.
    868868     */
    869     rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerPeriodic, "MC146818 RTC/CMOS - Periodic", &pData->pPeriodicTimerR3);
     869    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerPeriodic, "MC146818 RTC/CMOS - Periodic", &pThis->pPeriodicTimerR3);
    870870    if (RT_FAILURE(rc))
    871871        return rc;
    872     pData->pPeriodicTimerR0 = TMTimerR0Ptr(pData->pPeriodicTimerR3);
    873     pData->pPeriodicTimerRC = TMTimerRCPtr(pData->pPeriodicTimerR3);
    874 
    875     rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerSecond,   "MC146818 RTC/CMOS - Second", &pData->pSecondTimerR3);
     872    pThis->pPeriodicTimerR0 = TMTimerR0Ptr(pThis->pPeriodicTimerR3);
     873    pThis->pPeriodicTimerRC = TMTimerRCPtr(pThis->pPeriodicTimerR3);
     874
     875    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerSecond,   "MC146818 RTC/CMOS - Second", &pThis->pSecondTimerR3);
    876876    if (RT_FAILURE(rc))
    877877        return rc;
    878     pData->pSecondTimerR0 = TMTimerR0Ptr(pData->pSecondTimerR3);
    879     pData->pSecondTimerRC = TMTimerRCPtr(pData->pSecondTimerR3);
    880 
    881     rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerSecond2,  "MC146818 RTC/CMOS - Second2", &pData->pSecondTimer2R3);
     878    pThis->pSecondTimerR0 = TMTimerR0Ptr(pThis->pSecondTimerR3);
     879    pThis->pSecondTimerRC = TMTimerRCPtr(pThis->pSecondTimerR3);
     880
     881    rc = PDMDevHlpTMTimerCreate(pDevIns, TMCLOCK_VIRTUAL_SYNC, rtcTimerSecond2,  "MC146818 RTC/CMOS - Second2", &pThis->pSecondTimer2R3);
    882882    if (RT_FAILURE(rc))
    883883        return rc;
    884     pData->pSecondTimer2R0 = TMTimerR0Ptr(pData->pSecondTimer2R3);
    885     pData->pSecondTimer2RC = TMTimerRCPtr(pData->pSecondTimer2R3);
    886     pData->next_second_time = TMTimerGet(pData->CTX_SUFF(pSecondTimer2)) + (TMTimerGetFreq(pData->CTX_SUFF(pSecondTimer2)) * 99) / 100;
    887     rc = TMTimerSet(pData->CTX_SUFF(pSecondTimer2), pData->next_second_time);
     884    pThis->pSecondTimer2R0 = TMTimerR0Ptr(pThis->pSecondTimer2R3);
     885    pThis->pSecondTimer2RC = TMTimerRCPtr(pThis->pSecondTimer2R3);
     886    pThis->next_second_time = TMTimerGet(pThis->CTX_SUFF(pSecondTimer2)) + (TMTimerGetFreq(pThis->CTX_SUFF(pSecondTimer2)) * 99) / 100;
     887    rc = TMTimerSet(pThis->CTX_SUFF(pSecondTimer2), pThis->next_second_time);
    888888    if (RT_FAILURE(rc))
    889889        return rc;
     
    905905    }
    906906
    907     rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */, sizeof(*pData),
     907    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance, 1 /* version */, sizeof(*pThis),
    908908                              NULL, rtcSaveExec, NULL,
    909909                              NULL, rtcLoadExec, NULL);
     
    914914     * Register ourselves as the RTC/CMOS with PDM.
    915915     */
    916     rc = pDevIns->pDevHlp->pfnRTCRegister(pDevIns, &pData->RtcReg, &pData->pRtcHlpR3);
     916    rc = pDevIns->pDevHlp->pfnRTCRegister(pDevIns, &pThis->RtcReg, &pThis->pRtcHlpR3);
    917917    if (RT_FAILURE(rc))
    918918        return rc;
  • trunk/src/VBox/Devices/PC/DrvACPI.cpp

    r11267 r11269  
    7373{
    7474    PPDMDRVINS pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    75     PDRVACPI pData = PDMINS_2_DATA(pDrvIns, PDRVACPI);
     75    PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI);
    7676    switch (enmInterface)
    7777    {
     
    7979            return &pDrvIns->IBase;
    8080        case PDMINTERFACE_ACPI_CONNECTOR:
    81             return &pData->IACPIConnector;
     81            return &pThis->IACPIConnector;
    8282        default:
    8383            return NULL;
     
    442442static DECLCALLBACK(int) drvACPIConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    443443{
    444     PDRVACPI pData = PDMINS_2_DATA(pDrvIns, PDRVACPI);
     444    PDRVACPI pThis = PDMINS_2_DATA(pDrvIns, PDRVACPI);
    445445
    446446    /*
    447447     * Init the static parts.
    448448     */
    449     pData->pDrvIns                              = pDrvIns;
     449    pThis->pDrvIns                              = pDrvIns;
    450450    /* IBase */
    451451    pDrvIns->IBase.pfnQueryInterface            = drvACPIQueryInterface;
    452452    /* IACPIConnector */
    453     pData->IACPIConnector.pfnQueryPowerSource   = drvACPIQueryPowerSource;
    454     pData->IACPIConnector.pfnQueryBatteryStatus = drvACPIQueryBatteryStatus;
     453    pThis->IACPIConnector.pfnQueryPowerSource   = drvACPIQueryPowerSource;
     454    pThis->IACPIConnector.pfnQueryBatteryStatus = drvACPIQueryBatteryStatus;
    455455
    456456    /*
     
    473473     * Query the ACPI port interface.
    474474     */
    475     pData->pPort = (PPDMIACPIPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase,
     475    pThis->pPort = (PPDMIACPIPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase,
    476476                                                                      PDMINTERFACE_ACPI_PORT);
    477     if (!pData->pPort)
     477    if (!pThis->pPort)
    478478    {
    479479        AssertMsgFailed(("Configuration error: "
  • trunk/src/VBox/Devices/Parallel/DevParallel.cpp

    r11267 r11269  
    402402static DECLCALLBACK(int) parallelNotifyInterrupt(PPDMIHOSTPARALLELPORT pInterface)
    403403{
    404     ParallelState *pData = PDMIHOSTPARALLELPORT_2_PARALLELSTATE(pInterface);
    405 
    406     PDMCritSectEnter(&pData->CritSect, VINF_SUCCESS);
    407     parallel_set_irq(pData);
    408     PDMCritSectLeave(&pData->CritSect);
     404    ParallelState *pThis = PDMIHOSTPARALLELPORT_2_PARALLELSTATE(pInterface);
     405
     406    PDMCritSectEnter(&pThis->CritSect, VINF_SUCCESS);
     407    parallel_set_irq(pThis);
     408    PDMCritSectLeave(&pThis->CritSect);
    409409
    410410    return VINF_SUCCESS;
     
    426426                                       RTIOPORT Port, uint32_t u32, unsigned cb)
    427427{
    428     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
     428    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
    429429    int          rc = VINF_SUCCESS;
    430430
    431431    if (cb == 1)
    432432    {
    433         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     433        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    434434        if (rc == VINF_SUCCESS)
    435435        {
    436436            Log2(("%s: port %#06x val %#04x\n", __FUNCTION__, Port, u32));
    437             rc = parallel_ioport_write (pData, Port, u32);
    438             PDMCritSectLeave(&pData->CritSect);
     437            rc = parallel_ioport_write (pThis, Port, u32);
     438            PDMCritSectLeave(&pThis->CritSect);
    439439        }
    440440    }
     
    459459                                      RTIOPORT Port, uint32_t *pu32, unsigned cb)
    460460{
    461     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
     461    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
    462462    int          rc = VINF_SUCCESS;
    463463
    464464    if (cb == 1)
    465465    {
    466         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_READ);
     466        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_READ);
    467467        if (rc == VINF_SUCCESS)
    468468        {
    469             *pu32 = parallel_ioport_read (pData, Port, &rc);
     469            *pu32 = parallel_ioport_read (pThis, Port, &rc);
    470470            Log2(("%s: port %#06x val %#04x\n", __FUNCTION__, Port, *pu32));
    471             PDMCritSectLeave(&pData->CritSect);
     471            PDMCritSectLeave(&pThis->CritSect);
    472472        }
    473473    }
     
    493493                                          RTIOPORT Port, uint32_t u32, unsigned cb)
    494494{
    495     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
     495    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
    496496    int          rc = VINF_SUCCESS;
    497497
    498498    if (cb == 1)
    499499    {
    500         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     500        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    501501        if (rc == VINF_SUCCESS)
    502502        {
    503503            Log2(("%s: ecp port %#06x val %#04x\n", __FUNCTION__, Port, u32));
    504             rc = parallel_ioport_write_ecp (pData, Port, u32);
    505             PDMCritSectLeave(&pData->CritSect);
     504            rc = parallel_ioport_write_ecp (pThis, Port, u32);
     505            PDMCritSectLeave(&pThis->CritSect);
    506506        }
    507507    }
     
    526526                                         RTIOPORT Port, uint32_t *pu32, unsigned cb)
    527527{
    528     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
     528    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
    529529    int          rc = VINF_SUCCESS;
    530530
    531531    if (cb == 1)
    532532    {
    533         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_READ);
     533        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_READ);
    534534        if (rc == VINF_SUCCESS)
    535535        {
    536             *pu32 = parallel_ioport_read_ecp (pData, Port, &rc);
     536            *pu32 = parallel_ioport_read_ecp (pThis, Port, &rc);
    537537            Log2(("%s: ecp port %#06x val %#04x\n", __FUNCTION__, Port, *pu32));
    538             PDMCritSectLeave(&pData->CritSect);
     538            PDMCritSectLeave(&pThis->CritSect);
    539539        }
    540540    }
     
    557557                                          PSSMHANDLE pSSMHandle)
    558558{
    559     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
    560 
    561     SSMR3PutU8(pSSMHandle, pData->reg_data);
    562     SSMR3PutU8(pSSMHandle, pData->reg_status);
    563     SSMR3PutU8(pSSMHandle, pData->reg_control);
    564     SSMR3PutS32(pSSMHandle, pData->irq);
    565     SSMR3PutU32(pSSMHandle, pData->base);
     559    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
     560
     561    SSMR3PutU8(pSSMHandle, pThis->reg_data);
     562    SSMR3PutU8(pSSMHandle, pThis->reg_status);
     563    SSMR3PutU8(pSSMHandle, pThis->reg_control);
     564    SSMR3PutS32(pSSMHandle, pThis->irq);
     565    SSMR3PutU32(pSSMHandle, pThis->base);
    566566
    567567    return SSMR3PutU32(pSSMHandle, ~0); /* sanity/terminator */
     
    582582    int          rc;
    583583    uint32_t     u32;
    584     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
     584    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
    585585
    586586    if (u32Version != PARALLEL_SAVED_STATE_VERSION)
     
    590590    }
    591591
    592     SSMR3GetU8(pSSMHandle, &pData->reg_data);
    593     SSMR3GetU8(pSSMHandle, &pData->reg_status);
    594     SSMR3GetU8(pSSMHandle, &pData->reg_control);
    595     SSMR3GetS32(pSSMHandle, &pData->irq);
    596     SSMR3GetU32(pSSMHandle, &pData->base);
     592    SSMR3GetU8(pSSMHandle, &pThis->reg_data);
     593    SSMR3GetU8(pSSMHandle, &pThis->reg_status);
     594    SSMR3GetU8(pSSMHandle, &pThis->reg_control);
     595    SSMR3GetS32(pSSMHandle, &pThis->irq);
     596    SSMR3GetU32(pSSMHandle, &pThis->base);
    597597
    598598    rc = SSMR3GetU32(pSSMHandle, &u32);
     
    606606    }
    607607
    608     pData->pDevInsHC = pDevIns;
    609     pData->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
     608    pThis->pDevInsHC = pDevIns;
     609    pThis->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
    610610    return VINF_SUCCESS;
    611611}
     
    617617static DECLCALLBACK(void) parallelRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    618618{
    619     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
    620     pData->pDevInsGC     += offDelta;
     619    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
     620    pThis->pDevInsGC     += offDelta;
    621621}
    622622
     
    624624static DECLCALLBACK(void *) parallelQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    625625{
    626     ParallelState *pData = PDMIBASE_2_PARALLELSTATE(pInterface);
     626    ParallelState *pThis = PDMIBASE_2_PARALLELSTATE(pInterface);
    627627    switch (enmInterface)
    628628    {
    629629        case PDMINTERFACE_BASE:
    630             return &pData->IBase;
     630            return &pThis->IBase;
    631631        case PDMINTERFACE_HOST_PARALLEL_PORT:
    632             return &pData->IHostParallelPort;
     632            return &pThis->IHostParallelPort;
    633633        default:
    634634            return NULL;
     
    647647static DECLCALLBACK(int) parallelDestruct(PPDMDEVINS pDevIns)
    648648{
    649     ParallelState *pData = PDMINS_2_DATA(pDevIns, ParallelState *);
    650 
    651     PDMR3CritSectDelete(&pData->CritSect);
    652     RTSemEventDestroy(pData->ReceiveSem);
     649    ParallelState *pThis = PDMINS_2_DATA(pDevIns, ParallelState *);
     650
     651    PDMR3CritSectDelete(&pThis->CritSect);
     652    RTSemEventDestroy(pThis->ReceiveSem);
    653653
    654654    return VINF_SUCCESS;
     
    674674{
    675675    int            rc;
    676     ParallelState  *pData = PDMINS_2_DATA(pDevIns, ParallelState*);
     676    ParallelState  *pThis = PDMINS_2_DATA(pDevIns, ParallelState*);
    677677    uint16_t       io_base;
    678678    uint8_t        irq_lvl;
     
    680680    Assert(iInstance < 4);
    681681
    682     pData->pDevInsHC = pDevIns;
    683     pData->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
     682    pThis->pDevInsHC = pDevIns;
     683    pThis->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
    684684
    685685    /*
     
    690690                                N_("Configuration error: Unknown config key"));
    691691
    692     rc = CFGMR3QueryBool(pCfgHandle, "GCEnabled", &pData->fGCEnabled);
     692    rc = CFGMR3QueryBool(pCfgHandle, "GCEnabled", &pThis->fGCEnabled);
    693693    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    694         pData->fGCEnabled = true;
     694        pThis->fGCEnabled = true;
    695695    else if (RT_FAILURE(rc))
    696696        return PDMDEV_SET_ERROR(pDevIns, rc,
    697697                                N_("Configuration error: Failed to get the \"GCEnabled\" value"));
    698698
    699     rc = CFGMR3QueryBool(pCfgHandle, "R0Enabled", &pData->fR0Enabled);
     699    rc = CFGMR3QueryBool(pCfgHandle, "R0Enabled", &pThis->fR0Enabled);
    700700    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    701         pData->fR0Enabled = true;
     701        pThis->fR0Enabled = true;
    702702    else if (RT_FAILURE(rc))
    703703        return PDMDEV_SET_ERROR(pDevIns, rc,
     
    705705
    706706    /* IBase */
    707     pData->IBase.pfnQueryInterface = parallelQueryInterface;
     707    pThis->IBase.pfnQueryInterface = parallelQueryInterface;
    708708
    709709    /* IHostParallelPort */
    710     pData->IHostParallelPort.pfnNotifyInterrupt = parallelNotifyInterrupt;
    711 
    712     rc = RTSemEventCreate(&pData->ReceiveSem);
     710    pThis->IHostParallelPort.pfnNotifyInterrupt = parallelNotifyInterrupt;
     711
     712    rc = RTSemEventCreate(&pThis->ReceiveSem);
    713713    AssertRC(rc);
    714714
     
    719719    char szName[24];
    720720    RTStrPrintf(szName, sizeof(szName), "Parallel#%d", iInstance);
    721     rc = PDMDevHlpCritSectInit(pDevIns, &pData->CritSect, szName);
     721    rc = PDMDevHlpCritSectInit(pDevIns, &pThis->CritSect, szName);
    722722    if (RT_FAILURE(rc))
    723723        return rc;
     
    739739    Log(("parallelConstruct instance %d iobase=%04x irq=%d\n", iInstance, io_base, irq_lvl));
    740740
    741     pData->irq = irq_lvl;
    742     pData->base = io_base;
     741    pThis->irq = irq_lvl;
     742    pThis->base = io_base;
    743743
    744744    /* Init parallel state */
    745     pData->reg_data = 0;
    746     pData->reg_ecp_ecr = LPT_ECP_ECR_CHIPMODE_COMPAT | LPT_ECP_ECR_FIFO_EMPTY;
    747     pData->act_fifo_pos_read = 0;
    748     pData->act_fifo_pos_write = 0;
     745    pThis->reg_data = 0;
     746    pThis->reg_ecp_ecr = LPT_ECP_ECR_CHIPMODE_COMPAT | LPT_ECP_ECR_FIFO_EMPTY;
     747    pThis->act_fifo_pos_read = 0;
     748    pThis->act_fifo_pos_write = 0;
    749749
    750750    rc = PDMDevHlpIOPortRegister(pDevIns, io_base, 8, 0,
     
    763763#endif
    764764
    765     if (pData->fGCEnabled)
     765    if (pThis->fGCEnabled)
    766766    {
    767767        rc = PDMDevHlpIOPortRegisterGC(pDevIns, io_base, 8, 0, "parallelIOPortWrite",
     
    778778    }
    779779
    780     if (pData->fR0Enabled)
     780    if (pThis->fR0Enabled)
    781781    {
    782782        rc = PDMDevHlpIOPortRegisterR0(pDevIns, io_base, 8, 0, "parallelIOPortWrite",
     
    795795    /* Attach the parallel port driver and get the interfaces. For now no run-time
    796796     * changes are supported. */
    797     rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->IBase, &pData->pDrvBase, "Parallel Host");
     797    rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThis->IBase, &pThis->pDrvBase, "Parallel Host");
    798798    if (RT_SUCCESS(rc))
    799799    {
    800         pData->pDrvHostParallelConnector = (PDMIHOSTPARALLELCONNECTOR *)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase,
     800        pThis->pDrvHostParallelConnector = (PDMIHOSTPARALLELCONNECTOR *)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase,
    801801                                                                                                           PDMINTERFACE_HOST_PARALLEL_CONNECTOR);
    802         if (!pData->pDrvHostParallelConnector)
     802        if (!pThis->pDrvHostParallelConnector)
    803803        {
    804804            AssertMsgFailed(("Configuration error: instance %d has no host parallel interface!\n", iInstance));
     
    809809    else if (rc == VERR_PDM_NO_ATTACHED_DRIVER)
    810810    {
    811         pData->pDrvBase = NULL;
    812         pData->pDrvHostParallelConnector = NULL;
     811        pThis->pDrvBase = NULL;
     812        pThis->pDrvHostParallelConnector = NULL;
    813813        LogRel(("Parallel%d: no unit\n", iInstance));
    814814    }
     
    821821
    822822    /* Set compatibility mode */
    823     pData->pDrvHostParallelConnector->pfnSetMode(pData->pDrvHostParallelConnector, PDM_PARALLEL_PORT_MODE_COMPAT);
     823    pThis->pDrvHostParallelConnector->pfnSetMode(pThis->pDrvHostParallelConnector, PDM_PARALLEL_PORT_MODE_COMPAT);
    824824    /* Get status of control register */
    825     pData->pDrvHostParallelConnector->pfnReadControl(pData->pDrvHostParallelConnector, &pData->reg_control);
     825    pThis->pDrvHostParallelConnector->pfnReadControl(pThis->pDrvHostParallelConnector, &pThis->reg_control);
    826826
    827827    rc = PDMDevHlpSSMRegister(
     
    830830        iInstance,                      /* u32Instance */
    831831        PARALLEL_SAVED_STATE_VERSION,   /* u32Version */
    832         sizeof (*pData),                /* cbGuess */
     832        sizeof (*pThis),                /* cbGuess */
    833833        NULL,                           /* pfnSavePrep */
    834834        parallelSaveExec,               /* pfnSaveExec */
  • trunk/src/VBox/Devices/Parallel/DrvHostParallel.cpp

    r11268 r11269  
    9494{
    9595    PPDMDRVINS  pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    96     PDRVHOSTPARALLEL    pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
     96    PDRVHOSTPARALLEL    pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
    9797    switch (enmInterface)
    9898    {
     
    100100            return &pDrvIns->IBase;
    101101        case PDMINTERFACE_HOST_PARALLEL_CONNECTOR:
    102             return &pData->IHostParallelConnector;
     102            return &pThis->IHostParallelConnector;
    103103        default:
    104104            return NULL;
     
    111111static DECLCALLBACK(int) drvHostParallelWrite(PPDMIHOSTPARALLELCONNECTOR pInterface, const void *pvBuf, size_t *cbWrite)
    112112{
    113     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     113    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    114114    const unsigned char *pBuffer = (const unsigned char *)pvBuf;
    115115
    116116    LogFlow(("%s: pvBuf=%#p cbWrite=%d\n", __FUNCTION__, pvBuf, *cbWrite));
    117117
    118     ioctl(pData->FileDevice, PPWDATA, pBuffer);
     118    ioctl(pThis->FileDevice, PPWDATA, pBuffer);
    119119    *cbWrite = 1;
    120120
     
    124124static DECLCALLBACK(int) drvHostParallelRead(PPDMIHOSTPARALLELCONNECTOR pInterface, void *pvBuf, size_t *cbRead)
    125125{
    126     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     126    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    127127    unsigned char *pBuffer = (unsigned char *)pvBuf;
    128128
    129129    LogFlow(("%s: pvBuf=%#p cbRead=%d\n", __FUNCTION__, pvBuf, cbRead));
    130130
    131     ioctl(pData->FileDevice, PPRDATA, pBuffer);
     131    ioctl(pThis->FileDevice, PPRDATA, pBuffer);
    132132    *cbRead = 1;
    133133
     
    137137static DECLCALLBACK(int) drvHostParallelSetMode(PPDMIHOSTPARALLELCONNECTOR pInterface, PDMPARALLELPORTMODE enmMode)
    138138{
    139     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     139    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    140140    int ppdev_mode;
    141141
     
    154154    }
    155155
    156     ioctl(pData->FileDevice, PPSETMODE, &ppdev_mode);
     156    ioctl(pThis->FileDevice, PPSETMODE, &ppdev_mode);
    157157
    158158    return VINF_SUCCESS;
     
    161161static DECLCALLBACK(int) drvHostParallelWriteControl(PPDMIHOSTPARALLELCONNECTOR pInterface, uint8_t fReg)
    162162{
    163     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     163    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    164164
    165165    LogFlow(("%s: fReg=%d\n", __FUNCTION__, fReg));
    166166
    167     ioctl(pData->FileDevice, PPWCONTROL, &fReg);
     167    ioctl(pThis->FileDevice, PPWCONTROL, &fReg);
    168168
    169169    return VINF_SUCCESS;
     
    172172static DECLCALLBACK(int) drvHostParallelReadControl(PPDMIHOSTPARALLELCONNECTOR pInterface, uint8_t *pfReg)
    173173{
    174     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     174    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    175175    uint8_t fReg;
    176176
    177     ioctl(pData->FileDevice, PPRCONTROL, &fReg);
     177    ioctl(pThis->FileDevice, PPRCONTROL, &fReg);
    178178
    179179    LogFlow(("%s: fReg=%d\n", __FUNCTION__, fReg));
     
    186186static DECLCALLBACK(int) drvHostParallelReadStatus(PPDMIHOSTPARALLELCONNECTOR pInterface, uint8_t *pfReg)
    187187{
    188     PDRVHOSTPARALLEL pData = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
     188    PDRVHOSTPARALLEL pThis = PDMIHOSTPARALLELCONNECTOR_2_DRVHOSTPARALLEL(pInterface);
    189189    uint8_t fReg;
    190190
    191     ioctl(pData->FileDevice, PPRSTATUS, &fReg);
     191    ioctl(pThis->FileDevice, PPRSTATUS, &fReg);
    192192
    193193    LogFlow(("%s: fReg=%d\n", __FUNCTION__, fReg));
     
    200200static DECLCALLBACK(int) drvHostParallelMonitorThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    201201{
    202     PDRVHOSTPARALLEL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
     202    PDRVHOSTPARALLEL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
    203203    struct pollfd aFDs[2];
    204204
     
    210210        int rc;
    211211
    212         aFDs[0].fd      = pData->FileDevice;
     212        aFDs[0].fd      = pThis->FileDevice;
    213213        aFDs[0].events  = POLLIN;
    214214        aFDs[0].revents = 0;
    215         aFDs[1].fd      = pData->WakeupPipeR;
     215        aFDs[1].fd      = pThis->WakeupPipeR;
    216216        aFDs[1].events  = POLLIN | POLLERR | POLLHUP;
    217217        aFDs[1].revents = 0;
     
    232232            char ch;
    233233            size_t cbRead;
    234             RTFileRead(pData->WakeupPipeR, &ch, 1, &cbRead);
     234            RTFileRead(pThis->WakeupPipeR, &ch, 1, &cbRead);
    235235            continue;
    236236        }
    237237
    238238        /* Interrupt occured. */
    239         rc = pData->pDrvHostParallelPort->pfnNotifyInterrupt(pData->pDrvHostParallelPort);
     239        rc = pThis->pDrvHostParallelPort->pfnNotifyInterrupt(pThis->pDrvHostParallelPort);
    240240        AssertRC(rc);
    241241    }
     
    253253static DECLCALLBACK(int) drvHostParallelWakeupMonitorThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    254254{
    255     PDRVHOSTPARALLEL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
    256 
    257     return RTFileWrite(pData->WakeupPipeW, "", 1, NULL);
     255    PDRVHOSTPARALLEL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
     256
     257    return RTFileWrite(pThis->WakeupPipeW, "", 1, NULL);
    258258}
    259259
     
    272272static DECLCALLBACK(int) drvHostParallelConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    273273{
    274     PDRVHOSTPARALLEL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
     274    PDRVHOSTPARALLEL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
    275275    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    276276
     
    289289    pDrvIns->IBase.pfnQueryInterface               = drvHostParallelQueryInterface;
    290290    /* IHostParallelConnector. */
    291     pData->IHostParallelConnector.pfnWrite         = drvHostParallelWrite;
    292     pData->IHostParallelConnector.pfnRead          = drvHostParallelRead;
    293     pData->IHostParallelConnector.pfnSetMode       = drvHostParallelSetMode;
    294     pData->IHostParallelConnector.pfnWriteControl  = drvHostParallelWriteControl;
    295     pData->IHostParallelConnector.pfnReadControl   = drvHostParallelReadControl;
    296     pData->IHostParallelConnector.pfnReadStatus    = drvHostParallelReadStatus;
     291    pThis->IHostParallelConnector.pfnWrite         = drvHostParallelWrite;
     292    pThis->IHostParallelConnector.pfnRead          = drvHostParallelRead;
     293    pThis->IHostParallelConnector.pfnSetMode       = drvHostParallelSetMode;
     294    pThis->IHostParallelConnector.pfnWriteControl  = drvHostParallelWriteControl;
     295    pThis->IHostParallelConnector.pfnReadControl   = drvHostParallelReadControl;
     296    pThis->IHostParallelConnector.pfnReadStatus    = drvHostParallelReadStatus;
    297297
    298298    /*
     
    300300     */
    301301    /* Device */
    302     int rc = CFGMR3QueryStringAlloc(pCfgHandle, "DevicePath", &pData->pszDevicePath);
     302    int rc = CFGMR3QueryStringAlloc(pCfgHandle, "DevicePath", &pThis->pszDevicePath);
    303303    if (RT_FAILURE(rc))
    304304    {
     
    310310     * Open the device
    311311     */
    312     rc = RTFileOpen(&pData->FileDevice, pData->pszDevicePath, RTFILE_O_OPEN | RTFILE_O_READWRITE);
     312    rc = RTFileOpen(&pThis->FileDevice, pThis->pszDevicePath, RTFILE_O_OPEN | RTFILE_O_READWRITE);
    313313    if (RT_FAILURE(rc))
    314314        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("Parallel#%d could not open '%s'"),
    315                                    pDrvIns->iInstance, pData->pszDevicePath);
     315                                   pDrvIns->iInstance, pThis->pszDevicePath);
    316316
    317317    /*
    318318     * Try to get exclusive access to parallel port
    319319     */
    320     rc = ioctl(pData->FileDevice, PPEXCL);
     320    rc = ioctl(pThis->FileDevice, PPEXCL);
    321321    if (rc < 0)
    322322        return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS,
    323323                                   N_("Parallel#%d could not get exclusive access for parallel port '%s'"
    324324                                      "Be sure that no other process or driver accesses this port"),
    325                                    pDrvIns->iInstance, pData->pszDevicePath);
     325                                   pDrvIns->iInstance, pThis->pszDevicePath);
    326326
    327327    /*
    328328     * Claim the parallel port
    329329     */
    330     rc = ioctl(pData->FileDevice, PPCLAIM);
     330    rc = ioctl(pThis->FileDevice, PPCLAIM);
    331331    if (rc < 0)
    332332        return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS,
    333333                                   N_("Parallel#%d could not claim parallel port '%s'"
    334334                                      "Be sure that no other process or driver accesses this port"),
    335                                    pDrvIns->iInstance, pData->pszDevicePath);
     335                                   pDrvIns->iInstance, pThis->pszDevicePath);
    336336
    337337    /*
    338338     * Get the IHostParallelPort interface of the above driver/device.
    339339     */
    340     pData->pDrvHostParallelPort = (PPDMIHOSTPARALLELPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_HOST_PARALLEL_PORT);
    341     if (!pData->pDrvHostParallelPort)
     340    pThis->pDrvHostParallelPort = (PPDMIHOSTPARALLELPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_HOST_PARALLEL_PORT);
     341    if (!pThis->pDrvHostParallelPort)
    342342        return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE, RT_SRC_POS, N_("Parallel#%d has no parallel port interface above"),
    343343                                   pDrvIns->iInstance);
     
    353353        return rc;
    354354    }
    355     pData->WakeupPipeR = aFDs[0];
    356     pData->WakeupPipeW = aFDs[1];
     355    pThis->WakeupPipeR = aFDs[0];
     356    pThis->WakeupPipeW = aFDs[1];
    357357
    358358    /*
    359359     * Start waiting for interrupts.
    360360     */
    361     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pMonitorThread, pData, drvHostParallelMonitorThread, drvHostParallelWakeupMonitorThread, 0,
     361    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pMonitorThread, pThis, drvHostParallelMonitorThread, drvHostParallelWakeupMonitorThread, 0,
    362362                                  RTTHREADTYPE_IO, "ParMon");
    363363    if (RT_FAILURE(rc))
     
    378378static DECLCALLBACK(void) drvHostParallelDestruct(PPDMDRVINS pDrvIns)
    379379{
    380     PDRVHOSTPARALLEL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
     380    PDRVHOSTPARALLEL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTPARALLEL);
    381381
    382382    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    383383
    384     ioctl(pData->FileDevice, PPRELEASE);
    385 
    386     if (pData->WakeupPipeW != NIL_RTFILE)
    387     {
    388         int rc = RTFileClose(pData->WakeupPipeW);
     384    ioctl(pThis->FileDevice, PPRELEASE);
     385
     386    if (pThis->WakeupPipeW != NIL_RTFILE)
     387    {
     388        int rc = RTFileClose(pThis->WakeupPipeW);
    389389        AssertRC(rc);
    390         pData->WakeupPipeW = NIL_RTFILE;
    391     }
    392     if (pData->WakeupPipeR != NIL_RTFILE)
    393     {
    394         int rc = RTFileClose(pData->WakeupPipeR);
     390        pThis->WakeupPipeW = NIL_RTFILE;
     391    }
     392    if (pThis->WakeupPipeR != NIL_RTFILE)
     393    {
     394        int rc = RTFileClose(pThis->WakeupPipeR);
    395395        AssertRC(rc);
    396         pData->WakeupPipeR = NIL_RTFILE;
    397     }
    398     if (pData->FileDevice != NIL_RTFILE)
    399     {
    400         int rc = RTFileClose(pData->FileDevice);
     396        pThis->WakeupPipeR = NIL_RTFILE;
     397    }
     398    if (pThis->FileDevice != NIL_RTFILE)
     399    {
     400        int rc = RTFileClose(pThis->FileDevice);
    401401        AssertRC(rc);
    402         pData->FileDevice = NIL_RTFILE;
     402        pThis->FileDevice = NIL_RTFILE;
    403403    }
    404404}
  • trunk/src/VBox/Devices/Serial/DevSerial.cpp

    r11267 r11269  
    400400static DECLCALLBACK(int) serialNotifyRead(PPDMICHARPORT pInterface, const void *pvBuf, size_t *pcbRead)
    401401{
    402     SerialState *pData = PDMICHARPORT_2_SERIALSTATE(pInterface);
     402    SerialState *pThis = PDMICHARPORT_2_SERIALSTATE(pInterface);
    403403    int rc;
    404404
    405405    Assert(*pcbRead != 0);
    406406
    407     PDMCritSectEnter(&pData->CritSect, VERR_PERMISSION_DENIED);
    408     if (pData->lsr & UART_LSR_DR)
     407    PDMCritSectEnter(&pThis->CritSect, VERR_PERMISSION_DENIED);
     408    if (pThis->lsr & UART_LSR_DR)
    409409    {
    410410        /* If a character is still in the read queue, then wait for it to be emptied. */
    411         PDMCritSectLeave(&pData->CritSect);
    412         rc = RTSemEventWait(pData->ReceiveSem, 250);
     411        PDMCritSectLeave(&pThis->CritSect);
     412        rc = RTSemEventWait(pThis->ReceiveSem, 250);
    413413        if (RT_FAILURE(rc))
    414414            return rc;
    415415
    416         PDMCritSectEnter(&pData->CritSect, VERR_PERMISSION_DENIED);
    417     }
    418 
    419     if (!(pData->lsr & UART_LSR_DR))
    420     {
    421         pData->rbr = *(const char *)pvBuf;
    422         pData->lsr |= UART_LSR_DR;
    423         serial_update_irq(pData);
     416        PDMCritSectEnter(&pThis->CritSect, VERR_PERMISSION_DENIED);
     417    }
     418
     419    if (!(pThis->lsr & UART_LSR_DR))
     420    {
     421        pThis->rbr = *(const char *)pvBuf;
     422        pThis->lsr |= UART_LSR_DR;
     423        serial_update_irq(pThis);
    424424        *pcbRead = 1;
    425425        rc = VINF_SUCCESS;
     
    428428        rc = VERR_TIMEOUT;
    429429
    430     PDMCritSectLeave(&pData->CritSect);
     430    PDMCritSectLeave(&pThis->CritSect);
    431431
    432432    return rc;
     
    435435static DECLCALLBACK(int) serialNotifyStatusLinesChanged(PPDMICHARPORT pInterface, uint32_t newStatusLines)
    436436{
    437     SerialState *pData = PDMICHARPORT_2_SERIALSTATE(pInterface);
     437    SerialState *pThis = PDMICHARPORT_2_SERIALSTATE(pInterface);
    438438    uint8_t newMsr = 0;
    439439
    440440    Log(("%s: pInterface=%p newStatusLines=%u\n", __FUNCTION__, pInterface, newStatusLines));
    441441
    442     PDMCritSectEnter(&pData->CritSect, VERR_PERMISSION_DENIED);
     442    PDMCritSectEnter(&pThis->CritSect, VERR_PERMISSION_DENIED);
    443443
    444444    /* Set new states. */
     
    453453
    454454    /* Compare the old and the new states and set the delta bits accordingly. */
    455     if ((newMsr & UART_MSR_DCD) != (pData->msr & UART_MSR_DCD))
     455    if ((newMsr & UART_MSR_DCD) != (pThis->msr & UART_MSR_DCD))
    456456        newMsr |= UART_MSR_DDCD;
    457     if ((newMsr & UART_MSR_RI) == 1 && (pData->msr & UART_MSR_RI) == 0)
     457    if ((newMsr & UART_MSR_RI) == 1 && (pThis->msr & UART_MSR_RI) == 0)
    458458        newMsr |= UART_MSR_TERI;
    459     if ((newMsr & UART_MSR_DSR) != (pData->msr & UART_MSR_DSR))
     459    if ((newMsr & UART_MSR_DSR) != (pThis->msr & UART_MSR_DSR))
    460460        newMsr |= UART_MSR_DDSR;
    461     if ((newMsr & UART_MSR_CTS) != (pData->msr & UART_MSR_CTS))
     461    if ((newMsr & UART_MSR_CTS) != (pThis->msr & UART_MSR_CTS))
    462462        newMsr |= UART_MSR_DCTS;
    463463
    464     pData->msr = newMsr;
    465     pData->msr_changed = true;
    466     serial_update_irq(pData);
    467 
    468     PDMCritSectLeave(&pData->CritSect);
     464    pThis->msr = newMsr;
     465    pThis->msr_changed = true;
     466    serial_update_irq(pThis);
     467
     468    PDMCritSectLeave(&pThis->CritSect);
    469469
    470470    return VINF_SUCCESS;
     
    487487                                     RTIOPORT Port, uint32_t u32, unsigned cb)
    488488{
    489     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
     489    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
    490490    int          rc = VINF_SUCCESS;
    491491
    492492    if (cb == 1)
    493493    {
    494         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_WRITE);
     494        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_WRITE);
    495495        if (rc == VINF_SUCCESS)
    496496        {
    497497            Log2(("%s: port %#06x val %#04x\n", __FUNCTION__, Port, u32));
    498             rc = serial_ioport_write (pData, Port, u32);
    499             PDMCritSectLeave(&pData->CritSect);
     498            rc = serial_ioport_write (pThis, Port, u32);
     499            PDMCritSectLeave(&pThis->CritSect);
    500500        }
    501501    }
     
    520520                                    RTIOPORT Port, uint32_t *pu32, unsigned cb)
    521521{
    522     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
     522    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
    523523    int          rc = VINF_SUCCESS;
    524524
    525525    if (cb == 1)
    526526    {
    527         rc = PDMCritSectEnter(&pData->CritSect, VINF_IOM_HC_IOPORT_READ);
     527        rc = PDMCritSectEnter(&pThis->CritSect, VINF_IOM_HC_IOPORT_READ);
    528528        if (rc == VINF_SUCCESS)
    529529        {
    530             *pu32 = serial_ioport_read (pData, Port, &rc);
     530            *pu32 = serial_ioport_read (pThis, Port, &rc);
    531531            Log2(("%s: port %#06x val %#04x\n", __FUNCTION__, Port, *pu32));
    532             PDMCritSectLeave(&pData->CritSect);
     532            PDMCritSectLeave(&pThis->CritSect);
    533533        }
    534534    }
     
    550550                                        PSSMHANDLE pSSMHandle)
    551551{
    552     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
    553 
    554     SSMR3PutU16(pSSMHandle, pData->divider);
    555     SSMR3PutU8(pSSMHandle, pData->rbr);
    556     SSMR3PutU8(pSSMHandle, pData->ier);
    557     SSMR3PutU8(pSSMHandle, pData->lcr);
    558     SSMR3PutU8(pSSMHandle, pData->mcr);
    559     SSMR3PutU8(pSSMHandle, pData->lsr);
    560     SSMR3PutU8(pSSMHandle, pData->msr);
    561     SSMR3PutU8(pSSMHandle, pData->scr);
    562     SSMR3PutS32(pSSMHandle, pData->thr_ipending);
    563     SSMR3PutS32(pSSMHandle, pData->irq);
    564     SSMR3PutS32(pSSMHandle, pData->last_break_enable);
    565     SSMR3PutU32(pSSMHandle, pData->base);
    566     SSMR3PutBool(pSSMHandle, pData->msr_changed);
     552    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
     553
     554    SSMR3PutU16(pSSMHandle, pThis->divider);
     555    SSMR3PutU8(pSSMHandle, pThis->rbr);
     556    SSMR3PutU8(pSSMHandle, pThis->ier);
     557    SSMR3PutU8(pSSMHandle, pThis->lcr);
     558    SSMR3PutU8(pSSMHandle, pThis->mcr);
     559    SSMR3PutU8(pSSMHandle, pThis->lsr);
     560    SSMR3PutU8(pSSMHandle, pThis->msr);
     561    SSMR3PutU8(pSSMHandle, pThis->scr);
     562    SSMR3PutS32(pSSMHandle, pThis->thr_ipending);
     563    SSMR3PutS32(pSSMHandle, pThis->irq);
     564    SSMR3PutS32(pSSMHandle, pThis->last_break_enable);
     565    SSMR3PutU32(pSSMHandle, pThis->base);
     566    SSMR3PutBool(pSSMHandle, pThis->msr_changed);
    567567    return SSMR3PutU32(pSSMHandle, ~0); /* sanity/terminator */
    568568}
     
    582582    int          rc;
    583583    uint32_t     u32;
    584     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
     584    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
    585585
    586586    if (u32Version != SERIAL_SAVED_STATE_VERSION)
     
    590590    }
    591591
    592     SSMR3GetU16(pSSMHandle, &pData->divider);
    593     SSMR3GetU8(pSSMHandle, &pData->rbr);
    594     SSMR3GetU8(pSSMHandle, &pData->ier);
    595     SSMR3GetU8(pSSMHandle, &pData->lcr);
    596     SSMR3GetU8(pSSMHandle, &pData->mcr);
    597     SSMR3GetU8(pSSMHandle, &pData->lsr);
    598     SSMR3GetU8(pSSMHandle, &pData->msr);
    599     SSMR3GetU8(pSSMHandle, &pData->scr);
    600     SSMR3GetS32(pSSMHandle, &pData->thr_ipending);
    601     SSMR3GetS32(pSSMHandle, &pData->irq);
    602     SSMR3GetS32(pSSMHandle, &pData->last_break_enable);
    603     SSMR3GetU32(pSSMHandle, &pData->base);
    604     SSMR3GetBool(pSSMHandle, &pData->msr_changed);
     592    SSMR3GetU16(pSSMHandle, &pThis->divider);
     593    SSMR3GetU8(pSSMHandle, &pThis->rbr);
     594    SSMR3GetU8(pSSMHandle, &pThis->ier);
     595    SSMR3GetU8(pSSMHandle, &pThis->lcr);
     596    SSMR3GetU8(pSSMHandle, &pThis->mcr);
     597    SSMR3GetU8(pSSMHandle, &pThis->lsr);
     598    SSMR3GetU8(pSSMHandle, &pThis->msr);
     599    SSMR3GetU8(pSSMHandle, &pThis->scr);
     600    SSMR3GetS32(pSSMHandle, &pThis->thr_ipending);
     601    SSMR3GetS32(pSSMHandle, &pThis->irq);
     602    SSMR3GetS32(pSSMHandle, &pThis->last_break_enable);
     603    SSMR3GetU32(pSSMHandle, &pThis->base);
     604    SSMR3GetBool(pSSMHandle, &pThis->msr_changed);
    605605
    606606    rc = SSMR3GetU32(pSSMHandle, &u32);
     
    616616     * in the saved state. */
    617617
    618     if (pData->lsr & UART_LSR_DR)
    619     {
    620         int rc = RTSemEventSignal(pData->ReceiveSem);
     618    if (pThis->lsr & UART_LSR_DR)
     619    {
     620        int rc = RTSemEventSignal(pThis->ReceiveSem);
    621621        AssertRC(rc);
    622622    }
    623     pData->pDevInsHC = pDevIns;
    624     pData->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
     623    pThis->pDevInsHC = pDevIns;
     624    pThis->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
    625625    return VINF_SUCCESS;
    626626}
     
    632632static DECLCALLBACK(void) serialRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    633633{
    634     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
    635     pData->pDevInsGC   = PDMDEVINS_2_GCPTR(pDevIns);
     634    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
     635    pThis->pDevInsGC   = PDMDEVINS_2_GCPTR(pDevIns);
    636636}
    637637
     
    640640static DECLCALLBACK(int) serialIOPortRegionMap(PPCIDEVICE pPciDev, /* unsigned */ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType)
    641641{
    642     SerialState *pData = PCIDEV_2_SERIALSTATE(pPciDev);
     642    SerialState *pThis = PCIDEV_2_SERIALSTATE(pPciDev);
    643643    int rc = VINF_SUCCESS;
    644644
     
    648648    AssertMsg(RT_ALIGN(GCPhysAddress, 8) == GCPhysAddress, ("Expected 8 byte alignment. GCPhysAddress=%#x\n", GCPhysAddress));
    649649
    650     pData->base = (RTIOPORT)GCPhysAddress;
    651     LogRel(("Serial#%d: mapping I/O at %#06x\n", pData->pDevIns->iInstance, pData->base));
     650    pThis->base = (RTIOPORT)GCPhysAddress;
     651    LogRel(("Serial#%d: mapping I/O at %#06x\n", pThis->pDevIns->iInstance, pThis->base));
    652652
    653653    /*
    654654     * Register our port IO handlers.
    655655     */
    656     rc = PDMDevHlpIOPortRegister(pPciDev->pDevIns, (RTIOPORT)GCPhysAddress, 8, (void *)pData,
     656    rc = PDMDevHlpIOPortRegister(pPciDev->pDevIns, (RTIOPORT)GCPhysAddress, 8, (void *)pThis,
    657657                                 serial_io_write, serial_io_read, NULL, NULL, "SERIAL");
    658658    AssertRC(rc);
     
    666666static DECLCALLBACK(void *) serialQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    667667{
    668     SerialState *pData = PDMIBASE_2_SERIALSTATE(pInterface);
     668    SerialState *pThis = PDMIBASE_2_SERIALSTATE(pInterface);
    669669    switch (enmInterface)
    670670    {
    671671        case PDMINTERFACE_BASE:
    672             return &pData->IBase;
     672            return &pThis->IBase;
    673673        case PDMINTERFACE_CHAR_PORT:
    674             return &pData->ICharPort;
     674            return &pThis->ICharPort;
    675675        default:
    676676            return NULL;
     
    689689static DECLCALLBACK(int) serialDestruct(PPDMDEVINS pDevIns)
    690690{
    691     SerialState *pData = PDMINS_2_DATA(pDevIns, SerialState *);
    692 
    693     RTSemEventDestroy(pData->ReceiveSem);
    694     pData->ReceiveSem = NIL_RTSEMEVENT;
    695 
    696     PDMR3CritSectDelete(&pData->CritSect);
     691    SerialState *pThis = PDMINS_2_DATA(pDevIns, SerialState *);
     692
     693    RTSemEventDestroy(pThis->ReceiveSem);
     694    pThis->ReceiveSem = NIL_RTSEMEVENT;
     695
     696    PDMR3CritSectDelete(&pThis->CritSect);
    697697    return VINF_SUCCESS;
    698698}
     
    717717{
    718718    int            rc;
    719     SerialState   *pData = PDMINS_2_DATA(pDevIns, SerialState*);
     719    SerialState   *pThis = PDMINS_2_DATA(pDevIns, SerialState*);
    720720    uint16_t       io_base;
    721721    uint8_t        irq_lvl;
     
    723723    Assert(iInstance < 4);
    724724
    725     pData->pDevInsHC = pDevIns;
    726     pData->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
     725    pThis->pDevInsHC = pDevIns;
     726    pThis->pDevInsGC = PDMDEVINS_2_GCPTR(pDevIns);
    727727
    728728    /*
     
    735735    }
    736736
    737     rc = CFGMR3QueryBool(pCfgHandle, "GCEnabled", &pData->fGCEnabled);
     737    rc = CFGMR3QueryBool(pCfgHandle, "GCEnabled", &pThis->fGCEnabled);
    738738    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    739         pData->fGCEnabled = true;
     739        pThis->fGCEnabled = true;
    740740    else if (RT_FAILURE(rc))
    741741        return PDMDEV_SET_ERROR(pDevIns, rc,
    742742                                N_("Configuration error: Failed to get the \"GCEnabled\" value"));
    743743
    744     rc = CFGMR3QueryBool(pCfgHandle, "R0Enabled", &pData->fR0Enabled);
     744    rc = CFGMR3QueryBool(pCfgHandle, "R0Enabled", &pThis->fR0Enabled);
    745745    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    746         pData->fR0Enabled = true;
     746        pThis->fR0Enabled = true;
    747747    else if (RT_FAILURE(rc))
    748748        return PDMDEV_SET_ERROR(pDevIns, rc,
     
    750750
    751751    /* IBase */
    752     pData->IBase.pfnQueryInterface = serialQueryInterface;
     752    pThis->IBase.pfnQueryInterface = serialQueryInterface;
    753753
    754754    /* ICharPort */
    755     pData->ICharPort.pfnNotifyRead = serialNotifyRead;
    756     pData->ICharPort.pfnNotifyStatusLinesChanged = serialNotifyStatusLinesChanged;
    757 
    758     rc = RTSemEventCreate(&pData->ReceiveSem);
     755    pThis->ICharPort.pfnNotifyRead = serialNotifyRead;
     756    pThis->ICharPort.pfnNotifyStatusLinesChanged = serialNotifyStatusLinesChanged;
     757
     758    rc = RTSemEventCreate(&pThis->ReceiveSem);
    759759    AssertRC(rc);
    760760
     
    765765    char szName[24];
    766766    RTStrPrintf(szName, sizeof(szName), "Serial#%d", iInstance);
    767     rc = PDMDevHlpCritSectInit(pDevIns, &pData->CritSect, szName);
     767    rc = PDMDevHlpCritSectInit(pDevIns, &pThis->CritSect, szName);
    768768    if (RT_FAILURE(rc))
    769769        return rc;
     
    796796    Log(("serialConstruct instance %d iobase=%04x irq=%d\n", iInstance, io_base, irq_lvl));
    797797
    798     pData->irq = irq_lvl;
    799     pData->lsr = UART_LSR_TEMT | UART_LSR_THRE;
    800     pData->iir = UART_IIR_NO_INT;
    801     pData->msr = UART_MSR_DCD | UART_MSR_DSR | UART_MSR_CTS;
     798    pThis->irq = irq_lvl;
     799    pThis->lsr = UART_LSR_TEMT | UART_LSR_THRE;
     800    pThis->iir = UART_IIR_NO_INT;
     801    pThis->msr = UART_MSR_DCD | UART_MSR_DSR | UART_MSR_CTS;
    802802#ifdef VBOX_SERIAL_PCI
    803     pData->base = -1;
    804     pData->dev.config[0x00] = 0xee; /* Vendor: ??? */
    805     pData->dev.config[0x01] = 0x80;
    806     pData->dev.config[0x02] = 0x01; /* Device: ??? */
    807     pData->dev.config[0x03] = 0x01;
    808     pData->dev.config[0x04] = PCI_COMMAND_IOACCESS;
    809     pData->dev.config[0x09] = 0x01; /* Programming interface: 16450 */
    810     pData->dev.config[0x0a] = 0x00; /* Subclass: Serial controller */
    811     pData->dev.config[0x0b] = 0x07; /* Class: Communication controller */
    812     pData->dev.config[0x0e] = 0x00; /* Header type: standard */
    813     pData->dev.config[0x3c] = irq_lvl; /* preconfigure IRQ number (0 = autoconfig)*/
    814     pData->dev.config[0x3d] = 1;    /* interrupt pin 0 */
    815     rc = PDMDevHlpPCIRegister(pDevIns, &pData->dev);
     803    pThis->base = -1;
     804    pThis->dev.config[0x00] = 0xee; /* Vendor: ??? */
     805    pThis->dev.config[0x01] = 0x80;
     806    pThis->dev.config[0x02] = 0x01; /* Device: ??? */
     807    pThis->dev.config[0x03] = 0x01;
     808    pThis->dev.config[0x04] = PCI_COMMAND_IOACCESS;
     809    pThis->dev.config[0x09] = 0x01; /* Programming interface: 16450 */
     810    pThis->dev.config[0x0a] = 0x00; /* Subclass: Serial controller */
     811    pThis->dev.config[0x0b] = 0x07; /* Class: Communication controller */
     812    pThis->dev.config[0x0e] = 0x00; /* Header type: standard */
     813    pThis->dev.config[0x3c] = irq_lvl; /* preconfigure IRQ number (0 = autoconfig)*/
     814    pThis->dev.config[0x3d] = 1;    /* interrupt pin 0 */
     815    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->dev);
    816816    if (RT_FAILURE(rc))
    817817        return rc;
     
    823823        return rc;
    824824#else /* !VBOX_SERIAL_PCI */
    825     pData->base = io_base;
     825    pThis->base = io_base;
    826826    rc = PDMDevHlpIOPortRegister(pDevIns, io_base, 8, 0,
    827827                                 serialIOPortWrite, serialIOPortRead,
     
    830830        return rc;
    831831
    832     if (pData->fGCEnabled)
     832    if (pThis->fGCEnabled)
    833833        rc = PDMDevHlpIOPortRegisterGC(pDevIns, io_base, 8, 0, "serialIOPortWrite",
    834834                                      "serialIOPortRead", NULL, NULL, "Serial");
    835835
    836     if (pData->fR0Enabled)
     836    if (pThis->fR0Enabled)
    837837        rc = PDMDevHlpIOPortRegisterR0(pDevIns, io_base, 8, 0, "serialIOPortWrite",
    838838                                      "serialIOPortRead", NULL, NULL, "Serial");
     
    842842    /* Attach the char driver and get the interfaces. For now no run-time
    843843     * changes are supported. */
    844     rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->IBase, &pData->pDrvBase, "Serial Char");
     844    rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThis->IBase, &pThis->pDrvBase, "Serial Char");
    845845    if (RT_SUCCESS(rc))
    846846    {
    847         pData->pDrvChar = (PDMICHAR *)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_CHAR);
    848         if (!pData->pDrvChar)
     847        pThis->pDrvChar = (PDMICHAR *)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_CHAR);
     848        if (!pThis->pDrvChar)
    849849        {
    850850            AssertMsgFailed(("Configuration error: instance %d has no char interface!\n", iInstance));
     
    855855    else if (rc == VERR_PDM_NO_ATTACHED_DRIVER)
    856856    {
    857         pData->pDrvBase = NULL;
    858         pData->pDrvChar = NULL;
     857        pThis->pDrvBase = NULL;
     858        pThis->pDrvChar = NULL;
    859859        LogRel(("Serial%d: no unit\n", iInstance));
    860860    }
     
    871871        iInstance,              /* u32Instance */
    872872        SERIAL_SAVED_STATE_VERSION, /* u32Version */
    873         sizeof (*pData),        /* cbGuess */
     873        sizeof (*pThis),        /* cbGuess */
    874874        NULL,                   /* pfnSavePrep */
    875875        serialSaveExec,         /* pfnSaveExec */
  • trunk/src/VBox/Devices/Serial/DrvChar.cpp

    r11267 r11269  
    9494{
    9595    PPDMDRVINS  pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    96     PDRVCHAR    pData = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
     96    PDRVCHAR    pThis = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
    9797    switch (enmInterface)
    9898    {
     
    100100            return &pDrvIns->IBase;
    101101        case PDMINTERFACE_CHAR:
    102             return &pData->IChar;
     102            return &pThis->IChar;
    103103        default:
    104104            return NULL;
     
    112112static DECLCALLBACK(int) drvCharWrite(PPDMICHAR pInterface, const void *pvBuf, size_t cbWrite)
    113113{
    114     PDRVCHAR pData = PDMICHAR_2_DRVCHAR(pInterface);
     114    PDRVCHAR pThis = PDMICHAR_2_DRVCHAR(pInterface);
    115115    const char *pBuffer = (const char *)pvBuf;
    116116
     
    119119    for (uint32_t i=0;i<cbWrite;i++)
    120120    {
    121         uint32_t idx = pData->iSendQueueHead;
    122 
    123         pData->aSendQueue[idx] = pBuffer[i];
     121        uint32_t idx = pThis->iSendQueueHead;
     122
     123        pThis->aSendQueue[idx] = pBuffer[i];
    124124        idx = (idx + 1) & CHAR_MAX_SEND_QUEUE_MASK;
    125125
    126         STAM_COUNTER_INC(&pData->StatBytesWritten);
    127         ASMAtomicXchgU32(&pData->iSendQueueHead, idx);
    128     }
    129     RTSemEventSignal(pData->SendSem);
     126        STAM_COUNTER_INC(&pThis->StatBytesWritten);
     127        ASMAtomicXchgU32(&pThis->iSendQueueHead, idx);
     128    }
     129    RTSemEventSignal(pThis->SendSem);
    130130    return VINF_SUCCESS;
    131131}
     
    134134static DECLCALLBACK(int) drvCharSetParameters(PPDMICHAR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits)
    135135{
    136     /*PDRVCHAR pData = PDMICHAR_2_DRVCHAR(pInterface); - unused*/
     136    /*PDRVCHAR pThis = PDMICHAR_2_DRVCHAR(pInterface); - unused*/
    137137
    138138    LogFlow(("%s: Bps=%u chParity=%c cDataBits=%u cStopBits=%u\n", __FUNCTION__, Bps, chParity, cDataBits, cStopBits));
     
    152152static DECLCALLBACK(int) drvCharSendLoop(RTTHREAD ThreadSelf, void *pvUser)
    153153{
    154     PDRVCHAR pData = (PDRVCHAR)pvUser;
     154    PDRVCHAR pThis = (PDRVCHAR)pvUser;
    155155
    156156    for(;;)
    157157    {
    158         int rc = RTSemEventWait(pData->SendSem, RT_INDEFINITE_WAIT);
     158        int rc = RTSemEventWait(pThis->SendSem, RT_INDEFINITE_WAIT);
    159159        if (RT_FAILURE(rc))
    160160            break;
     
    163163         * Write the character to the attached stream (if present).
    164164         */
    165         if (    !pData->fShutdown
    166             &&  pData->pDrvStream)
     165        if (    !pThis->fShutdown
     166            &&  pThis->pDrvStream)
    167167        {
    168             while (pData->iSendQueueTail != pData->iSendQueueHead)
     168            while (pThis->iSendQueueTail != pThis->iSendQueueHead)
    169169            {
    170170                size_t cbProcessed = 1;
    171171
    172                 rc = pData->pDrvStream->pfnWrite(pData->pDrvStream, &pData->aSendQueue[pData->iSendQueueTail], &cbProcessed);
     172                rc = pThis->pDrvStream->pfnWrite(pThis->pDrvStream, &pThis->aSendQueue[pThis->iSendQueueTail], &cbProcessed);
    173173                if (RT_SUCCESS(rc))
    174174                {
    175175                    Assert(cbProcessed);
    176                     pData->iSendQueueTail++;
    177                     pData->iSendQueueTail &= CHAR_MAX_SEND_QUEUE_MASK;
     176                    pThis->iSendQueueTail++;
     177                    pThis->iSendQueueTail &= CHAR_MAX_SEND_QUEUE_MASK;
    178178                }
    179179                else if (rc == VERR_TIMEOUT)
     
    194194    }
    195195
    196     pData->SendThread = NIL_RTTHREAD;
     196    pThis->SendThread = NIL_RTTHREAD;
    197197
    198198    return VINF_SUCCESS;
     
    210210static DECLCALLBACK(int) drvCharReceiveLoop(RTTHREAD ThreadSelf, void *pvUser)
    211211{
    212     PDRVCHAR pData = (PDRVCHAR)pvUser;
     212    PDRVCHAR pThis = (PDRVCHAR)pvUser;
    213213    char aBuffer[256], *pBuffer;
    214214    size_t cbRemaining, cbProcessed;
     
    217217    cbRemaining = 0;
    218218    pBuffer = aBuffer;
    219     while (!pData->fShutdown)
     219    while (!pThis->fShutdown)
    220220    {
    221221        if (!cbRemaining)
    222222        {
    223223            /* Get block of data from stream driver. */
    224             if (pData->pDrvStream)
     224            if (pThis->pDrvStream)
    225225            {
    226226                cbRemaining = sizeof(aBuffer);
    227                 rc = pData->pDrvStream->pfnRead(pData->pDrvStream, aBuffer, &cbRemaining);
     227                rc = pThis->pDrvStream->pfnRead(pThis->pDrvStream, aBuffer, &cbRemaining);
    228228                if (RT_FAILURE(rc))
    229229                {
     
    243243            /* Send data to guest. */
    244244            cbProcessed = cbRemaining;
    245             rc = pData->pDrvCharPort->pfnNotifyRead(pData->pDrvCharPort, pBuffer, &cbProcessed);
     245            rc = pThis->pDrvCharPort->pfnNotifyRead(pThis->pDrvCharPort, pBuffer, &cbProcessed);
    246246            if (RT_SUCCESS(rc))
    247247            {
     
    249249                pBuffer += cbProcessed;
    250250                cbRemaining -= cbProcessed;
    251                 STAM_COUNTER_ADD(&pData->StatBytesRead, cbProcessed);
     251                STAM_COUNTER_ADD(&pThis->StatBytesRead, cbProcessed);
    252252            }
    253253            else if (rc == VERR_TIMEOUT)
     
    265265    }
    266266
    267     pData->ReceiveThread = NIL_RTTHREAD;
     267    pThis->ReceiveThread = NIL_RTTHREAD;
    268268
    269269    return VINF_SUCCESS;
     
    300300static DECLCALLBACK(int) drvCharConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    301301{
    302     PDRVCHAR pData = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
     302    PDRVCHAR pThis = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
    303303    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    304304
     
    306306     * Init basic data members and interfaces.
    307307     */
    308     pData->ReceiveThread                    = NIL_RTTHREAD;
    309     pData->fShutdown                        = false;
     308    pThis->ReceiveThread                    = NIL_RTTHREAD;
     309    pThis->fShutdown                        = false;
    310310    /* IBase. */
    311311    pDrvIns->IBase.pfnQueryInterface        = drvCharQueryInterface;
    312312    /* IChar. */
    313     pData->IChar.pfnWrite                   = drvCharWrite;
    314     pData->IChar.pfnSetParameters           = drvCharSetParameters;
    315     pData->IChar.pfnSetModemLines           = drvCharSetModemLines;
     313    pThis->IChar.pfnWrite                   = drvCharWrite;
     314    pThis->IChar.pfnSetParameters           = drvCharSetParameters;
     315    pThis->IChar.pfnSetModemLines           = drvCharSetModemLines;
    316316
    317317    /*
    318318     * Get the ICharPort interface of the above driver/device.
    319319     */
    320     pData->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);
    321     if (!pData->pDrvCharPort)
     320    pThis->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);
     321    if (!pThis->pDrvCharPort)
    322322        return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE, RT_SRC_POS, N_("Char#%d has no char port interface above"), pDrvIns->iInstance);
    323323
     
    329329    if (RT_FAILURE(rc))
    330330        return rc; /* Don't call PDMDrvHlpVMSetError here as we assume that the driver already set an appropriate error */
    331     pData->pDrvStream = (PPDMISTREAM)pBase->pfnQueryInterface(pBase, PDMINTERFACE_STREAM);
    332     if (!pData->pDrvStream)
     331    pThis->pDrvStream = (PPDMISTREAM)pBase->pfnQueryInterface(pBase, PDMINTERFACE_STREAM);
     332    if (!pThis->pDrvStream)
    333333        return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_BELOW, RT_SRC_POS, N_("Char#%d has no stream interface below"), pDrvIns->iInstance);
    334334
    335     rc = RTThreadCreate(&pData->ReceiveThread, drvCharReceiveLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "CharRecv");
     335    rc = RTThreadCreate(&pThis->ReceiveThread, drvCharReceiveLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "CharRecv");
    336336    if (RT_FAILURE(rc))
    337337        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("Char#%d cannot create receive thread"), pDrvIns->iInstance);
    338338
    339     rc = RTSemEventCreate(&pData->SendSem);
     339    rc = RTSemEventCreate(&pThis->SendSem);
    340340    AssertRC(rc);
    341341
    342     rc = RTThreadCreate(&pData->SendThread, drvCharSendLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "CharSend");
     342    rc = RTThreadCreate(&pThis->SendThread, drvCharSendLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "CharSend");
    343343    if (RT_FAILURE(rc))
    344344        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("Char#%d cannot create send thread"), pDrvIns->iInstance);
    345345
    346346
    347     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatBytesWritten,    STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes written",         "/Devices/Char%d/Written", pDrvIns->iInstance);
    348     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatBytesRead,       STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes read",            "/Devices/Char%d/Read", pDrvIns->iInstance);
     347    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatBytesWritten,    STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes written",         "/Devices/Char%d/Written", pDrvIns->iInstance);
     348    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatBytesRead,       STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes read",            "/Devices/Char%d/Read", pDrvIns->iInstance);
    349349
    350350    return VINF_SUCCESS;
     
    362362static DECLCALLBACK(void) drvCharDestruct(PPDMDRVINS pDrvIns)
    363363{
    364     PDRVCHAR     pData = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
     364    PDRVCHAR     pThis = PDMINS_2_DATA(pDrvIns, PDRVCHAR);
    365365
    366366    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    367367
    368     pData->fShutdown = true;
    369     if (pData->ReceiveThread)
    370     {
    371         RTThreadWait(pData->ReceiveThread, 1000, NULL);
    372         if (pData->ReceiveThread != NIL_RTTHREAD)
     368    pThis->fShutdown = true;
     369    if (pThis->ReceiveThread)
     370    {
     371        RTThreadWait(pThis->ReceiveThread, 1000, NULL);
     372        if (pThis->ReceiveThread != NIL_RTTHREAD)
    373373            LogRel(("Char%d: receive thread did not terminate\n", pDrvIns->iInstance));
    374374    }
    375375
    376376    /* Empty the send queue */
    377     pData->iSendQueueTail = pData->iSendQueueHead = 0;
    378 
    379     RTSemEventSignal(pData->SendSem);
    380     RTSemEventDestroy(pData->SendSem);
    381     pData->SendSem = NIL_RTSEMEVENT;
    382 
    383     if (pData->SendThread)
    384     {
    385         RTThreadWait(pData->SendThread, 1000, NULL);
    386         if (pData->SendThread != NIL_RTTHREAD)
     377    pThis->iSendQueueTail = pThis->iSendQueueHead = 0;
     378
     379    RTSemEventSignal(pThis->SendSem);
     380    RTSemEventDestroy(pThis->SendSem);
     381    pThis->SendSem = NIL_RTSEMEVENT;
     382
     383    if (pThis->SendThread)
     384    {
     385        RTThreadWait(pThis->SendThread, 1000, NULL);
     386        if (pThis->SendThread != NIL_RTTHREAD)
    387387            LogRel(("Char%d: send thread did not terminate\n", pDrvIns->iInstance));
    388388    }
  • trunk/src/VBox/Devices/Serial/DrvHostSerial.cpp

    r11268 r11269  
    146146{
    147147    PPDMDRVINS  pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    148     PDRVHOSTSERIAL    pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     148    PDRVHOSTSERIAL    pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    149149    switch (enmInterface)
    150150    {
     
    152152            return &pDrvIns->IBase;
    153153        case PDMINTERFACE_CHAR:
    154             return &pData->IChar;
     154            return &pThis->IChar;
    155155        default:
    156156            return NULL;
     
    164164static DECLCALLBACK(int) drvHostSerialWrite(PPDMICHAR pInterface, const void *pvBuf, size_t cbWrite)
    165165{
    166     PDRVHOSTSERIAL pData = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
     166    PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
    167167    const uint8_t *pbBuffer = (const uint8_t *)pvBuf;
    168168
     
    171171    for (uint32_t i=0;i<cbWrite;i++)
    172172    {
    173         uint32_t idx = pData->iSendQueueHead;
    174 
    175         pData->aSendQueue[idx] = pbBuffer[i];
     173        uint32_t idx = pThis->iSendQueueHead;
     174
     175        pThis->aSendQueue[idx] = pbBuffer[i];
    176176        idx = (idx + 1) & CHAR_MAX_SEND_QUEUE_MASK;
    177177
    178         STAM_COUNTER_INC(&pData->StatBytesWritten);
    179         ASMAtomicXchgU32(&pData->iSendQueueHead, idx);
    180     }
    181     RTSemEventSignal(pData->SendSem);
     178        STAM_COUNTER_INC(&pThis->StatBytesWritten);
     179        ASMAtomicXchgU32(&pThis->iSendQueueHead, idx);
     180    }
     181    RTSemEventSignal(pThis->SendSem);
    182182    return VINF_SUCCESS;
    183183}
     
    185185static DECLCALLBACK(int) drvHostSerialSetParameters(PPDMICHAR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits)
    186186{
    187     PDRVHOSTSERIAL pData = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
     187    PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
    188188#ifdef RT_OS_LINUX
    189189    struct termios *termiosSetup;
     
    300300    termiosSetup->c_lflag = ~(ICANON | ECHO | ECHOE | ISIG);
    301301
    302     tcsetattr(pData->DeviceFile, TCSANOW, termiosSetup);
     302    tcsetattr(pThis->DeviceFile, TCSANOW, termiosSetup);
    303303    RTMemTmpFree(termiosSetup);
    304304#elif defined(RT_OS_WINDOWS)
     
    396396    comSetup->EvtChar = 0;
    397397
    398     SetCommState(pData->hDeviceFile, comSetup);
     398    SetCommState(pThis->hDeviceFile, comSetup);
    399399    RTMemTmpFree(comSetup);
    400400#endif /* RT_OS_WINDOWS */
     
    414414static DECLCALLBACK(int) drvHostSerialSendThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    415415{
    416     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     416    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    417417
    418418    if (pThread->enmState == PDMTHREADSTATE_INITIALIZING)
     
    421421#ifdef RT_OS_WINDOWS
    422422    HANDLE haWait[2];
    423     haWait[0] = pData->hEventSend;
    424     haWait[1] = pData->hHaltEventSem;
     423    haWait[0] = pThis->hEventSend;
     424    haWait[1] = pThis->hHaltEventSem;
    425425#endif
    426426
    427427    while (pThread->enmState == PDMTHREADSTATE_RUNNING)
    428428    {
    429         int rc = RTSemEventWait(pData->SendSem, RT_INDEFINITE_WAIT);
     429        int rc = RTSemEventWait(pThis->SendSem, RT_INDEFINITE_WAIT);
    430430        if (RT_FAILURE(rc))
    431431            break;
     
    435435         */
    436436        while (   pThread->enmState == PDMTHREADSTATE_RUNNING
    437                && pData->iSendQueueTail != pData->iSendQueueHead)
     437               && pThis->iSendQueueTail != pThis->iSendQueueHead)
    438438        {
    439439            unsigned cbProcessed = 1;
     
    441441#if defined(RT_OS_LINUX)
    442442
    443             rc = RTFileWrite(pData->DeviceFile, &pData->aSendQueue[pData->iSendQueueTail], cbProcessed, NULL);
     443            rc = RTFileWrite(pThis->DeviceFile, &pThis->aSendQueue[pThis->iSendQueueTail], cbProcessed, NULL);
    444444
    445445#elif defined(RT_OS_WINDOWS)
    446446
    447447            DWORD cbBytesWritten;
    448             memset(&pData->overlappedSend, 0, sizeof(pData->overlappedSend));
    449             pData->overlappedSend.hEvent = pData->hEventSend;
    450 
    451             if (!WriteFile(pData->hDeviceFile, &pData->aSendQueue[pData->iSendQueueTail], cbProcessed, &cbBytesWritten, &pData->overlappedSend))
     448            memset(&pThis->overlappedSend, 0, sizeof(pThis->overlappedSend));
     449            pThis->overlappedSend.hEvent = pThis->hEventSend;
     450
     451            if (!WriteFile(pThis->hDeviceFile, &pThis->aSendQueue[pThis->iSendQueueTail], cbProcessed, &cbBytesWritten, &pThis->overlappedSend))
    452452            {
    453453                DWORD dwRet = GetLastError();
     
    470470            {
    471471                Assert(cbProcessed);
    472                 pData->iSendQueueTail++;
    473                 pData->iSendQueueTail &= CHAR_MAX_SEND_QUEUE_MASK;
     472                pThis->iSendQueueTail++;
     473                pThis->iSendQueueTail &= CHAR_MAX_SEND_QUEUE_MASK;
    474474            }
    475475            else if (RT_FAILURE(rc))
     
    493493static DECLCALLBACK(int) drvHostSerialWakeupSendThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    494494{
    495     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     495    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    496496    int rc;
    497497
    498     rc = RTSemEventSignal(pData->SendSem);
     498    rc = RTSemEventSignal(pThis->SendSem);
    499499    if (RT_FAILURE(rc))
    500500        return rc;
    501501
    502502#ifdef RT_OS_WINDOWS
    503     if (!SetEvent(pData->hHaltEventSem))
     503    if (!SetEvent(pThis->hHaltEventSem))
    504504        return RTErrConvertFromWin32(GetLastError());
    505505#endif
     
    522522static DECLCALLBACK(int) drvHostSerialRecvThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    523523{
    524     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     524    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    525525    uint8_t abBuffer[256];
    526526    uint8_t *pbBuffer = NULL;
     
    533533#ifdef RT_OS_WINDOWS
    534534    HANDLE haWait[2];
    535     haWait[0] = pData->hEventRecv;
    536     haWait[1] = pData->hHaltEventSem;
     535    haWait[0] = pThis->hEventRecv;
     536    haWait[1] = pThis->hHaltEventSem;
    537537#endif
    538538
     
    547547            size_t cbRead;
    548548            struct pollfd aFDs[2];
    549             aFDs[0].fd      = pData->DeviceFile;
     549            aFDs[0].fd      = pThis->DeviceFile;
    550550            aFDs[0].events  = POLLIN;
    551551            aFDs[0].revents = 0;
    552             aFDs[1].fd      = pData->WakeupPipeR;
     552            aFDs[1].fd      = pThis->WakeupPipeR;
    553553            aFDs[1].events  = POLLIN | POLLERR | POLLHUP;
    554554            aFDs[1].revents = 0;
     
    569569                char ch;
    570570                size_t cbRead;
    571                 RTFileRead(pData->WakeupPipeR, &ch, 1, &cbRead);
     571                RTFileRead(pThis->WakeupPipeR, &ch, 1, &cbRead);
    572572                continue;
    573573            }
    574             rc = RTFileRead(pData->DeviceFile, abBuffer, sizeof(abBuffer), &cbRead);
     574            rc = RTFileRead(pThis->DeviceFile, abBuffer, sizeof(abBuffer), &cbRead);
    575575            if (RT_FAILURE(rc))
    576576            {
     
    585585            DWORD dwNumberOfBytesTransferred;
    586586
    587             memset(&pData->overlappedRecv, 0, sizeof(pData->overlappedRecv));
    588             pData->overlappedRecv.hEvent = pData->hEventRecv;
    589 
    590             if (!WaitCommEvent(pData->hDeviceFile, &dwEventMask, &pData->overlappedRecv))
     587            memset(&pThis->overlappedRecv, 0, sizeof(pThis->overlappedRecv));
     588            pThis->overlappedRecv.hEvent = pThis->hEventRecv;
     589
     590            if (!WaitCommEvent(pThis->hDeviceFile, &dwEventMask, &pThis->overlappedRecv))
    591591            {
    592592                DWORD dwRet = GetLastError();
     
    613613            if (dwEventMask & EV_RXCHAR)
    614614            {
    615                 if (!ReadFile(pData->hDeviceFile, abBuffer, sizeof(abBuffer), &dwNumberOfBytesTransferred, &pData->overlappedRecv))
     615                if (!ReadFile(pThis->hDeviceFile, abBuffer, sizeof(abBuffer), &dwNumberOfBytesTransferred, &pThis->overlappedRecv))
    616616                {
    617617                    LogRel(("HostSerial#%d: Read failed with error %Vrc; terminating the worker thread.\n", pDrvIns->iInstance, RTErrConvertFromWin32(GetLastError())));
     
    627627
    628628                /* Get the new state */
    629                 if (GetCommModemStatus(pData->hDeviceFile, &dwNewStatusLinesState))
     629                if (GetCommModemStatus(pThis->hDeviceFile, &dwNewStatusLinesState))
    630630                {
    631631                    if (dwNewStatusLinesState & MS_RLSD_ON)
     
    637637                    if (dwNewStatusLinesState & MS_CTS_ON)
    638638                        uNewStatusLinesState |= PDM_ICHAR_STATUS_LINES_CTS;
    639                     rc = pData->pDrvCharPort->pfnNotifyStatusLinesChanged(pData->pDrvCharPort, uNewStatusLinesState);
     639                    rc = pThis->pDrvCharPort->pfnNotifyStatusLinesChanged(pThis->pDrvCharPort, uNewStatusLinesState);
    640640                    if (RT_FAILURE(rc))
    641641                    {
     
    659659            /* Send data to the guest. */
    660660            size_t cbProcessed = cbRemaining;
    661             rc = pData->pDrvCharPort->pfnNotifyRead(pData->pDrvCharPort, pbBuffer, &cbProcessed);
     661            rc = pThis->pDrvCharPort->pfnNotifyRead(pThis->pDrvCharPort, pbBuffer, &cbProcessed);
    662662            if (RT_SUCCESS(rc))
    663663            {
     
    665665                pbBuffer += cbProcessed;
    666666                cbRemaining -= cbProcessed;
    667                 STAM_COUNTER_ADD(&pData->StatBytesRead, cbProcessed);
     667                STAM_COUNTER_ADD(&pThis->StatBytesRead, cbProcessed);
    668668            }
    669669            else if (rc == VERR_TIMEOUT)
     
    693693static DECLCALLBACK(int) drvHostSerialWakeupRecvThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    694694{
    695     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     695    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    696696#ifdef RT_OS_LINUX
    697     return RTFileWrite(pData->WakeupPipeW, "", 1, NULL);
     697    return RTFileWrite(pThis->WakeupPipeW, "", 1, NULL);
    698698#elif defined(RT_OS_WINDOWS)
    699     if (!SetEvent(pData->hHaltEventSem))
     699    if (!SetEvent(pThis->hHaltEventSem))
    700700        return RTErrConvertFromWin32(GetLastError());
    701701    return VINF_SUCCESS;
     
    720720static DECLCALLBACK(int) drvHostSerialMonitorThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    721721{
    722     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     722    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    723723    int rc = VINF_SUCCESS;
    724724    unsigned uStatusLinesToCheck = 0;
     
    737737         * Wait for status line change.
    738738         */
    739         rc = ioctl(pData->DeviceFile, TIOCMIWAIT, &uStatusLinesToCheck);
     739        rc = ioctl(pThis->DeviceFile, TIOCMIWAIT, &uStatusLinesToCheck);
    740740        if (pThread->enmState != PDMTHREADSTATE_RUNNING)
    741741            break;
     
    745745            PDMDrvHlpVMSetRuntimeError(pDrvIns, false, "DrvHostSerialFail",
    746746                                       N_("Ioctl failed for serial host device '%s' (%Vrc). The device will not work properly"),
    747                                        pData->pszDevicePath, RTErrConvertFromErrno(errno));
     747                                       pThis->pszDevicePath, RTErrConvertFromErrno(errno));
    748748            break;
    749749        }
    750750
    751         rc = ioctl(pData->DeviceFile, TIOCMGET, &statusLines);
     751        rc = ioctl(pThis->DeviceFile, TIOCMGET, &statusLines);
    752752        if (rc < 0)
    753753            goto ioctl_error;
     
    761761        if (statusLines & TIOCM_CTS)
    762762            newStatusLine |= PDM_ICHAR_STATUS_LINES_CTS;
    763         rc = pData->pDrvCharPort->pfnNotifyStatusLinesChanged(pData->pDrvCharPort, newStatusLine);
     763        rc = pThis->pDrvCharPort->pfnNotifyStatusLinesChanged(pThis->pDrvCharPort, newStatusLine);
    764764    }
    765765
     
    778778static DECLCALLBACK(int) drvHostSerialWakeupMonitorThread(PPDMDRVINS pDrvIns, PPDMTHREAD pThread)
    779779{
    780     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     780    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    781781    int rc;
    782782    unsigned int uSerialLineFlags;
     
    793793
    794794    /* Get current status of control lines. */
    795     rc = ioctl(pData->DeviceFile, TIOCMGET, &uSerialLineStatus);
     795    rc = ioctl(pThis->DeviceFile, TIOCMGET, &uSerialLineStatus);
    796796    if (rc < 0)
    797797        goto ioctl_error;
    798798
    799799    uSerialLineFlags = TIOCM_LOOP;
    800     rc = ioctl(pData->DeviceFile, TIOCMBIS, &uSerialLineFlags);
     800    rc = ioctl(pThis->DeviceFile, TIOCMBIS, &uSerialLineFlags);
    801801    if (rc < 0)
    802802        goto ioctl_error;
     
    809809    uSerialLineFlags = TIOCM_RTS;
    810810
    811     rc = ioctl(pData->DeviceFile, uIoctl, &uSerialLineFlags);
     811    rc = ioctl(pThis->DeviceFile, uIoctl, &uSerialLineFlags);
    812812    if (rc < 0)
    813813        goto ioctl_error;
     
    816816    uIoctl = (uIoctl == TIOCMBIC) ? TIOCMBIS : TIOCMBIC;
    817817
    818     rc = ioctl(pData->DeviceFile, uIoctl, &uSerialLineFlags);
     818    rc = ioctl(pThis->DeviceFile, uIoctl, &uSerialLineFlags);
    819819    if (rc < 0)
    820820        goto ioctl_error;
     
    824824     */
    825825    uSerialLineFlags = TIOCM_LOOP;
    826     rc = ioctl(pData->DeviceFile, TIOCMBIC, &uSerialLineFlags);
     826    rc = ioctl(pThis->DeviceFile, TIOCMBIC, &uSerialLineFlags);
    827827    if (rc >= 0)
    828828        return VINF_SUCCESS;
     
    831831    PDMDrvHlpVMSetRuntimeError(pDrvIns, false, "DrvHostSerialFail",
    832832                                N_("Ioctl failed for serial host device '%s' (%Vrc). The device will not work properly"),
    833                                 pData->pszDevicePath, RTErrConvertFromErrno(errno));
     833                                pThis->pszDevicePath, RTErrConvertFromErrno(errno));
    834834    return VINF_SUCCESS;
    835835}
     
    846846static DECLCALLBACK(int) drvHostSerialSetModemLines(PPDMICHAR pInterface, bool RequestToSend, bool DataTerminalReady)
    847847{
    848     PDRVHOSTSERIAL pData = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
     848    PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface);
    849849
    850850#ifdef RT_OS_LINUX
     
    863863
    864864    if (modemStateSet)
    865         ioctl(pData->DeviceFile, TIOCMBIS, &modemStateSet);
     865        ioctl(pThis->DeviceFile, TIOCMBIS, &modemStateSet);
    866866
    867867    if (modemStateClear)
    868         ioctl(pData->DeviceFile, TIOCMBIC, &modemStateClear);
     868        ioctl(pThis->DeviceFile, TIOCMBIC, &modemStateClear);
    869869#elif defined(RT_OS_WINDOWS)
    870870    if (RequestToSend)
    871         EscapeCommFunction(pData->hDeviceFile, SETRTS);
     871        EscapeCommFunction(pThis->hDeviceFile, SETRTS);
    872872    else
    873         EscapeCommFunction(pData->hDeviceFile, CLRRTS);
     873        EscapeCommFunction(pThis->hDeviceFile, CLRRTS);
    874874
    875875    if (DataTerminalReady)
    876         EscapeCommFunction(pData->hDeviceFile, SETDTR);
     876        EscapeCommFunction(pThis->hDeviceFile, SETDTR);
    877877    else
    878         EscapeCommFunction(pData->hDeviceFile, CLRDTR);
     878        EscapeCommFunction(pThis->hDeviceFile, CLRDTR);
    879879#endif
    880880
     
    898898static DECLCALLBACK(int) drvHostSerialConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    899899{
    900     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     900    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    901901    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    902902
     
    905905     */
    906906#ifdef RT_OS_LINUX
    907     pData->DeviceFile  = NIL_RTFILE;
    908     pData->WakeupPipeR = NIL_RTFILE;
    909     pData->WakeupPipeW = NIL_RTFILE;
     907    pThis->DeviceFile  = NIL_RTFILE;
     908    pThis->WakeupPipeR = NIL_RTFILE;
     909    pThis->WakeupPipeW = NIL_RTFILE;
    910910#endif
    911911    /* IBase. */
    912912    pDrvIns->IBase.pfnQueryInterface        = drvHostSerialQueryInterface;
    913913    /* IChar. */
    914     pData->IChar.pfnWrite                   = drvHostSerialWrite;
    915     pData->IChar.pfnSetParameters           = drvHostSerialSetParameters;
    916     pData->IChar.pfnSetModemLines           = drvHostSerialSetModemLines;
     914    pThis->IChar.pfnWrite                   = drvHostSerialWrite;
     915    pThis->IChar.pfnSetParameters           = drvHostSerialSetParameters;
     916    pThis->IChar.pfnSetModemLines           = drvHostSerialSetModemLines;
    917917
    918918    /*
     
    920920     */
    921921    /* Device */
    922     int rc = CFGMR3QueryStringAlloc(pCfgHandle, "DevicePath", &pData->pszDevicePath);
     922    int rc = CFGMR3QueryStringAlloc(pCfgHandle, "DevicePath", &pThis->pszDevicePath);
    923923    if (RT_FAILURE(rc))
    924924    {
     
    932932#ifdef RT_OS_WINDOWS
    933933
    934     pData->hHaltEventSem = CreateEvent(NULL, FALSE, FALSE, NULL);
    935     AssertReturn(pData->hHaltEventSem != NULL, VERR_NO_MEMORY);
    936 
    937     pData->hEventRecv = CreateEvent(NULL, FALSE, FALSE, NULL);
    938     AssertReturn(pData->hEventRecv != NULL, VERR_NO_MEMORY);
    939 
    940     pData->hEventSend = CreateEvent(NULL, FALSE, FALSE, NULL);
    941     AssertReturn(pData->hEventSend != NULL, VERR_NO_MEMORY);
    942 
    943     HANDLE hFile = CreateFile(pData->pszDevicePath,
     934    pThis->hHaltEventSem = CreateEvent(NULL, FALSE, FALSE, NULL);
     935    AssertReturn(pThis->hHaltEventSem != NULL, VERR_NO_MEMORY);
     936
     937    pThis->hEventRecv = CreateEvent(NULL, FALSE, FALSE, NULL);
     938    AssertReturn(pThis->hEventRecv != NULL, VERR_NO_MEMORY);
     939
     940    pThis->hEventSend = CreateEvent(NULL, FALSE, FALSE, NULL);
     941    AssertReturn(pThis->hEventSend != NULL, VERR_NO_MEMORY);
     942
     943    HANDLE hFile = CreateFile(pThis->pszDevicePath,
    944944                              GENERIC_READ | GENERIC_WRITE,
    945945                              0, // must be opened with exclusive access
     
    952952    else
    953953    {
    954         pData->hDeviceFile = hFile;
     954        pThis->hDeviceFile = hFile;
    955955        /* for overlapped read */
    956956        if (!SetCommMask(hFile, EV_RXCHAR | EV_CTS | EV_DSR | EV_RING | EV_RLSD))
     
    964964#else
    965965
    966     rc = RTFileOpen(&pData->DeviceFile, pData->pszDevicePath, RTFILE_O_OPEN | RTFILE_O_READWRITE);
     966    rc = RTFileOpen(&pThis->DeviceFile, pThis->pszDevicePath, RTFILE_O_OPEN | RTFILE_O_READWRITE);
    967967
    968968#endif
     
    970970    if (RT_FAILURE(rc))
    971971    {
    972         AssertMsgFailed(("Could not open host device %s, rc=%Vrc\n", pData->pszDevicePath, rc));
     972        AssertMsgFailed(("Could not open host device %s, rc=%Vrc\n", pThis->pszDevicePath, rc));
    973973        switch (rc)
    974974        {
     
    984984                                              "of that device"),
    985985#endif
    986                                            pData->pszDevicePath, pData->pszDevicePath);
     986                                           pThis->pszDevicePath, pThis->pszDevicePath);
    987987           default:
    988988                return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS,
    989989                                           N_("Failed to open host device '%s'"),
    990                                            pData->pszDevicePath);
     990                                           pThis->pszDevicePath);
    991991        }
    992992    }
     
    995995#ifdef RT_OS_LINUX
    996996
    997     fcntl(pData->DeviceFile, F_SETFL, O_NONBLOCK);
     997    fcntl(pThis->DeviceFile, F_SETFL, O_NONBLOCK);
    998998    int aFDs[2];
    999999    if (pipe(aFDs) != 0)
     
    10031003        return rc;
    10041004    }
    1005     pData->WakeupPipeR = aFDs[0];
    1006     pData->WakeupPipeW = aFDs[1];
     1005    pThis->WakeupPipeR = aFDs[0];
     1006    pThis->WakeupPipeW = aFDs[1];
    10071007
    10081008#elif defined(RT_OS_WINDOWS)
     
    10171017    comTimeout.WriteTotalTimeoutConstant   = 0;
    10181018
    1019     SetCommTimeouts(pData->hDeviceFile, &comTimeout);
     1019    SetCommTimeouts(pThis->hDeviceFile, &comTimeout);
    10201020
    10211021#endif
     
    10241024     * Get the ICharPort interface of the above driver/device.
    10251025     */
    1026     pData->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);
    1027     if (!pData->pDrvCharPort)
     1026    pThis->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);
     1027    if (!pThis->pDrvCharPort)
    10281028        return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE, RT_SRC_POS, N_("HostSerial#%d has no char port interface above"), pDrvIns->iInstance);
    10291029
    1030     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pRecvThread, pData, drvHostSerialRecvThread, drvHostSerialWakeupRecvThread, 0, RTTHREADTYPE_IO, "SerRecv");
     1030    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pRecvThread, pThis, drvHostSerialRecvThread, drvHostSerialWakeupRecvThread, 0, RTTHREADTYPE_IO, "SerRecv");
    10311031    if (RT_FAILURE(rc))
    10321032        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("HostSerial#%d cannot create receive thread"), pDrvIns->iInstance);
    10331033
    1034     rc = RTSemEventCreate(&pData->SendSem);
     1034    rc = RTSemEventCreate(&pThis->SendSem);
    10351035    AssertRC(rc);
    10361036
    1037     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pSendThread, pData, drvHostSerialSendThread, drvHostSerialWakeupSendThread, 0, RTTHREADTYPE_IO, "SerSend");
     1037    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pSendThread, pThis, drvHostSerialSendThread, drvHostSerialWakeupSendThread, 0, RTTHREADTYPE_IO, "SerSend");
    10381038    if (RT_FAILURE(rc))
    10391039        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("HostSerial#%d cannot create send thread"), pDrvIns->iInstance);
     
    10411041#if defined(RT_OS_LINUX)
    10421042    /* Linux needs a separate thread which monitors the status lines. */
    1043     rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pData->pMonitorThread, pData, drvHostSerialMonitorThread, drvHostSerialWakeupMonitorThread, 0, RTTHREADTYPE_IO, "SerMon");
     1043    rc = PDMDrvHlpPDMThreadCreate(pDrvIns, &pThis->pMonitorThread, pThis, drvHostSerialMonitorThread, drvHostSerialWakeupMonitorThread, 0, RTTHREADTYPE_IO, "SerMon");
    10441044    if (RT_FAILURE(rc))
    10451045        return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("HostSerial#%d cannot create monitor thread"), pDrvIns->iInstance);
    10461046#endif
    10471047
    1048     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatBytesWritten,    STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes written",         "/Devices/HostSerial%d/Written", pDrvIns->iInstance);
    1049     PDMDrvHlpSTAMRegisterF(pDrvIns, &pData->StatBytesRead,       STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes read",            "/Devices/HostSerial%d/Read", pDrvIns->iInstance);
     1048    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatBytesWritten,    STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes written",         "/Devices/HostSerial%d/Written", pDrvIns->iInstance);
     1049    PDMDrvHlpSTAMRegisterF(pDrvIns, &pThis->StatBytesRead,       STAMTYPE_COUNTER, STAMVISIBILITY_USED, STAMUNIT_BYTES, "Nr of bytes read",            "/Devices/HostSerial%d/Read", pDrvIns->iInstance);
    10501050
    10511051    return VINF_SUCCESS;
     
    10631063static DECLCALLBACK(void) drvHostSerialDestruct(PPDMDRVINS pDrvIns)
    10641064{
    1065     PDRVHOSTSERIAL pData = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
     1065    PDRVHOSTSERIAL pThis = PDMINS_2_DATA(pDrvIns, PDRVHOSTSERIAL);
    10661066
    10671067    LogFlow(("%s: iInstance=%d\n", __FUNCTION__, pDrvIns->iInstance));
    10681068
    10691069    /* Empty the send queue */
    1070     pData->iSendQueueTail = pData->iSendQueueHead = 0;
    1071 
    1072     RTSemEventDestroy(pData->SendSem);
    1073     pData->SendSem = NIL_RTSEMEVENT;
     1070    pThis->iSendQueueTail = pThis->iSendQueueHead = 0;
     1071
     1072    RTSemEventDestroy(pThis->SendSem);
     1073    pThis->SendSem = NIL_RTSEMEVENT;
    10741074
    10751075#if defined(RT_OS_LINUX)
    10761076
    1077     if (pData->WakeupPipeW != NIL_RTFILE)
     1077    if (pThis->WakeupPipeW != NIL_RTFILE)
    10781078    {
    1079         int rc = RTFileClose(pData->WakeupPipeW);
     1079        int rc = RTFileClose(pThis->WakeupPipeW);
    10801080        AssertRC(rc);
    1081         pData->WakeupPipeW = NIL_RTFILE;
    1082     }
    1083     if (pData->WakeupPipeR != NIL_RTFILE)
     1081        pThis->WakeupPipeW = NIL_RTFILE;
     1082    }
     1083    if (pThis->WakeupPipeR != NIL_RTFILE)
    10841084    {
    1085         int rc = RTFileClose(pData->WakeupPipeR);
     1085        int rc = RTFileClose(pThis->WakeupPipeR);
    10861086        AssertRC(rc);
    1087         pData->WakeupPipeR = NIL_RTFILE;
    1088     }
    1089     if (pData->DeviceFile != NIL_RTFILE)
     1087        pThis->WakeupPipeR = NIL_RTFILE;
     1088    }
     1089    if (pThis->DeviceFile != NIL_RTFILE)
    10901090    {
    1091         int rc = RTFileClose(pData->DeviceFile);
     1091        int rc = RTFileClose(pThis->DeviceFile);
    10921092        AssertRC(rc);
    1093         pData->DeviceFile = NIL_RTFILE;
     1093        pThis->DeviceFile = NIL_RTFILE;
    10941094    }
    10951095
    10961096#elif defined(RT_OS_WINDOWS)
    10971097
    1098     CloseHandle(pData->hEventRecv);
    1099     CloseHandle(pData->hEventSend);
    1100     CancelIo(pData->hDeviceFile);
    1101     CloseHandle(pData->hDeviceFile);
     1098    CloseHandle(pThis->hEventRecv);
     1099    CloseHandle(pThis->hEventSend);
     1100    CancelIo(pThis->hDeviceFile);
     1101    CloseHandle(pThis->hDeviceFile);
    11021102
    11031103#endif
  • trunk/src/VBox/Devices/Serial/DrvNamedPipe.cpp

    r11267 r11269  
    103103{
    104104    int rc = VINF_SUCCESS;
    105     PDRVNAMEDPIPE pData = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
    106     LogFlow(("%s: pvBuf=%p cbRead=%#x (%s)\n", __FUNCTION__, pvBuf, cbRead, pData->pszLocation));
     105    PDRVNAMEDPIPE pThis = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
     106    LogFlow(("%s: pvBuf=%p cbRead=%#x (%s)\n", __FUNCTION__, pvBuf, cbRead, pThis->pszLocation));
    107107
    108108    Assert(pvBuf);
    109109#ifdef RT_OS_WINDOWS
    110     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
     110    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
    111111    {
    112112        DWORD cbReallyRead;
    113         pData->OverlappedRead.Offset     = 0;
    114         pData->OverlappedRead.OffsetHigh = 0;
    115         if (!ReadFile(pData->NamedPipe, pvBuf, *cbRead, &cbReallyRead, &pData->OverlappedRead))
     113        pThis->OverlappedRead.Offset     = 0;
     114        pThis->OverlappedRead.OffsetHigh = 0;
     115        if (!ReadFile(pThis->NamedPipe, pvBuf, *cbRead, &cbReallyRead, &pThis->OverlappedRead))
    116116        {
    117117            DWORD uError = GetLastError();
     
    133133
    134134                    /* Wait for incoming bytes. */
    135                     if (GetOverlappedResult(pData->NamedPipe, &pData->OverlappedRead, &cbReallyRead, TRUE) == FALSE)
     135                    if (GetOverlappedResult(pThis->NamedPipe, &pThis->OverlappedRead, &cbReallyRead, TRUE) == FALSE)
    136136                        uError = GetLastError();
    137137                }
     
    144144        if (RT_FAILURE(rc))
    145145        {
    146             Log(("drvNamedPipeRead: FileRead returned %Vrc fShutdown=%d\n", rc, pData->fShutdown));
    147             if (    !pData->fShutdown
     146            Log(("drvNamedPipeRead: FileRead returned %Vrc fShutdown=%d\n", rc, pThis->fShutdown));
     147            if (    !pThis->fShutdown
    148148                &&  (   rc == VERR_EOF
    149149                     || rc == VERR_BROKEN_PIPE
     
    152152
    153153            {
    154                 FlushFileBuffers(pData->NamedPipe);
    155                 DisconnectNamedPipe(pData->NamedPipe);
    156                 if (!pData->fIsServer)
     154                FlushFileBuffers(pThis->NamedPipe);
     155                DisconnectNamedPipe(pThis->NamedPipe);
     156                if (!pThis->fIsServer)
    157157                {
    158                     CloseHandle(pData->NamedPipe);
    159                     pData->NamedPipe = INVALID_HANDLE_VALUE;
     158                    CloseHandle(pThis->NamedPipe);
     159                    pThis->NamedPipe = INVALID_HANDLE_VALUE;
    160160                }
    161161                /* pretend success */
     
    167167    }
    168168#else /* !RT_OS_WINDOWS */
    169     if (pData->LocalSocket != NIL_RTSOCKET)
     169    if (pThis->LocalSocket != NIL_RTSOCKET)
    170170    {
    171171        ssize_t cbReallyRead;
    172         cbReallyRead = recv(pData->LocalSocket, pvBuf, *cbRead, 0);
     172        cbReallyRead = recv(pThis->LocalSocket, pvBuf, *cbRead, 0);
    173173        if (cbReallyRead == 0)
    174174        {
    175             RTSOCKET tmp = pData->LocalSocket;
    176             pData->LocalSocket = NIL_RTSOCKET;
     175            RTSOCKET tmp = pThis->LocalSocket;
     176            pThis->LocalSocket = NIL_RTSOCKET;
    177177            close(tmp);
    178178        }
     
    200200{
    201201    int rc = VINF_SUCCESS;
    202     PDRVNAMEDPIPE pData = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
    203     LogFlow(("%s: pvBuf=%p cbWrite=%#x (%s)\n", __FUNCTION__, pvBuf, cbWrite, pData->pszLocation));
     202    PDRVNAMEDPIPE pThis = PDMISTREAM_2_DRVNAMEDPIPE(pInterface);
     203    LogFlow(("%s: pvBuf=%p cbWrite=%#x (%s)\n", __FUNCTION__, pvBuf, cbWrite, pThis->pszLocation));
    204204
    205205    Assert(pvBuf);
    206206#ifdef RT_OS_WINDOWS
    207     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
     207    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
    208208    {
    209209        unsigned cbWritten;
    210         pData->OverlappedWrite.Offset     = 0;
    211         pData->OverlappedWrite.OffsetHigh = 0;
    212         if (!WriteFile(pData->NamedPipe, pvBuf, *cbWrite, NULL, &pData->OverlappedWrite))
     210        pThis->OverlappedWrite.Offset     = 0;
     211        pThis->OverlappedWrite.OffsetHigh = 0;
     212        if (!WriteFile(pThis->NamedPipe, pvBuf, *cbWrite, NULL, &pThis->OverlappedWrite))
    213213        {
    214214            DWORD uError = GetLastError();
     
    229229            {
    230230                /* Wait for the write to complete. */
    231                 if (GetOverlappedResult(pData->NamedPipe, &pData->OverlappedWrite, (DWORD *)&cbWritten, TRUE) == FALSE)
     231                if (GetOverlappedResult(pThis->NamedPipe, &pThis->OverlappedWrite, (DWORD *)&cbWritten, TRUE) == FALSE)
    232232                    uError = GetLastError();
    233233            }
     
    241241                ||  rc == VERR_BROKEN_PIPE)
    242242            {
    243                 FlushFileBuffers(pData->NamedPipe);
    244                 DisconnectNamedPipe(pData->NamedPipe);
    245                 if (!pData->fIsServer)
     243                FlushFileBuffers(pThis->NamedPipe);
     244                DisconnectNamedPipe(pThis->NamedPipe);
     245                if (!pThis->fIsServer)
    246246                {
    247                     CloseHandle(pData->NamedPipe);
    248                     pData->NamedPipe = INVALID_HANDLE_VALUE;
     247                    CloseHandle(pThis->NamedPipe);
     248                    pThis->NamedPipe = INVALID_HANDLE_VALUE;
    249249                }
    250250                /* pretend success */
     
    256256    }
    257257#else /* !RT_OS_WINDOWS */
    258     if (pData->LocalSocket != NIL_RTSOCKET)
     258    if (pThis->LocalSocket != NIL_RTSOCKET)
    259259    {
    260260        ssize_t cbWritten;
    261         cbWritten = send(pData->LocalSocket, pvBuf, *cbWrite, 0);
     261        cbWritten = send(pThis->LocalSocket, pvBuf, *cbWrite, 0);
    262262        if (cbWritten == 0)
    263263        {
    264             RTSOCKET tmp = pData->LocalSocket;
    265             pData->LocalSocket = NIL_RTSOCKET;
     264            RTSOCKET tmp = pThis->LocalSocket;
     265            pThis->LocalSocket = NIL_RTSOCKET;
    266266            close(tmp);
    267267        }
     
    316316static DECLCALLBACK(int) drvNamedPipeListenLoop(RTTHREAD ThreadSelf, void *pvUser)
    317317{
    318     PDRVNAMEDPIPE   pData = (PDRVNAMEDPIPE)pvUser;
     318    PDRVNAMEDPIPE   pThis = (PDRVNAMEDPIPE)pvUser;
    319319    int             rc = VINF_SUCCESS;
    320320#ifdef RT_OS_WINDOWS
    321     HANDLE          NamedPipe = pData->NamedPipe;
     321    HANDLE          NamedPipe = pThis->NamedPipe;
    322322    HANDLE          hEvent = CreateEvent(NULL, TRUE, FALSE, 0);
    323323#endif
    324324
    325     while (RT_LIKELY(!pData->fShutdown))
     325    while (RT_LIKELY(!pThis->fShutdown))
    326326    {
    327327#ifdef RT_OS_WINDOWS
     
    333333        BOOL fConnected = ConnectNamedPipe(NamedPipe, &overlapped);
    334334        if (    !fConnected
    335             &&  !pData->fShutdown)
     335            &&  !pThis->fShutdown)
    336336        {
    337337            DWORD hrc = GetLastError();
     
    342342
    343343                hrc = 0;
    344                 if (GetOverlappedResult(pData->NamedPipe, &overlapped, &dummy, TRUE) == FALSE)
     344                if (GetOverlappedResult(pThis->NamedPipe, &overlapped, &dummy, TRUE) == FALSE)
    345345                    hrc = GetLastError();
    346346
    347347            }
    348348
    349             if (pData->fShutdown)
     349            if (pThis->fShutdown)
    350350                break;
    351351
    352352            if (hrc == ERROR_PIPE_CONNECTED)
    353353            {
    354                 RTSemEventWait(pData->ListenSem, 250);
     354                RTSemEventWait(pThis->ListenSem, 250);
    355355            }
    356356            else if (hrc != ERROR_SUCCESS)
    357357            {
    358358                rc = RTErrConvertFromWin32(hrc);
    359                 LogRel(("NamedPipe%d: ConnectNamedPipe failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     359                LogRel(("NamedPipe%d: ConnectNamedPipe failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    360360                break;
    361361            }
    362362        }
    363363#else /* !RT_OS_WINDOWS */
    364         if (listen(pData->LocalSocketServer, 0) == -1)
     364        if (listen(pThis->LocalSocketServer, 0) == -1)
    365365        {
    366366            rc = RTErrConvertFromErrno(errno);
    367             LogRel(("NamedPipe%d: listen failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     367            LogRel(("NamedPipe%d: listen failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    368368            break;
    369369        }
    370         int s = accept(pData->LocalSocketServer, NULL, NULL);
     370        int s = accept(pThis->LocalSocketServer, NULL, NULL);
    371371        if (s == -1)
    372372        {
    373373            rc = RTErrConvertFromErrno(errno);
    374             LogRel(("NamedPipe%d: accept failed, rc=%Vrc\n", pData->pDrvIns->iInstance, rc));
     374            LogRel(("NamedPipe%d: accept failed, rc=%Vrc\n", pThis->pDrvIns->iInstance, rc));
    375375            break;
    376376        }
    377377        else
    378378        {
    379             if (pData->LocalSocket != NIL_RTSOCKET)
    380             {
    381                 LogRel(("NamedPipe%d: only single connection supported\n", pData->pDrvIns->iInstance));
     379            if (pThis->LocalSocket != NIL_RTSOCKET)
     380            {
     381                LogRel(("NamedPipe%d: only single connection supported\n", pThis->pDrvIns->iInstance));
    382382                close(s);
    383383            }
    384384            else
    385                 pData->LocalSocket = s;
     385                pThis->LocalSocket = s;
    386386        }
    387387#endif /* !RT_OS_WINDOWS */
     
    391391    CloseHandle(hEvent);
    392392#endif
    393     pData->ListenThread = NIL_RTTHREAD;
     393    pThis->ListenThread = NIL_RTTHREAD;
    394394    return VINF_SUCCESS;
    395395}
     
    410410    int rc;
    411411    char *pszLocation = NULL;
    412     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     412    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    413413
    414414    /*
    415415     * Init the static parts.
    416416     */
    417     pData->pDrvIns                      = pDrvIns;
    418     pData->pszLocation                  = NULL;
    419     pData->fIsServer                    = false;
    420 #ifdef RT_OS_WINDOWS
    421     pData->NamedPipe                    = INVALID_HANDLE_VALUE;
    422 #else /* !RT_OS_WINDOWS */
    423     pData->LocalSocketServer            = NIL_RTSOCKET;
    424     pData->LocalSocket                  = NIL_RTSOCKET;
    425 #endif /* !RT_OS_WINDOWS */
    426     pData->ListenThread                 = NIL_RTTHREAD;
    427     pData->fShutdown                    = false;
     417    pThis->pDrvIns                      = pDrvIns;
     418    pThis->pszLocation                  = NULL;
     419    pThis->fIsServer                    = false;
     420#ifdef RT_OS_WINDOWS
     421    pThis->NamedPipe                    = INVALID_HANDLE_VALUE;
     422#else /* !RT_OS_WINDOWS */
     423    pThis->LocalSocketServer            = NIL_RTSOCKET;
     424    pThis->LocalSocket                  = NIL_RTSOCKET;
     425#endif /* !RT_OS_WINDOWS */
     426    pThis->ListenThread                 = NIL_RTTHREAD;
     427    pThis->fShutdown                    = false;
    428428    /* IBase */
    429429    pDrvIns->IBase.pfnQueryInterface    = drvNamedPipeQueryInterface;
    430430    /* IStream */
    431     pData->IStream.pfnRead              = drvNamedPipeRead;
    432     pData->IStream.pfnWrite             = drvNamedPipeWrite;
     431    pThis->IStream.pfnRead              = drvNamedPipeRead;
     432    pThis->IStream.pfnWrite             = drvNamedPipeWrite;
    433433
    434434    /*
     
    447447        goto out;
    448448    }
    449     pData->pszLocation = pszLocation;
     449    pThis->pszLocation = pszLocation;
    450450
    451451    bool fIsServer;
     
    456456        goto out;
    457457    }
    458     pData->fIsServer = fIsServer;
     458    pThis->fIsServer = fIsServer;
    459459
    460460#ifdef RT_OS_WINDOWS
    461461    if (fIsServer)
    462462    {
    463         HANDLE hPipe = CreateNamedPipe(pData->pszLocation, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL);
     463        HANDLE hPipe = CreateNamedPipe(pThis->pszLocation, PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, 1, 32, 32, 10000, NULL);
    464464        if (hPipe == INVALID_HANDLE_VALUE)
    465465        {
    466466            rc = RTErrConvertFromWin32(GetLastError());
    467             LogRel(("NamedPipe%d: CreateNamedPipe failed rc=%Vrc\n", pData->pDrvIns->iInstance));
     467            LogRel(("NamedPipe%d: CreateNamedPipe failed rc=%Vrc\n", pThis->pDrvIns->iInstance));
    468468            return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NamedPipe#%d failed to create named pipe %s"), pDrvIns->iInstance, pszLocation);
    469469        }
    470         pData->NamedPipe = hPipe;
    471 
    472         rc = RTSemEventCreate(&pData->ListenSem);
     470        pThis->NamedPipe = hPipe;
     471
     472        rc = RTSemEventCreate(&pThis->ListenSem);
    473473        AssertRC(rc);
    474474
    475         rc = RTThreadCreate(&pData->ListenThread, drvNamedPipeListenLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
     475        rc = RTThreadCreate(&pThis->ListenThread, drvNamedPipeListenLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
    476476        if RT_FAILURE(rc)
    477477            return PDMDrvHlpVMSetError(pDrvIns, rc,  RT_SRC_POS, N_("NamedPipe#%d failed to create listening thread"), pDrvIns->iInstance);
     
    481481    {
    482482        /* Connect to the named pipe. */
    483         HANDLE hPipe = CreateFile(pData->pszLocation, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
     483        HANDLE hPipe = CreateFile(pThis->pszLocation, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
    484484        if (hPipe == INVALID_HANDLE_VALUE)
    485485        {
    486486            rc = RTErrConvertFromWin32(GetLastError());
    487             LogRel(("NamedPipe%d: CreateFile failed rc=%Vrc\n", pData->pDrvIns->iInstance));
     487            LogRel(("NamedPipe%d: CreateFile failed rc=%Vrc\n", pThis->pDrvIns->iInstance));
    488488            return PDMDrvHlpVMSetError(pDrvIns, rc, RT_SRC_POS, N_("NamedPipe#%d failed to connect to named pipe %s"), pDrvIns->iInstance, pszLocation);
    489489        }
    490         pData->NamedPipe = hPipe;
    491     }
    492 
    493     memset(&pData->OverlappedWrite, 0, sizeof(pData->OverlappedWrite));
    494     memset(&pData->OverlappedRead, 0, sizeof(pData->OverlappedRead));
    495     pData->OverlappedWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    496     pData->OverlappedRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     490        pThis->NamedPipe = hPipe;
     491    }
     492
     493    memset(&pThis->OverlappedWrite, 0, sizeof(pThis->OverlappedWrite));
     494    memset(&pThis->OverlappedRead, 0, sizeof(pThis->OverlappedRead));
     495    pThis->OverlappedWrite.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
     496    pThis->OverlappedRead.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
    497497#else /* !RT_OS_WINDOWS */
    498498    int s;
     
    512512        if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
    513513            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS, N_("NamedPipe#%d failed to bind to local socket %s"), pDrvIns->iInstance, pszLocation);
    514         pData->LocalSocketServer = s;
    515         rc = RTThreadCreate(&pData->ListenThread, drvNamedPipeListenLoop, (void *)pData, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
     514        pThis->LocalSocketServer = s;
     515        rc = RTThreadCreate(&pThis->ListenThread, drvNamedPipeListenLoop, (void *)pThis, 0, RTTHREADTYPE_IO, RTTHREADFLAGS_WAITABLE, "SerPipe");
    516516        if RT_FAILURE(rc)
    517517            return PDMDrvHlpVMSetError(pDrvIns, rc,  RT_SRC_POS, N_("NamedPipe#%d failed to create listening thread"), pDrvIns->iInstance);
     
    522522        if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) == -1)
    523523            return PDMDrvHlpVMSetError(pDrvIns, RTErrConvertFromErrno(errno), RT_SRC_POS, N_("NamedPipe#%d failed to connect to local socket %s"), pDrvIns->iInstance, pszLocation);
    524         pData->LocalSocket = s;
     524        pThis->LocalSocket = s;
    525525    }
    526526#endif /* !RT_OS_WINDOWS */
     
    550550static DECLCALLBACK(void) drvNamedPipeDestruct(PPDMDRVINS pDrvIns)
    551551{
    552     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    553     LogFlow(("%s: %s\n", __FUNCTION__, pData->pszLocation));
    554 
    555     if (pData->ListenThread)
    556     {
    557         RTThreadWait(pData->ListenThread, 250, NULL);
    558         if (pData->ListenThread != NIL_RTTHREAD)
     552    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     553    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
     554
     555    if (pThis->ListenThread)
     556    {
     557        RTThreadWait(pThis->ListenThread, 250, NULL);
     558        if (pThis->ListenThread != NIL_RTTHREAD)
    559559            LogRel(("NamedPipe%d: listen thread did not terminate\n", pDrvIns->iInstance));
    560560    }
    561561
    562     if (pData->pszLocation)
    563         MMR3HeapFree(pData->pszLocation);
     562    if (pThis->pszLocation)
     563        MMR3HeapFree(pThis->pszLocation);
    564564}
    565565
     
    574574static DECLCALLBACK(void) drvNamedPipePowerOff(PPDMDRVINS pDrvIns)
    575575{
    576     PDRVNAMEDPIPE pData = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
    577     LogFlow(("%s: %s\n", __FUNCTION__, pData->pszLocation));
    578 
    579     pData->fShutdown = true;
    580 
    581 #ifdef RT_OS_WINDOWS
    582     if (pData->NamedPipe != INVALID_HANDLE_VALUE)
    583     {
    584         if (pData->fIsServer)
    585         {
    586             FlushFileBuffers(pData->NamedPipe);
    587             DisconnectNamedPipe(pData->NamedPipe);
    588         }
    589 
    590         CloseHandle(pData->NamedPipe);
    591         pData->NamedPipe = INVALID_HANDLE_VALUE;
    592         CloseHandle(pData->OverlappedRead.hEvent);
    593         CloseHandle(pData->OverlappedWrite.hEvent);
    594     }
    595     if (pData->fIsServer)
     576    PDRVNAMEDPIPE pThis = PDMINS_2_DATA(pDrvIns, PDRVNAMEDPIPE);
     577    LogFlow(("%s: %s\n", __FUNCTION__, pThis->pszLocation));
     578
     579    pThis->fShutdown = true;
     580
     581#ifdef RT_OS_WINDOWS
     582    if (pThis->NamedPipe != INVALID_HANDLE_VALUE)
     583    {
     584        if (pThis->fIsServer)
     585        {
     586            FlushFileBuffers(pThis->NamedPipe);
     587            DisconnectNamedPipe(pThis->NamedPipe);
     588        }
     589
     590        CloseHandle(pThis->NamedPipe);
     591        pThis->NamedPipe = INVALID_HANDLE_VALUE;
     592        CloseHandle(pThis->OverlappedRead.hEvent);
     593        CloseHandle(pThis->OverlappedWrite.hEvent);
     594    }
     595    if (pThis->fIsServer)
    596596    {
    597597        /* Wake up listen thread */
    598         RTSemEventSignal(pData->ListenSem);
    599         RTSemEventDestroy(pData->ListenSem);
    600     }
    601 #else /* !RT_OS_WINDOWS */
    602     if (pData->fIsServer)
    603     {
    604         if (pData->LocalSocketServer != NIL_RTSOCKET)
    605             close(pData->LocalSocketServer);
    606         if (pData->pszLocation)
    607             RTFileDelete(pData->pszLocation);
     598        RTSemEventSignal(pThis->ListenSem);
     599        RTSemEventDestroy(pThis->ListenSem);
     600    }
     601#else /* !RT_OS_WINDOWS */
     602    if (pThis->fIsServer)
     603    {
     604        if (pThis->LocalSocketServer != NIL_RTSOCKET)
     605            close(pThis->LocalSocketServer);
     606        if (pThis->pszLocation)
     607            RTFileDelete(pThis->pszLocation);
    608608    }
    609609    else
    610610    {
    611         if (pData->LocalSocket != NIL_RTSOCKET)
    612             close(pData->LocalSocket);
     611        if (pThis->LocalSocket != NIL_RTSOCKET)
     612            close(pThis->LocalSocket);
    613613    }
    614614#endif /* !RT_OS_WINDOWS */
  • trunk/src/VBox/Devices/Storage/DevATA.cpp

    r11267 r11269  
    30323032 * @returns true on success.
    30333033 * @returns false when the thread is still processing.
    3034  * @param   pData       Pointer to the controller data.
     3034 * @param   pThis       Pointer to the controller data.
    30353035 * @param   cMillies    How long to wait (total).
    30363036 */
     
    43724372{
    43734373    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4374     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4375     PATACONTROLLER pCtl = &pData->aCts[i];
     4374    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4375    PATACONTROLLER pCtl = &pThis->aCts[i];
    43764376    int rc;
    43774377
     
    44064406{
    44074407    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4408     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4409     PATACONTROLLER pCtl = &pData->aCts[i];
     4408    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4409    PATACONTROLLER pCtl = &pThis->aCts[i];
    44104410    int rc;
    44114411
     
    44524452static DECLCALLBACK(int) ataBMDMAIORangeMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType)
    44534453{
    4454     PCIATAState *pData = PCIDEV_2_PCIATASTATE(pPciDev);
     4454    PCIATAState *pThis = PCIDEV_2_PCIATASTATE(pPciDev);
    44554455    int         rc = VINF_SUCCESS;
    44564456    Assert(enmType == PCI_ADDRESS_SPACE_IO);
     
    44594459
    44604460    /* Register the port range. */
    4461     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
     4461    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
    44624462    {
    44634463        int rc2 = PDMDevHlpIOPortRegister(pPciDev->pDevIns, (RTIOPORT)GCPhysAddress + i * 8, 8,
     
    44674467            rc = rc2;
    44684468
    4469         if (pData->fGCEnabled)
     4469        if (pThis->fGCEnabled)
    44704470        {
    44714471            rc2 = PDMDevHlpIOPortRegisterGC(pPciDev->pDevIns, (RTIOPORT)GCPhysAddress + i * 8, 8,
     
    44754475                rc = rc2;
    44764476        }
    4477         if (pData->fR0Enabled)
     4477        if (pThis->fR0Enabled)
    44784478        {
    44794479            rc2 = PDMDevHlpIOPortRegisterR0(pPciDev->pDevIns, (RTIOPORT)GCPhysAddress + i * 8, 8,
     
    44964496static DECLCALLBACK(void)  ataReset(PPDMDEVINS pDevIns)
    44974497{
    4498     PCIATAState *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4499 
    4500     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4501     {
    4502         pData->aCts[i].iSelectedIf = 0;
    4503         pData->aCts[i].iAIOIf = 0;
    4504         pData->aCts[i].BmDma.u8Cmd = 0;
     4498    PCIATAState *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4499
     4500    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4501    {
     4502        pThis->aCts[i].iSelectedIf = 0;
     4503        pThis->aCts[i].iAIOIf = 0;
     4504        pThis->aCts[i].BmDma.u8Cmd = 0;
    45054505        /* Report that both drives present on the bus are in DMA mode. This
    45064506         * pretends that there is a BIOS that has set it up. Normal reset
    45074507         * default is 0x00. */
    4508         pData->aCts[i].BmDma.u8Status =   (pData->aCts[i].aIfs[0].pDrvBase != NULL ? BM_STATUS_D0DMA : 0)
    4509                                         | (pData->aCts[i].aIfs[1].pDrvBase != NULL ? BM_STATUS_D1DMA : 0);
    4510         pData->aCts[i].BmDma.pvAddr = 0;
    4511 
    4512         pData->aCts[i].fReset = true;
    4513         pData->aCts[i].fRedo = false;
    4514         pData->aCts[i].fRedoIdle = false;
    4515         ataAsyncIOClearRequests(&pData->aCts[i]);
     4508        pThis->aCts[i].BmDma.u8Status =   (pThis->aCts[i].aIfs[0].pDrvBase != NULL ? BM_STATUS_D0DMA : 0)
     4509                                        | (pThis->aCts[i].aIfs[1].pDrvBase != NULL ? BM_STATUS_D1DMA : 0);
     4510        pThis->aCts[i].BmDma.pvAddr = 0;
     4511
     4512        pThis->aCts[i].fReset = true;
     4513        pThis->aCts[i].fRedo = false;
     4514        pThis->aCts[i].fRedoIdle = false;
     4515        ataAsyncIOClearRequests(&pThis->aCts[i]);
    45164516        Log2(("%s: Ctl#%d: message to async I/O thread, reset controller\n", __FUNCTION__, i));
    4517         ataAsyncIOPutRequest(&pData->aCts[i], &ataResetARequest);
    4518         ataAsyncIOPutRequest(&pData->aCts[i], &ataResetCRequest);
    4519         if (!ataWaitForAsyncIOIsIdle(&pData->aCts[i], 30000))
     4517        ataAsyncIOPutRequest(&pThis->aCts[i], &ataResetARequest);
     4518        ataAsyncIOPutRequest(&pThis->aCts[i], &ataResetCRequest);
     4519        if (!ataWaitForAsyncIOIsIdle(&pThis->aCts[i], 30000))
    45204520            AssertReleaseMsgFailed(("Async I/O thread busy after reset\n"));
    45214521
    4522         for (uint32_t j = 0; j < RT_ELEMENTS(pData->aCts[i].aIfs); j++)
    4523             ataResetDevice(&pData->aCts[i].aIfs[j]);
     4522        for (uint32_t j = 0; j < RT_ELEMENTS(pThis->aCts[i].aIfs); j++)
     4523            ataResetDevice(&pThis->aCts[i].aIfs[j]);
    45244524    }
    45254525}
     
    45384538static DECLCALLBACK(void *) ataStatus_QueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    45394539{
    4540     PCIATAState *pData = PDMIBASE_2_PCIATASTATE(pInterface);
     4540    PCIATAState *pThis = PDMIBASE_2_PCIATASTATE(pInterface);
    45414541    switch (enmInterface)
    45424542    {
    45434543        case PDMINTERFACE_BASE:
    4544             return &pData->IBase;
     4544            return &pThis->IBase;
    45454545        case PDMINTERFACE_LED_PORTS:
    4546             return &pData->ILeds;
     4546            return &pThis->ILeds;
    45474547        default:
    45484548            return NULL;
     
    45634563static DECLCALLBACK(int) ataStatus_QueryStatusLed(PPDMILEDPORTS pInterface, unsigned iLUN, PPDMLED *ppLed)
    45644564{
    4565     PCIATAState *pData = PDMILEDPORTS_2_PCIATASTATE(pInterface);
     4565    PCIATAState *pThis = PDMILEDPORTS_2_PCIATASTATE(pInterface);
    45664566    if (iLUN >= 0 && iLUN <= 4)
    45674567    {
    45684568        switch (iLUN)
    45694569        {
    4570             case 0: *ppLed = &pData->aCts[0].aIfs[0].Led; break;
    4571             case 1: *ppLed = &pData->aCts[0].aIfs[1].Led; break;
    4572             case 2: *ppLed = &pData->aCts[1].aIfs[0].Led; break;
    4573             case 3: *ppLed = &pData->aCts[1].aIfs[1].Led; break;
     4570            case 0: *ppLed = &pThis->aCts[0].aIfs[0].Led; break;
     4571            case 1: *ppLed = &pThis->aCts[0].aIfs[1].Led; break;
     4572            case 2: *ppLed = &pThis->aCts[1].aIfs[0].Led; break;
     4573            case 3: *ppLed = &pThis->aCts[1].aIfs[1].Led; break;
    45744574        }
    45754575        Assert((*ppLed)->u32Magic == PDMLED_MAGIC);
     
    46184618{
    46194619    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4620     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4621     PATACONTROLLER pCtl = &pData->aCts[i];
     4620    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4621    PATACONTROLLER pCtl = &pThis->aCts[i];
    46224622    int            rc = VINF_SUCCESS;
    46234623
     
    46504650{
    46514651    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4652     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4653     PATACONTROLLER pCtl = &pData->aCts[i];
     4652    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4653    PATACONTROLLER pCtl = &pThis->aCts[i];
    46544654    int            rc = VINF_SUCCESS;
    46554655
     
    46874687{
    46884688    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4689     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4690     PATACONTROLLER pCtl = &pData->aCts[i];
     4689    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4690    PATACONTROLLER pCtl = &pThis->aCts[i];
    46914691    int            rc = VINF_SUCCESS;
    46924692
     
    47444744{
    47454745    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4746     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4747     PATACONTROLLER pCtl = &pData->aCts[i];
     4746    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4747    PATACONTROLLER pCtl = &pThis->aCts[i];
    47484748    int            rc;
    47494749
     
    48014801{
    48024802    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4803     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4804     PATACONTROLLER pCtl = &pData->aCts[i];
     4803    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4804    PATACONTROLLER pCtl = &pThis->aCts[i];
    48054805    int rc;
    48064806
     
    48254825{
    48264826    uint32_t       i = (uint32_t)(uintptr_t)pvUser;
    4827     PCIATAState   *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4828     PATACONTROLLER pCtl = &pData->aCts[i];
     4827    PCIATAState   *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4828    PATACONTROLLER pCtl = &pThis->aCts[i];
    48294829    int            rc;
    48304830
     
    48504850 * @returns true on success.
    48514851 * @returns false when one or more threads is still processing.
    4852  * @param   pData       Pointer to the instance data.
     4852 * @param   pThis       Pointer to the instance data.
    48534853 * @param   cMillies    How long to wait (total).
    48544854 */
    48554855static bool ataWaitForAllAsyncIOIsIdle(PPDMDEVINS pDevIns, unsigned cMillies)
    48564856{
    4857     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4857    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    48584858    bool            fVMLocked;
    48594859    uint64_t        u64Start;
     
    48794879        /* Check all async I/O threads. */
    48804880        fAllIdle = true;
    4881         for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4882         {
    4883             pCtl = &pData->aCts[i];
     4881        for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4882        {
     4883            pCtl = &pThis->aCts[i];
    48844884            fAllIdle &= ataAsyncIOIsIdle(pCtl, false);
    48854885            if (!fAllIdle)
     
    49184918static DECLCALLBACK(void) ataRelocate(PPDMDEVINS pDevIns, RTGCINTPTR offDelta)
    49194919{
    4920     PCIATAState *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    4921 
    4922     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4923     {
    4924         pData->aCts[i].pDevInsRC += offDelta;
    4925         pData->aCts[i].aIfs[0].pDevInsRC += offDelta;
    4926         pData->aCts[i].aIfs[0].pControllerRC += offDelta;
    4927         ataRelocBuffer(pDevIns, &pData->aCts[i].aIfs[0]);
    4928         pData->aCts[i].aIfs[1].pDevInsRC += offDelta;
    4929         pData->aCts[i].aIfs[1].pControllerRC += offDelta;
    4930         ataRelocBuffer(pDevIns, &pData->aCts[i].aIfs[1]);
     4920    PCIATAState *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4921
     4922    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4923    {
     4924        pThis->aCts[i].pDevInsRC += offDelta;
     4925        pThis->aCts[i].aIfs[0].pDevInsRC += offDelta;
     4926        pThis->aCts[i].aIfs[0].pControllerRC += offDelta;
     4927        ataRelocBuffer(pDevIns, &pThis->aCts[i].aIfs[0]);
     4928        pThis->aCts[i].aIfs[1].pDevInsRC += offDelta;
     4929        pThis->aCts[i].aIfs[1].pControllerRC += offDelta;
     4930        ataRelocBuffer(pDevIns, &pThis->aCts[i].aIfs[1]);
    49314931    }
    49324932}
     
    49434943static DECLCALLBACK(int) ataDestruct(PPDMDEVINS pDevIns)
    49444944{
    4945     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     4945    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    49464946    int             rc;
    49474947
     
    49514951     * Terminate all async helper threads
    49524952     */
    4953     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4954     {
    4955         if (pData->aCts[i].AsyncIOThread != NIL_RTTHREAD)
    4956         {
    4957             ASMAtomicXchgU32(&pData->aCts[i].fShutdown, true);
    4958             rc = RTSemEventSignal(pData->aCts[i].AsyncIOSem);
     4953    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4954    {
     4955        if (pThis->aCts[i].AsyncIOThread != NIL_RTTHREAD)
     4956        {
     4957            ASMAtomicXchgU32(&pThis->aCts[i].fShutdown, true);
     4958            rc = RTSemEventSignal(pThis->aCts[i].AsyncIOSem);
    49594959            AssertRC(rc);
    49604960        }
     
    49674967    if (ataWaitForAllAsyncIOIsIdle(pDevIns, 20000))
    49684968    {
    4969         for (unsigned i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4970         {
    4971             rc = RTThreadWait(pData->aCts[i].AsyncIOThread, 30000 /* 30 s*/, NULL);
     4969        for (unsigned i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4970        {
     4971            rc = RTThreadWait(pThis->aCts[i].AsyncIOThread, 30000 /* 30 s*/, NULL);
    49724972            AssertMsg(RT_SUCCESS(rc) || rc == VERR_INVALID_HANDLE, ("rc=%Rrc i=%d\n", rc, i));
    49734973        }
     
    49794979     * Now the request mutexes are no longer needed. Free resources.
    49804980     */
    4981     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    4982     {
    4983         if (pData->aCts[i].AsyncIORequestMutex != NIL_RTSEMEVENT)
    4984         {
    4985             RTSemMutexDestroy(pData->aCts[i].AsyncIORequestMutex);
    4986             pData->aCts[i].AsyncIORequestMutex = NIL_RTSEMEVENT;
     4981    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     4982    {
     4983        if (pThis->aCts[i].AsyncIORequestMutex != NIL_RTSEMEVENT)
     4984        {
     4985            RTSemMutexDestroy(pThis->aCts[i].AsyncIORequestMutex);
     4986            pThis->aCts[i].AsyncIORequestMutex = NIL_RTSEMEVENT;
    49874987        }
    49884988    }
     
    52335233static DECLCALLBACK(void) ataResume(PPDMDEVINS pDevIns)
    52345234{
    5235     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     5235    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    52365236    int             rc;
    52375237
    52385238    Log(("%s:\n", __FUNCTION__));
    5239     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5240     {
    5241         if (pData->aCts[i].fRedo && pData->aCts[i].fRedoIdle)
    5242         {
    5243             rc = RTSemEventSignal(pData->aCts[i].SuspendIOSem);
     5239    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5240    {
     5241        if (pThis->aCts[i].fRedo && pThis->aCts[i].fRedoIdle)
     5242        {
     5243            rc = RTSemEventSignal(pThis->aCts[i].SuspendIOSem);
    52445244            AssertRC(rc);
    52455245        }
     
    52735273static DECLCALLBACK(int) ataSaveLoadPrep(PPDMDEVINS pDevIns, PSSMHANDLE pSSM)
    52745274{
    5275     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     5275    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    52765276
    52775277    /* sanity - the suspend notification will wait on the async stuff. */
    5278     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5279     {
    5280         Assert(ataAsyncIOIsIdle(&pData->aCts[i], false));
    5281         if (!ataAsyncIOIsIdle(&pData->aCts[i], false))
     5278    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5279    {
     5280        Assert(ataAsyncIOIsIdle(&pThis->aCts[i], false));
     5281        if (!ataAsyncIOIsIdle(&pThis->aCts[i], false))
    52825282            return VERR_SSM_IDE_ASYNC_TIMEOUT;
    52835283    }
     
    52955295static DECLCALLBACK(int) ataSaveExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    52965296{
    5297     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
    5298 
    5299     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5300     {
    5301         SSMR3PutU8(pSSMHandle, pData->aCts[i].iSelectedIf);
    5302         SSMR3PutU8(pSSMHandle, pData->aCts[i].iAIOIf);
    5303         SSMR3PutU8(pSSMHandle, pData->aCts[i].uAsyncIOState);
    5304         SSMR3PutBool(pSSMHandle, pData->aCts[i].fChainedTransfer);
    5305         SSMR3PutBool(pSSMHandle, pData->aCts[i].fReset);
    5306         SSMR3PutBool(pSSMHandle, pData->aCts[i].fRedo);
    5307         SSMR3PutBool(pSSMHandle, pData->aCts[i].fRedoIdle);
    5308         SSMR3PutBool(pSSMHandle, pData->aCts[i].fRedoDMALastDesc);
    5309         SSMR3PutMem(pSSMHandle, &pData->aCts[i].BmDma, sizeof(pData->aCts[i].BmDma));
    5310         SSMR3PutGCPhys32(pSSMHandle, pData->aCts[i].pFirstDMADesc);
    5311         SSMR3PutGCPhys32(pSSMHandle, pData->aCts[i].pLastDMADesc);
    5312         SSMR3PutGCPhys32(pSSMHandle, pData->aCts[i].pRedoDMABuffer);
    5313         SSMR3PutU32(pSSMHandle, pData->aCts[i].cbRedoDMABuffer);
    5314 
    5315         for (uint32_t j = 0; j < RT_ELEMENTS(pData->aCts[i].aIfs); j++)
    5316         {
    5317             SSMR3PutBool(pSSMHandle, pData->aCts[i].aIfs[j].fLBA48);
    5318             SSMR3PutBool(pSSMHandle, pData->aCts[i].aIfs[j].fATAPI);
    5319             SSMR3PutBool(pSSMHandle, pData->aCts[i].aIfs[j].fIrqPending);
    5320             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].cMultSectors);
    5321             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].PCHSGeometry.cCylinders);
    5322             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].PCHSGeometry.cHeads);
    5323             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].PCHSGeometry.cSectors);
    5324             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].cSectorsPerIRQ);
    5325             SSMR3PutU64(pSSMHandle, pData->aCts[i].aIfs[j].cTotalSectors);
    5326             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegFeature);
    5327             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegFeatureHOB);
    5328             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegError);
    5329             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegNSector);
    5330             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegNSectorHOB);
    5331             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegSector);
    5332             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegSectorHOB);
    5333             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegLCyl);
    5334             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegLCylHOB);
    5335             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegHCyl);
    5336             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegHCylHOB);
    5337             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegSelect);
    5338             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegStatus);
    5339             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegCommand);
    5340             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATARegDevCtl);
    5341             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATATransferMode);
    5342             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uTxDir);
    5343             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].iBeginTransfer);
    5344             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].iSourceSink);
    5345             SSMR3PutBool(pSSMHandle, pData->aCts[i].aIfs[j].fDMA);
    5346             SSMR3PutBool(pSSMHandle, pData->aCts[i].aIfs[j].fATAPITransfer);
    5347             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].cbTotalTransfer);
    5348             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].cbElementaryTransfer);
    5349             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].iIOBufferCur);
    5350             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].iIOBufferEnd);
    5351             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].iIOBufferPIODataStart);
    5352             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].iIOBufferPIODataEnd);
    5353             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].iATAPILBA);
    5354             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].cbATAPISector);
    5355             SSMR3PutMem(pSSMHandle, &pData->aCts[i].aIfs[j].aATAPICmd, sizeof(pData->aCts[i].aIfs[j].aATAPICmd));
    5356             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATAPISenseKey);
    5357             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].uATAPIASC);
    5358             SSMR3PutU8(pSSMHandle, pData->aCts[i].aIfs[j].cNotifiedMediaChange);
    5359             SSMR3PutMem(pSSMHandle, &pData->aCts[i].aIfs[j].Led, sizeof(pData->aCts[i].aIfs[j].Led));
    5360             SSMR3PutU32(pSSMHandle, pData->aCts[i].aIfs[j].cbIOBuffer);
    5361             if (pData->aCts[i].aIfs[j].cbIOBuffer)
    5362                 SSMR3PutMem(pSSMHandle, pData->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer), pData->aCts[i].aIfs[j].cbIOBuffer);
     5297    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
     5298
     5299    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5300    {
     5301        SSMR3PutU8(pSSMHandle, pThis->aCts[i].iSelectedIf);
     5302        SSMR3PutU8(pSSMHandle, pThis->aCts[i].iAIOIf);
     5303        SSMR3PutU8(pSSMHandle, pThis->aCts[i].uAsyncIOState);
     5304        SSMR3PutBool(pSSMHandle, pThis->aCts[i].fChainedTransfer);
     5305        SSMR3PutBool(pSSMHandle, pThis->aCts[i].fReset);
     5306        SSMR3PutBool(pSSMHandle, pThis->aCts[i].fRedo);
     5307        SSMR3PutBool(pSSMHandle, pThis->aCts[i].fRedoIdle);
     5308        SSMR3PutBool(pSSMHandle, pThis->aCts[i].fRedoDMALastDesc);
     5309        SSMR3PutMem(pSSMHandle, &pThis->aCts[i].BmDma, sizeof(pThis->aCts[i].BmDma));
     5310        SSMR3PutGCPhys32(pSSMHandle, pThis->aCts[i].pFirstDMADesc);
     5311        SSMR3PutGCPhys32(pSSMHandle, pThis->aCts[i].pLastDMADesc);
     5312        SSMR3PutGCPhys32(pSSMHandle, pThis->aCts[i].pRedoDMABuffer);
     5313        SSMR3PutU32(pSSMHandle, pThis->aCts[i].cbRedoDMABuffer);
     5314
     5315        for (uint32_t j = 0; j < RT_ELEMENTS(pThis->aCts[i].aIfs); j++)
     5316        {
     5317            SSMR3PutBool(pSSMHandle, pThis->aCts[i].aIfs[j].fLBA48);
     5318            SSMR3PutBool(pSSMHandle, pThis->aCts[i].aIfs[j].fATAPI);
     5319            SSMR3PutBool(pSSMHandle, pThis->aCts[i].aIfs[j].fIrqPending);
     5320            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].cMultSectors);
     5321            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].PCHSGeometry.cCylinders);
     5322            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].PCHSGeometry.cHeads);
     5323            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].PCHSGeometry.cSectors);
     5324            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].cSectorsPerIRQ);
     5325            SSMR3PutU64(pSSMHandle, pThis->aCts[i].aIfs[j].cTotalSectors);
     5326            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegFeature);
     5327            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegFeatureHOB);
     5328            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegError);
     5329            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegNSector);
     5330            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegNSectorHOB);
     5331            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegSector);
     5332            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegSectorHOB);
     5333            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegLCyl);
     5334            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegLCylHOB);
     5335            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegHCyl);
     5336            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegHCylHOB);
     5337            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegSelect);
     5338            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegStatus);
     5339            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegCommand);
     5340            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATARegDevCtl);
     5341            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATATransferMode);
     5342            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uTxDir);
     5343            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].iBeginTransfer);
     5344            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].iSourceSink);
     5345            SSMR3PutBool(pSSMHandle, pThis->aCts[i].aIfs[j].fDMA);
     5346            SSMR3PutBool(pSSMHandle, pThis->aCts[i].aIfs[j].fATAPITransfer);
     5347            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].cbTotalTransfer);
     5348            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].cbElementaryTransfer);
     5349            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].iIOBufferCur);
     5350            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].iIOBufferEnd);
     5351            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].iIOBufferPIODataStart);
     5352            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].iIOBufferPIODataEnd);
     5353            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].iATAPILBA);
     5354            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].cbATAPISector);
     5355            SSMR3PutMem(pSSMHandle, &pThis->aCts[i].aIfs[j].aATAPICmd, sizeof(pThis->aCts[i].aIfs[j].aATAPICmd));
     5356            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATAPISenseKey);
     5357            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].uATAPIASC);
     5358            SSMR3PutU8(pSSMHandle, pThis->aCts[i].aIfs[j].cNotifiedMediaChange);
     5359            SSMR3PutMem(pSSMHandle, &pThis->aCts[i].aIfs[j].Led, sizeof(pThis->aCts[i].aIfs[j].Led));
     5360            SSMR3PutU32(pSSMHandle, pThis->aCts[i].aIfs[j].cbIOBuffer);
     5361            if (pThis->aCts[i].aIfs[j].cbIOBuffer)
     5362                SSMR3PutMem(pSSMHandle, pThis->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer), pThis->aCts[i].aIfs[j].cbIOBuffer);
    53635363            else
    5364                 Assert(pData->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer) == NULL);
    5365         }
    5366     }
    5367     SSMR3PutBool(pSSMHandle, pData->fPIIX4);
     5364                Assert(pThis->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer) == NULL);
     5365        }
     5366    }
     5367    SSMR3PutBool(pSSMHandle, pThis->fPIIX4);
    53685368
    53695369    return SSMR3PutU32(pSSMHandle, ~0); /* sanity/terminator */
     
    53815381static DECLCALLBACK(int) ataLoadExec(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle, uint32_t u32Version)
    53825382{
    5383     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     5383    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    53845384    int             rc;
    53855385    uint32_t        u32;
     
    53945394     * Restore valid parts of the PCIATAState structure
    53955395     */
    5396     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
     5396    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
    53975397    {
    53985398        /* integrity check */
    5399         if (!ataAsyncIOIsIdle(&pData->aCts[i], false))
     5399        if (!ataAsyncIOIsIdle(&pThis->aCts[i], false))
    54005400        {
    54015401            AssertMsgFailed(("Async I/O for controller %d is active\n", i));
     
    54045404        }
    54055405
    5406         SSMR3GetU8(pSSMHandle, &pData->aCts[i].iSelectedIf);
    5407         SSMR3GetU8(pSSMHandle, &pData->aCts[i].iAIOIf);
    5408         SSMR3GetU8(pSSMHandle, &pData->aCts[i].uAsyncIOState);
    5409         SSMR3GetBool(pSSMHandle, &pData->aCts[i].fChainedTransfer);
    5410         SSMR3GetBool(pSSMHandle, (bool *)&pData->aCts[i].fReset);
    5411         SSMR3GetBool(pSSMHandle, (bool *)&pData->aCts[i].fRedo);
    5412         SSMR3GetBool(pSSMHandle, (bool *)&pData->aCts[i].fRedoIdle);
    5413         SSMR3GetBool(pSSMHandle, (bool *)&pData->aCts[i].fRedoDMALastDesc);
    5414         SSMR3GetMem(pSSMHandle, &pData->aCts[i].BmDma, sizeof(pData->aCts[i].BmDma));
    5415         SSMR3GetGCPhys32(pSSMHandle, &pData->aCts[i].pFirstDMADesc);
    5416         SSMR3GetGCPhys32(pSSMHandle, &pData->aCts[i].pLastDMADesc);
    5417         SSMR3GetGCPhys32(pSSMHandle, &pData->aCts[i].pRedoDMABuffer);
    5418         SSMR3GetU32(pSSMHandle, &pData->aCts[i].cbRedoDMABuffer);
    5419 
    5420         for (uint32_t j = 0; j < RT_ELEMENTS(pData->aCts[i].aIfs); j++)
    5421         {
    5422             SSMR3GetBool(pSSMHandle, &pData->aCts[i].aIfs[j].fLBA48);
    5423             SSMR3GetBool(pSSMHandle, &pData->aCts[i].aIfs[j].fATAPI);
    5424             SSMR3GetBool(pSSMHandle, &pData->aCts[i].aIfs[j].fIrqPending);
    5425             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].cMultSectors);
    5426             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].PCHSGeometry.cCylinders);
    5427             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].PCHSGeometry.cHeads);
    5428             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].PCHSGeometry.cSectors);
    5429             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].cSectorsPerIRQ);
    5430             SSMR3GetU64(pSSMHandle, &pData->aCts[i].aIfs[j].cTotalSectors);
    5431             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegFeature);
    5432             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegFeatureHOB);
    5433             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegError);
    5434             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegNSector);
    5435             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegNSectorHOB);
    5436             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegSector);
    5437             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegSectorHOB);
    5438             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegLCyl);
    5439             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegLCylHOB);
    5440             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegHCyl);
    5441             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegHCylHOB);
    5442             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegSelect);
    5443             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegStatus);
    5444             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegCommand);
    5445             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATARegDevCtl);
    5446             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATATransferMode);
    5447             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uTxDir);
    5448             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].iBeginTransfer);
    5449             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].iSourceSink);
    5450             SSMR3GetBool(pSSMHandle, &pData->aCts[i].aIfs[j].fDMA);
    5451             SSMR3GetBool(pSSMHandle, &pData->aCts[i].aIfs[j].fATAPITransfer);
    5452             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].cbTotalTransfer);
    5453             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].cbElementaryTransfer);
    5454             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].iIOBufferCur);
    5455             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].iIOBufferEnd);
    5456             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].iIOBufferPIODataStart);
    5457             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].iIOBufferPIODataEnd);
    5458             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].iATAPILBA);
    5459             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].cbATAPISector);
    5460             SSMR3GetMem(pSSMHandle, &pData->aCts[i].aIfs[j].aATAPICmd, sizeof(pData->aCts[i].aIfs[j].aATAPICmd));
    5461             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATAPISenseKey);
    5462             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].uATAPIASC);
    5463             SSMR3GetU8(pSSMHandle, &pData->aCts[i].aIfs[j].cNotifiedMediaChange);
    5464             SSMR3GetMem(pSSMHandle, &pData->aCts[i].aIfs[j].Led, sizeof(pData->aCts[i].aIfs[j].Led));
    5465             SSMR3GetU32(pSSMHandle, &pData->aCts[i].aIfs[j].cbIOBuffer);
    5466             if (pData->aCts[i].aIfs[j].cbIOBuffer)
     5406        SSMR3GetU8(pSSMHandle, &pThis->aCts[i].iSelectedIf);
     5407        SSMR3GetU8(pSSMHandle, &pThis->aCts[i].iAIOIf);
     5408        SSMR3GetU8(pSSMHandle, &pThis->aCts[i].uAsyncIOState);
     5409        SSMR3GetBool(pSSMHandle, &pThis->aCts[i].fChainedTransfer);
     5410        SSMR3GetBool(pSSMHandle, (bool *)&pThis->aCts[i].fReset);
     5411        SSMR3GetBool(pSSMHandle, (bool *)&pThis->aCts[i].fRedo);
     5412        SSMR3GetBool(pSSMHandle, (bool *)&pThis->aCts[i].fRedoIdle);
     5413        SSMR3GetBool(pSSMHandle, (bool *)&pThis->aCts[i].fRedoDMALastDesc);
     5414        SSMR3GetMem(pSSMHandle, &pThis->aCts[i].BmDma, sizeof(pThis->aCts[i].BmDma));
     5415        SSMR3GetGCPhys32(pSSMHandle, &pThis->aCts[i].pFirstDMADesc);
     5416        SSMR3GetGCPhys32(pSSMHandle, &pThis->aCts[i].pLastDMADesc);
     5417        SSMR3GetGCPhys32(pSSMHandle, &pThis->aCts[i].pRedoDMABuffer);
     5418        SSMR3GetU32(pSSMHandle, &pThis->aCts[i].cbRedoDMABuffer);
     5419
     5420        for (uint32_t j = 0; j < RT_ELEMENTS(pThis->aCts[i].aIfs); j++)
     5421        {
     5422            SSMR3GetBool(pSSMHandle, &pThis->aCts[i].aIfs[j].fLBA48);
     5423            SSMR3GetBool(pSSMHandle, &pThis->aCts[i].aIfs[j].fATAPI);
     5424            SSMR3GetBool(pSSMHandle, &pThis->aCts[i].aIfs[j].fIrqPending);
     5425            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].cMultSectors);
     5426            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].PCHSGeometry.cCylinders);
     5427            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].PCHSGeometry.cHeads);
     5428            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].PCHSGeometry.cSectors);
     5429            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].cSectorsPerIRQ);
     5430            SSMR3GetU64(pSSMHandle, &pThis->aCts[i].aIfs[j].cTotalSectors);
     5431            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegFeature);
     5432            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegFeatureHOB);
     5433            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegError);
     5434            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegNSector);
     5435            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegNSectorHOB);
     5436            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegSector);
     5437            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegSectorHOB);
     5438            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegLCyl);
     5439            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegLCylHOB);
     5440            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegHCyl);
     5441            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegHCylHOB);
     5442            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegSelect);
     5443            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegStatus);
     5444            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegCommand);
     5445            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATARegDevCtl);
     5446            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATATransferMode);
     5447            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uTxDir);
     5448            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].iBeginTransfer);
     5449            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].iSourceSink);
     5450            SSMR3GetBool(pSSMHandle, &pThis->aCts[i].aIfs[j].fDMA);
     5451            SSMR3GetBool(pSSMHandle, &pThis->aCts[i].aIfs[j].fATAPITransfer);
     5452            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].cbTotalTransfer);
     5453            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].cbElementaryTransfer);
     5454            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].iIOBufferCur);
     5455            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].iIOBufferEnd);
     5456            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].iIOBufferPIODataStart);
     5457            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].iIOBufferPIODataEnd);
     5458            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].iATAPILBA);
     5459            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].cbATAPISector);
     5460            SSMR3GetMem(pSSMHandle, &pThis->aCts[i].aIfs[j].aATAPICmd, sizeof(pThis->aCts[i].aIfs[j].aATAPICmd));
     5461            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATAPISenseKey);
     5462            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].uATAPIASC);
     5463            SSMR3GetU8(pSSMHandle, &pThis->aCts[i].aIfs[j].cNotifiedMediaChange);
     5464            SSMR3GetMem(pSSMHandle, &pThis->aCts[i].aIfs[j].Led, sizeof(pThis->aCts[i].aIfs[j].Led));
     5465            SSMR3GetU32(pSSMHandle, &pThis->aCts[i].aIfs[j].cbIOBuffer);
     5466            if (pThis->aCts[i].aIfs[j].cbIOBuffer)
    54675467            {
    5468                 if (pData->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer))
    5469                     SSMR3GetMem(pSSMHandle, pData->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer), pData->aCts[i].aIfs[j].cbIOBuffer);
     5468                if (pThis->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer))
     5469                    SSMR3GetMem(pSSMHandle, pThis->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer), pThis->aCts[i].aIfs[j].cbIOBuffer);
    54705470                else
    54715471                {
     
    54765476                    /* skip the buffer if we're loading for the debugger / animator. */
    54775477                    uint8_t u8Ignored;
    5478                     size_t cbLeft = pData->aCts[i].aIfs[j].cbIOBuffer;
     5478                    size_t cbLeft = pThis->aCts[i].aIfs[j].cbIOBuffer;
    54795479                    while (cbLeft-- > 0)
    54805480                        SSMR3GetU8(pSSMHandle, &u8Ignored);
     
    54825482            }
    54835483            else
    5484                 Assert(pData->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer) == NULL);
    5485         }
    5486     }
    5487     SSMR3GetBool(pSSMHandle, &pData->fPIIX4);
     5484                Assert(pThis->aCts[i].aIfs[j].CTX_SUFF(pbIOBuffer) == NULL);
     5485        }
     5486    }
     5487    SSMR3GetBool(pSSMHandle, &pThis->fPIIX4);
    54885488
    54895489    rc = SSMR3GetU32(pSSMHandle, &u32);
     
    55165516static DECLCALLBACK(int)   ataConstruct(PPDMDEVINS pDevIns, int iInstance, PCFGMNODE pCfgHandle)
    55175517{
    5518     PCIATAState    *pData = PDMINS_2_DATA(pDevIns, PCIATAState *);
     5518    PCIATAState    *pThis = PDMINS_2_DATA(pDevIns, PCIATAState *);
    55195519    PPDMIBASE       pBase;
    55205520    int             rc;
     
    55285528     * Initialize NIL handle values (for the destructor).
    55295529     */
    5530     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5531     {
    5532         pData->aCts[i].AsyncIOSem = NIL_RTSEMEVENT;
    5533         pData->aCts[i].SuspendIOSem = NIL_RTSEMEVENT;
    5534         pData->aCts[i].AsyncIORequestMutex = NIL_RTSEMEVENT;
     5530    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5531    {
     5532        pThis->aCts[i].AsyncIOSem = NIL_RTSEMEVENT;
     5533        pThis->aCts[i].SuspendIOSem = NIL_RTSEMEVENT;
     5534        pThis->aCts[i].AsyncIORequestMutex = NIL_RTSEMEVENT;
    55355535    }
    55365536
     
    55615561    Assert(DelayIRQMillies < 50);
    55625562
    5563     rc = CFGMR3QueryBoolDef(pCfgHandle, "PIIX4", &pData->fPIIX4, false);
     5563    rc = CFGMR3QueryBoolDef(pCfgHandle, "PIIX4", &pThis->fPIIX4, false);
    55645564    if (RT_FAILURE(rc))
    55655565        return PDMDEV_SET_ERROR(pDevIns, rc,
    55665566                                N_("PIIX3 configuration error: failed to read PIIX4 as boolean"));
    5567     Log(("%s: fPIIX4=%d\n", __FUNCTION__, pData->fPIIX4));
     5567    Log(("%s: fPIIX4=%d\n", __FUNCTION__, pThis->fPIIX4));
    55685568
    55695569    /*
     
    55715571     */
    55725572    /* Status LUN. */
    5573     pData->IBase.pfnQueryInterface = ataStatus_QueryInterface;
    5574     pData->ILeds.pfnQueryStatusLed = ataStatus_QueryStatusLed;
     5573    pThis->IBase.pfnQueryInterface = ataStatus_QueryInterface;
     5574    pThis->ILeds.pfnQueryStatusLed = ataStatus_QueryStatusLed;
    55755575
    55765576    /* PCI configuration space. */
    5577     PCIDevSetVendorId(&pData->dev, 0x8086); /* Intel */
    5578     if (pData->fPIIX4)
    5579     {
    5580         PCIDevSetDeviceId(&pData->dev, 0x7111); /* PIIX4 IDE */
    5581         PCIDevSetRevisionId(&pData->dev, 0x01); /* PIIX4E */
    5582         pData->dev.config[0x48] = 0x00; /* UDMACTL */
    5583         pData->dev.config[0x4A] = 0x00; /* UDMATIM */
    5584         pData->dev.config[0x4B] = 0x00;
     5577    PCIDevSetVendorId(&pThis->dev, 0x8086); /* Intel */
     5578    if (pThis->fPIIX4)
     5579    {
     5580        PCIDevSetDeviceId(&pThis->dev, 0x7111); /* PIIX4 IDE */
     5581        PCIDevSetRevisionId(&pThis->dev, 0x01); /* PIIX4E */
     5582        pThis->dev.config[0x48] = 0x00; /* UDMACTL */
     5583        pThis->dev.config[0x4A] = 0x00; /* UDMATIM */
     5584        pThis->dev.config[0x4B] = 0x00;
    55855585    }
    55865586    else
    5587         PCIDevSetDeviceId(&pData->dev, 0x7010); /* PIIX3 IDE */
    5588     PCIDevSetCommand(   &pData->dev, PCI_COMMAND_IOACCESS | PCI_COMMAND_MEMACCESS | PCI_COMMAND_BUSMASTER);
    5589     PCIDevSetClassProg( &pData->dev, 0x8a); /* programming interface = PCI_IDE bus master is supported */
    5590     PCIDevSetClassSub(  &pData->dev, 0x01); /* class_sub = PCI_IDE */
    5591     PCIDevSetClassBase( &pData->dev, 0x01); /* class_base = PCI_mass_storage */
    5592     PCIDevSetHeaderType(&pData->dev, 0x00);
    5593 
    5594     pData->pDevIns          = pDevIns;
    5595     pData->fGCEnabled       = fGCEnabled;
    5596     pData->fR0Enabled       = fR0Enabled;
    5597     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5598     {
    5599         pData->aCts[i].pDevInsR3 = pDevIns;
    5600         pData->aCts[i].pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    5601         pData->aCts[i].pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    5602         pData->aCts[i].DelayIRQMillies = (uint32_t)DelayIRQMillies;
    5603         for (uint32_t j = 0; j < RT_ELEMENTS(pData->aCts[i].aIfs); j++)
    5604         {
    5605             pData->aCts[i].aIfs[j].iLUN = i * RT_ELEMENTS(pData->aCts) + j;
    5606             pData->aCts[i].aIfs[j].pDevInsR3 = pDevIns;
    5607             pData->aCts[i].aIfs[j].pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
    5608             pData->aCts[i].aIfs[j].pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
    5609             pData->aCts[i].aIfs[j].pControllerR3 = &pData->aCts[i];
    5610             pData->aCts[i].aIfs[j].pControllerR0 = MMHyperR3ToR0(PDMDevHlpGetVM(pDevIns), &pData->aCts[i]);
    5611             pData->aCts[i].aIfs[j].pControllerRC = MMHyperR3ToRC(PDMDevHlpGetVM(pDevIns), &pData->aCts[i]);
    5612             pData->aCts[i].aIfs[j].IBase.pfnQueryInterface = ataQueryInterface;
    5613             pData->aCts[i].aIfs[j].IMountNotify.pfnMountNotify = ataMountNotify;
    5614             pData->aCts[i].aIfs[j].IMountNotify.pfnUnmountNotify = ataUnmountNotify;
    5615             pData->aCts[i].aIfs[j].Led.u32Magic = PDMLED_MAGIC;
    5616         }
    5617     }
    5618 
    5619     Assert(RT_ELEMENTS(pData->aCts) == 2);
    5620     pData->aCts[0].irq          = 14;
    5621     pData->aCts[0].IOPortBase1  = 0x1f0;
    5622     pData->aCts[0].IOPortBase2  = 0x3f6;
    5623     pData->aCts[1].irq          = 15;
    5624     pData->aCts[1].IOPortBase1  = 0x170;
    5625     pData->aCts[1].IOPortBase2  = 0x376;
     5587        PCIDevSetDeviceId(&pThis->dev, 0x7010); /* PIIX3 IDE */
     5588    PCIDevSetCommand(   &pThis->dev, PCI_COMMAND_IOACCESS | PCI_COMMAND_MEMACCESS | PCI_COMMAND_BUSMASTER);
     5589    PCIDevSetClassProg( &pThis->dev, 0x8a); /* programming interface = PCI_IDE bus master is supported */
     5590    PCIDevSetClassSub(  &pThis->dev, 0x01); /* class_sub = PCI_IDE */
     5591    PCIDevSetClassBase( &pThis->dev, 0x01); /* class_base = PCI_mass_storage */
     5592    PCIDevSetHeaderType(&pThis->dev, 0x00);
     5593
     5594    pThis->pDevIns          = pDevIns;
     5595    pThis->fGCEnabled       = fGCEnabled;
     5596    pThis->fR0Enabled       = fR0Enabled;
     5597    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5598    {
     5599        pThis->aCts[i].pDevInsR3 = pDevIns;
     5600        pThis->aCts[i].pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
     5601        pThis->aCts[i].pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     5602        pThis->aCts[i].DelayIRQMillies = (uint32_t)DelayIRQMillies;
     5603        for (uint32_t j = 0; j < RT_ELEMENTS(pThis->aCts[i].aIfs); j++)
     5604        {
     5605            pThis->aCts[i].aIfs[j].iLUN = i * RT_ELEMENTS(pThis->aCts) + j;
     5606            pThis->aCts[i].aIfs[j].pDevInsR3 = pDevIns;
     5607            pThis->aCts[i].aIfs[j].pDevInsR0 = PDMDEVINS_2_R0PTR(pDevIns);
     5608            pThis->aCts[i].aIfs[j].pDevInsRC = PDMDEVINS_2_RCPTR(pDevIns);
     5609            pThis->aCts[i].aIfs[j].pControllerR3 = &pThis->aCts[i];
     5610            pThis->aCts[i].aIfs[j].pControllerR0 = MMHyperR3ToR0(PDMDevHlpGetVM(pDevIns), &pThis->aCts[i]);
     5611            pThis->aCts[i].aIfs[j].pControllerRC = MMHyperR3ToRC(PDMDevHlpGetVM(pDevIns), &pThis->aCts[i]);
     5612            pThis->aCts[i].aIfs[j].IBase.pfnQueryInterface = ataQueryInterface;
     5613            pThis->aCts[i].aIfs[j].IMountNotify.pfnMountNotify = ataMountNotify;
     5614            pThis->aCts[i].aIfs[j].IMountNotify.pfnUnmountNotify = ataUnmountNotify;
     5615            pThis->aCts[i].aIfs[j].Led.u32Magic = PDMLED_MAGIC;
     5616        }
     5617    }
     5618
     5619    Assert(RT_ELEMENTS(pThis->aCts) == 2);
     5620    pThis->aCts[0].irq          = 14;
     5621    pThis->aCts[0].IOPortBase1  = 0x1f0;
     5622    pThis->aCts[0].IOPortBase2  = 0x3f6;
     5623    pThis->aCts[1].irq          = 15;
     5624    pThis->aCts[1].IOPortBase1  = 0x170;
     5625    pThis->aCts[1].IOPortBase2  = 0x376;
    56265626
    56275627    /*
     
    56305630     *      device the slot next to itself.
    56315631     */
    5632     rc = PDMDevHlpPCIRegister(pDevIns, &pData->dev);
     5632    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->dev);
    56335633    if (RT_FAILURE(rc))
    56345634        return PDMDEV_SET_ERROR(pDevIns, rc,
    56355635                                N_("PIIX3 cannot register PCI device"));
    5636     AssertMsg(pData->dev.devfn == 9 || iInstance != 0, ("pData->dev.devfn=%d\n", pData->dev.devfn));
     5636    AssertMsg(pThis->dev.devfn == 9 || iInstance != 0, ("pThis->dev.devfn=%d\n", pThis->dev.devfn));
    56375637    rc = PDMDevHlpPCIIORegionRegister(pDevIns, 4, 0x10, PCI_ADDRESS_SPACE_IO, ataBMDMAIORangeMap);
    56385638    if (RT_FAILURE(rc))
     
    56445644     * The ports are all hardcoded and enforced by the PIIX3 host bridge controller.
    56455645     */
    5646     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5647     {
    5648         rc = PDMDevHlpIOPortRegister(pDevIns, pData->aCts[i].IOPortBase1, 8, (RTHCPTR)i,
     5646    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5647    {
     5648        rc = PDMDevHlpIOPortRegister(pDevIns, pThis->aCts[i].IOPortBase1, 8, (RTHCPTR)i,
    56495649                                     ataIOPortWrite1, ataIOPortRead1, ataIOPortWriteStr1, ataIOPortReadStr1, "ATA I/O Base 1");
    56505650        if (RT_FAILURE(rc))
     
    56535653        if (fGCEnabled)
    56545654        {
    5655             rc = PDMDevHlpIOPortRegisterGC(pDevIns, pData->aCts[i].IOPortBase1, 8, (RTGCPTR)i,
     5655            rc = PDMDevHlpIOPortRegisterGC(pDevIns, pThis->aCts[i].IOPortBase1, 8, (RTGCPTR)i,
    56565656                                           "ataIOPortWrite1", "ataIOPortRead1", "ataIOPortWriteStr1", "ataIOPortReadStr1", "ATA I/O Base 1");
    56575657            if (RT_FAILURE(rc))
     
    56625662        {
    56635663#if 1
    5664             rc = PDMDevHlpIOPortRegisterR0(pDevIns, pData->aCts[i].IOPortBase1, 8, (RTR0PTR)i,
     5664            rc = PDMDevHlpIOPortRegisterR0(pDevIns, pThis->aCts[i].IOPortBase1, 8, (RTR0PTR)i,
    56655665                                           "ataIOPortWrite1", "ataIOPortRead1", NULL, NULL, "ATA I/O Base 1");
    56665666#else
    5667             rc = PDMDevHlpIOPortRegisterR0(pDevIns, pData->aCts[i].IOPortBase1, 8, (RTR0PTR)i,
     5667            rc = PDMDevHlpIOPortRegisterR0(pDevIns, pThis->aCts[i].IOPortBase1, 8, (RTR0PTR)i,
    56685668                                           "ataIOPortWrite1", "ataIOPortRead1", "ataIOPortWriteStr1", "ataIOPortReadStr1", "ATA I/O Base 1");
    56695669#endif
     
    56725672        }
    56735673
    5674         rc = PDMDevHlpIOPortRegister(pDevIns, pData->aCts[i].IOPortBase2, 1, (RTHCPTR)i,
     5674        rc = PDMDevHlpIOPortRegister(pDevIns, pThis->aCts[i].IOPortBase2, 1, (RTHCPTR)i,
    56755675                                     ataIOPortWrite2, ataIOPortRead2, NULL, NULL, "ATA I/O Base 2");
    56765676        if (RT_FAILURE(rc))
     
    56795679        if (fGCEnabled)
    56805680        {
    5681             rc = PDMDevHlpIOPortRegisterGC(pDevIns, pData->aCts[i].IOPortBase2, 1, (RTGCPTR)i,
     5681            rc = PDMDevHlpIOPortRegisterGC(pDevIns, pThis->aCts[i].IOPortBase2, 1, (RTGCPTR)i,
    56825682                                           "ataIOPortWrite2", "ataIOPortRead2", NULL, NULL, "ATA I/O Base 2");
    56835683            if (RT_FAILURE(rc))
     
    56865686        if (fR0Enabled)
    56875687        {
    5688             rc = PDMDevHlpIOPortRegisterR0(pDevIns, pData->aCts[i].IOPortBase2, 1, (RTR0PTR)i,
     5688            rc = PDMDevHlpIOPortRegisterR0(pDevIns, pThis->aCts[i].IOPortBase2, 1, (RTR0PTR)i,
    56895689                                           "ataIOPortWrite2", "ataIOPortRead2", NULL, NULL, "ATA I/O Base 2");
    56905690            if (RT_FAILURE(rc))
     
    56925692        }
    56935693
    5694         for (uint32_t j = 0; j < RT_ELEMENTS(pData->aCts[i].aIfs); j++)
    5695         {
    5696             ATADevState *pIf = &pData->aCts[i].aIfs[j];
     5694        for (uint32_t j = 0; j < RT_ELEMENTS(pThis->aCts[i].aIfs); j++)
     5695        {
     5696            ATADevState *pIf = &pThis->aCts[i].aIfs[j];
    56975697            PDMDevHlpSTAMRegisterF(pDevIns, &pIf->StatATADMA,       STAMTYPE_COUNTER,    STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,       "Number of ATA DMA transfers.", "/Devices/ATA%d/Unit%d/DMA", i, j);
    56985698            PDMDevHlpSTAMRegisterF(pDevIns, &pIf->StatATAPIO,       STAMTYPE_COUNTER,    STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,       "Number of ATA PIO transfers.", "/Devices/ATA%d/Unit%d/PIO", i, j);
     
    57155715        }
    57165716#ifdef VBOX_WITH_STATISTICS /** @todo release too. */
    5717         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatAsyncOps,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,   "The number of async operations.",  "/Devices/ATA%d/Async/Operations", i);
     5717        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatAsyncOps,       STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES,   "The number of async operations.",  "/Devices/ATA%d/Async/Operations", i);
    57185718        /** @todo STAMUNIT_MICROSECS */
    5719         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatAsyncMinWait, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Minimum wait in microseconds.",    "/Devices/ATA%d/Async/MinWait", i);
    5720         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatAsyncMaxWait, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Maximum wait in microseconds.",    "/Devices/ATA%d/Async/MaxWait", i);
    5721         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatAsyncTimeUS,    STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Total time spent in microseconds.","/Devices/ATA%d/Async/TotalTimeUS", i);
    5722         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatAsyncTime,  STAMTYPE_PROFILE_ADV, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling of async operations.", "/Devices/ATA%d/Async/Time", i);
    5723         PDMDevHlpSTAMRegisterF(pDevIns, &pData->aCts[i].StatLockWait,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling of locks.",            "/Devices/ATA%d/Async/LockWait", i);
     5719        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatAsyncMinWait, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Minimum wait in microseconds.",    "/Devices/ATA%d/Async/MinWait", i);
     5720        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatAsyncMaxWait, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Maximum wait in microseconds.",    "/Devices/ATA%d/Async/MaxWait", i);
     5721        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatAsyncTimeUS,    STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_NONE,         "Total time spent in microseconds.","/Devices/ATA%d/Async/TotalTimeUS", i);
     5722        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatAsyncTime,  STAMTYPE_PROFILE_ADV, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling of async operations.", "/Devices/ATA%d/Async/Time", i);
     5723        PDMDevHlpSTAMRegisterF(pDevIns, &pThis->aCts[i].StatLockWait,       STAMTYPE_PROFILE, STAMVISIBILITY_ALWAYS, STAMUNIT_TICKS_PER_CALL, "Profiling of locks.",            "/Devices/ATA%d/Async/LockWait", i);
    57245724#endif /* VBOX_WITH_STATISTICS */
    57255725
     
    57275727        char szName[24];
    57285728        RTStrPrintf(szName, sizeof(szName), "ATA%d", i);
    5729         rc = PDMDevHlpCritSectInit(pDevIns, &pData->aCts[i].lock, szName);
     5729        rc = PDMDevHlpCritSectInit(pDevIns, &pThis->aCts[i].lock, szName);
    57305730        if (RT_FAILURE(rc))
    57315731            return PDMDEV_SET_ERROR(pDevIns, rc, N_("PIIX3 cannot initialize critical section"));
     
    57355735     * Attach status driver (optional).
    57365736     */
    5737     rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pData->IBase, &pBase, "Status Port");
     5737    rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pThis->IBase, &pBase, "Status Port");
    57385738    if (RT_SUCCESS(rc))
    5739         pData->pLedsConnector = (PDMILEDCONNECTORS *)pBase->pfnQueryInterface(pBase, PDMINTERFACE_LED_CONNECTORS);
     5739        pThis->pLedsConnector = (PDMILEDCONNECTORS *)pBase->pfnQueryInterface(pBase, PDMINTERFACE_LED_CONNECTORS);
    57405740    else if (rc != VERR_PDM_NO_ATTACHED_DRIVER)
    57415741    {
     
    57485748     */
    57495749    uint32_t cbTotalBuffer = 0;
    5750     for (uint32_t i = 0; i < RT_ELEMENTS(pData->aCts); i++)
    5751     {
    5752         PATACONTROLLER pCtl = &pData->aCts[i];
     5750    for (uint32_t i = 0; i < RT_ELEMENTS(pThis->aCts); i++)
     5751    {
     5752        PATACONTROLLER pCtl = &pThis->aCts[i];
    57535753
    57545754        /*
     
    57705770        for (uint32_t j = 0; j < RT_ELEMENTS(pCtl->aIfs); j++)
    57715771        {
    5772             static const char *s_apszDescs[RT_ELEMENTS(pData->aCts)][RT_ELEMENTS(pCtl->aIfs)] =
     5772            static const char *s_apszDescs[RT_ELEMENTS(pThis->aCts)][RT_ELEMENTS(pCtl->aIfs)] =
    57735773            {
    57745774                { "Primary Master", "Primary Slave" },
     
    58145814
    58155815    rc = PDMDevHlpSSMRegister(pDevIns, pDevIns->pDevReg->szDeviceName, iInstance,
    5816                               ATA_SAVED_STATE_VERSION, sizeof(*pData) + cbTotalBuffer,
     5816                              ATA_SAVED_STATE_VERSION, sizeof(*pThis) + cbTotalBuffer,
    58175817                              ataSaveLoadPrep, ataSaveExec, NULL,
    58185818                              ataSaveLoadPrep, ataLoadExec, NULL);
  • trunk/src/VBox/Devices/Storage/DrvBlock.cpp

    r11267 r11269  
    127127static DECLCALLBACK(int) drvblockRead(PPDMIBLOCK pInterface, uint64_t off, void *pvBuf, size_t cbRead)
    128128{
    129     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    130 
    131     /*
    132      * Check the state.
    133      */
    134     if (!pData->pDrvMedia)
     129    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     130
     131    /*
     132     * Check the state.
     133     */
     134    if (!pThis->pDrvMedia)
    135135    {
    136136        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    138138    }
    139139
    140     int rc = pData->pDrvMedia->pfnRead(pData->pDrvMedia, off, pvBuf, cbRead);
     140    int rc = pThis->pDrvMedia->pfnRead(pThis->pDrvMedia, off, pvBuf, cbRead);
    141141    return rc;
    142142}
     
    146146static DECLCALLBACK(int) drvblockWrite(PPDMIBLOCK pInterface, uint64_t off, const void *pvBuf, size_t cbWrite)
    147147{
    148     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    149 
    150     /*
    151      * Check the state.
    152      */
    153     if (!pData->pDrvMedia)
     148    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     149
     150    /*
     151     * Check the state.
     152     */
     153    if (!pThis->pDrvMedia)
    154154    {
    155155        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    157157    }
    158158
    159     int rc = pData->pDrvMedia->pfnWrite(pData->pDrvMedia, off, pvBuf, cbWrite);
     159    int rc = pThis->pDrvMedia->pfnWrite(pThis->pDrvMedia, off, pvBuf, cbWrite);
    160160#ifdef VBOX_PERIODIC_FLUSH
    161     if (pData->cbFlushInterval)
    162     {
    163         pData->cbDataWritten += cbWrite;
    164         if (pData->cbDataWritten > pData->cbFlushInterval)
     161    if (pThis->cbFlushInterval)
     162    {
     163        pThis->cbDataWritten += cbWrite;
     164        if (pThis->cbDataWritten > pThis->cbFlushInterval)
    165165        {
    166             pData->cbDataWritten = 0;
    167             pData->pDrvMedia->pfnFlush(pData->pDrvMedia);
     166            pThis->cbDataWritten = 0;
     167            pThis->pDrvMedia->pfnFlush(pThis->pDrvMedia);
    168168        }
    169169    }
     
    177177static DECLCALLBACK(int) drvblockFlush(PPDMIBLOCK pInterface)
    178178{
    179     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    180 
    181     /*
    182      * Check the state.
    183      */
    184     if (!pData->pDrvMedia)
     179    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     180
     181    /*
     182     * Check the state.
     183     */
     184    if (!pThis->pDrvMedia)
    185185    {
    186186        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    189189
    190190#ifdef VBOX_IGNORE_FLUSH
    191     if (pData->fIgnoreFlush)
     191    if (pThis->fIgnoreFlush)
    192192        return VINF_SUCCESS;
    193193#endif /* VBOX_IGNORE_FLUSH */
    194194
    195     int rc = pData->pDrvMedia->pfnFlush(pData->pDrvMedia);
     195    int rc = pThis->pDrvMedia->pfnFlush(pThis->pDrvMedia);
    196196    if (rc == VERR_NOT_IMPLEMENTED)
    197197        rc = VINF_SUCCESS;
     
    203203static DECLCALLBACK(bool) drvblockIsReadOnly(PPDMIBLOCK pInterface)
    204204{
    205     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    206 
    207     /*
    208      * Check the state.
    209      */
    210     if (!pData->pDrvMedia)
     205    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     206
     207    /*
     208     * Check the state.
     209     */
     210    if (!pThis->pDrvMedia)
    211211        return false;
    212212
    213     bool fRc = pData->pDrvMedia->pfnIsReadOnly(pData->pDrvMedia);
     213    bool fRc = pThis->pDrvMedia->pfnIsReadOnly(pThis->pDrvMedia);
    214214    return fRc;
    215215}
     
    219219static DECLCALLBACK(uint64_t) drvblockGetSize(PPDMIBLOCK pInterface)
    220220{
    221     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    222 
    223     /*
    224      * Check the state.
    225      */
    226     if (!pData->pDrvMedia)
     221    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     222
     223    /*
     224     * Check the state.
     225     */
     226    if (!pThis->pDrvMedia)
    227227        return 0;
    228228
    229     uint64_t cb = pData->pDrvMedia->pfnGetSize(pData->pDrvMedia);
     229    uint64_t cb = pThis->pDrvMedia->pfnGetSize(pThis->pDrvMedia);
    230230    LogFlow(("drvblockGetSize: returns %llu\n", cb));
    231231    return cb;
     
    236236static DECLCALLBACK(PDMBLOCKTYPE) drvblockGetType(PPDMIBLOCK pInterface)
    237237{
    238     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
    239     LogFlow(("drvblockGetType: returns %d\n", pData->enmType));
    240     return pData->enmType;
     238    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
     239    LogFlow(("drvblockGetType: returns %d\n", pThis->enmType));
     240    return pThis->enmType;
    241241}
    242242
     
    245245static DECLCALLBACK(int) drvblockGetUuid(PPDMIBLOCK pInterface, PRTUUID pUuid)
    246246{
    247     PDRVBLOCK pData = PDMIBLOCK_2_DRVBLOCK(pInterface);
     247    PDRVBLOCK pThis = PDMIBLOCK_2_DRVBLOCK(pInterface);
    248248
    249249    /*
    250250     * Copy the uuid.
    251251     */
    252     *pUuid = pData->Uuid;
     252    *pUuid = pThis->Uuid;
    253253    return VINF_SUCCESS;
    254254}
     
    262262static DECLCALLBACK(int) drvblockAsyncReadStart(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbRead, void *pvUser)
    263263{
    264     PDRVBLOCK pData = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
    265 
    266     /*
    267      * Check the state.
    268      */
    269     if (!pData->pDrvMediaAsync)
     264    PDRVBLOCK pThis = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
     265
     266    /*
     267     * Check the state.
     268     */
     269    if (!pThis->pDrvMediaAsync)
    270270    {
    271271        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    273273    }
    274274
    275     int rc = pData->pDrvMediaAsync->pfnStartRead(pData->pDrvMediaAsync, off, pSeg, cSeg, cbRead, pvUser);
     275    int rc = pThis->pDrvMediaAsync->pfnStartRead(pThis->pDrvMediaAsync, off, pSeg, cSeg, cbRead, pvUser);
    276276    return rc;
    277277}
     
    281281static DECLCALLBACK(int) drvblockAsyncWriteStart(PPDMIBLOCKASYNC pInterface, uint64_t off, PPDMDATASEG pSeg, unsigned cSeg, size_t cbWrite, void *pvUser)
    282282{
    283     PDRVBLOCK pData = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
    284 
    285     /*
    286      * Check the state.
    287      */
    288     if (!pData->pDrvMediaAsync)
     283    PDRVBLOCK pThis = PDMIBLOCKASYNC_2_DRVBLOCK(pInterface);
     284
     285    /*
     286     * Check the state.
     287     */
     288    if (!pThis->pDrvMediaAsync)
    289289    {
    290290        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    292292    }
    293293
    294     int rc = pData->pDrvMediaAsync->pfnStartWrite(pData->pDrvMediaAsync, off, pSeg, cSeg, cbWrite, pvUser);
     294    int rc = pThis->pDrvMediaAsync->pfnStartWrite(pThis->pDrvMediaAsync, off, pSeg, cSeg, cbWrite, pvUser);
    295295
    296296    return rc;
     
    304304static DECLCALLBACK(int) drvblockAsyncTransferCompleteNotify(PPDMIMEDIAASYNCPORT pInterface, void *pvUser)
    305305{
    306     PDRVBLOCK pData = PDMIMEDIAASYNCPORT_2_DRVBLOCK(pInterface);
    307 
    308     return pData->pDrvBlockAsyncPort->pfnTransferCompleteNotify(pData->pDrvBlockAsyncPort, pvUser);
     306    PDRVBLOCK pThis = PDMIMEDIAASYNCPORT_2_DRVBLOCK(pInterface);
     307
     308    return pThis->pDrvBlockAsyncPort->pfnTransferCompleteNotify(pThis->pDrvBlockAsyncPort, pvUser);
    309309}
    310310
     
    318318static DECLCALLBACK(int) drvblockGetPCHSGeometry(PPDMIBLOCKBIOS pInterface, PPDMMEDIAGEOMETRY pPCHSGeometry)
    319319{
    320     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    321 
    322     /*
    323      * Check the state.
    324      */
    325     if (!pData->pDrvMedia)
     320    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     321
     322    /*
     323     * Check the state.
     324     */
     325    if (!pThis->pDrvMedia)
    326326        return VERR_PDM_MEDIA_NOT_MOUNTED;
    327327
     
    329329     * Use configured/cached values if present.
    330330     */
    331     if (    pData->PCHSGeometry.cCylinders > 0
    332         &&  pData->PCHSGeometry.cHeads > 0
    333         &&  pData->PCHSGeometry.cSectors > 0)
    334     {
    335         *pPCHSGeometry = pData->PCHSGeometry;
    336         LogFlow(("%s: returns VINF_SUCCESS {%d,%d,%d}\n", __FUNCTION__, pData->PCHSGeometry.cCylinders, pData->PCHSGeometry.cHeads, pData->PCHSGeometry.cSectors));
     331    if (    pThis->PCHSGeometry.cCylinders > 0
     332        &&  pThis->PCHSGeometry.cHeads > 0
     333        &&  pThis->PCHSGeometry.cSectors > 0)
     334    {
     335        *pPCHSGeometry = pThis->PCHSGeometry;
     336        LogFlow(("%s: returns VINF_SUCCESS {%d,%d,%d}\n", __FUNCTION__, pThis->PCHSGeometry.cCylinders, pThis->PCHSGeometry.cHeads, pThis->PCHSGeometry.cSectors));
    337337        return VINF_SUCCESS;
    338338    }
     
    341341     * Call media.
    342342     */
    343     int rc = pData->pDrvMedia->pfnBiosGetPCHSGeometry(pData->pDrvMedia, &pData->PCHSGeometry);
     343    int rc = pThis->pDrvMedia->pfnBiosGetPCHSGeometry(pThis->pDrvMedia, &pThis->PCHSGeometry);
    344344
    345345    if (RT_SUCCESS(rc))
    346346    {
    347         *pPCHSGeometry = pData->PCHSGeometry;
    348         LogFlow(("%s: returns %Vrc {%d,%d,%d}\n", __FUNCTION__, rc, pData->PCHSGeometry.cCylinders, pData->PCHSGeometry.cHeads, pData->PCHSGeometry.cSectors));
     347        *pPCHSGeometry = pThis->PCHSGeometry;
     348        LogFlow(("%s: returns %Vrc {%d,%d,%d}\n", __FUNCTION__, rc, pThis->PCHSGeometry.cCylinders, pThis->PCHSGeometry.cHeads, pThis->PCHSGeometry.cSectors));
    349349    }
    350350    else if (rc == VERR_NOT_IMPLEMENTED)
     
    361361{
    362362    LogFlow(("%s: cCylinders=%d cHeads=%d cSectors=%d\n", __FUNCTION__, pPCHSGeometry->cCylinders, pPCHSGeometry->cHeads, pPCHSGeometry->cSectors));
    363     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    364 
    365     /*
    366      * Check the state.
    367      */
    368     if (!pData->pDrvMedia)
     363    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     364
     365    /*
     366     * Check the state.
     367     */
     368    if (!pThis->pDrvMedia)
    369369    {
    370370        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    375375     * Call media. Ignore the not implemented return code.
    376376     */
    377     int rc = pData->pDrvMedia->pfnBiosSetPCHSGeometry(pData->pDrvMedia, pPCHSGeometry);
     377    int rc = pThis->pDrvMedia->pfnBiosSetPCHSGeometry(pThis->pDrvMedia, pPCHSGeometry);
    378378
    379379    if (    RT_SUCCESS(rc)
    380380        ||  rc == VERR_NOT_IMPLEMENTED)
    381381    {
    382         pData->PCHSGeometry = *pPCHSGeometry;
     382        pThis->PCHSGeometry = *pPCHSGeometry;
    383383        rc = VINF_SUCCESS;
    384384    }
     
    390390static DECLCALLBACK(int) drvblockGetLCHSGeometry(PPDMIBLOCKBIOS pInterface, PPDMMEDIAGEOMETRY pLCHSGeometry)
    391391{
    392     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    393 
    394     /*
    395      * Check the state.
    396      */
    397     if (!pData->pDrvMedia)
     392    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     393
     394    /*
     395     * Check the state.
     396     */
     397    if (!pThis->pDrvMedia)
    398398        return VERR_PDM_MEDIA_NOT_MOUNTED;
    399399
     
    401401     * Use configured/cached values if present.
    402402     */
    403     if (    pData->LCHSGeometry.cCylinders > 0
    404         &&  pData->LCHSGeometry.cHeads > 0
    405         &&  pData->LCHSGeometry.cSectors > 0)
    406     {
    407         *pLCHSGeometry = pData->LCHSGeometry;
    408         LogFlow(("%s: returns VINF_SUCCESS {%d,%d,%d}\n", __FUNCTION__, pData->LCHSGeometry.cCylinders, pData->LCHSGeometry.cHeads, pData->LCHSGeometry.cSectors));
     403    if (    pThis->LCHSGeometry.cCylinders > 0
     404        &&  pThis->LCHSGeometry.cHeads > 0
     405        &&  pThis->LCHSGeometry.cSectors > 0)
     406    {
     407        *pLCHSGeometry = pThis->LCHSGeometry;
     408        LogFlow(("%s: returns VINF_SUCCESS {%d,%d,%d}\n", __FUNCTION__, pThis->LCHSGeometry.cCylinders, pThis->LCHSGeometry.cHeads, pThis->LCHSGeometry.cSectors));
    409409        return VINF_SUCCESS;
    410410    }
     
    413413     * Call media.
    414414     */
    415     int rc = pData->pDrvMedia->pfnBiosGetLCHSGeometry(pData->pDrvMedia, &pData->LCHSGeometry);
     415    int rc = pThis->pDrvMedia->pfnBiosGetLCHSGeometry(pThis->pDrvMedia, &pThis->LCHSGeometry);
    416416
    417417    if (RT_SUCCESS(rc))
    418418    {
    419         *pLCHSGeometry = pData->LCHSGeometry;
    420         LogFlow(("%s: returns %Vrc {%d,%d,%d}\n", __FUNCTION__, rc, pData->LCHSGeometry.cCylinders, pData->LCHSGeometry.cHeads, pData->LCHSGeometry.cSectors));
     419        *pLCHSGeometry = pThis->LCHSGeometry;
     420        LogFlow(("%s: returns %Vrc {%d,%d,%d}\n", __FUNCTION__, rc, pThis->LCHSGeometry.cCylinders, pThis->LCHSGeometry.cHeads, pThis->LCHSGeometry.cSectors));
    421421    }
    422422    else if (rc == VERR_NOT_IMPLEMENTED)
     
    433433{
    434434    LogFlow(("%s: cCylinders=%d cHeads=%d cSectors=%d\n", __FUNCTION__, pLCHSGeometry->cCylinders, pLCHSGeometry->cHeads, pLCHSGeometry->cSectors));
    435     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    436 
    437     /*
    438      * Check the state.
    439      */
    440     if (!pData->pDrvMedia)
     435    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     436
     437    /*
     438     * Check the state.
     439     */
     440    if (!pThis->pDrvMedia)
    441441    {
    442442        AssertMsgFailed(("Invalid state! Not mounted!\n"));
     
    447447     * Call media. Ignore the not implemented return code.
    448448     */
    449     int rc = pData->pDrvMedia->pfnBiosSetLCHSGeometry(pData->pDrvMedia, pLCHSGeometry);
     449    int rc = pThis->pDrvMedia->pfnBiosSetLCHSGeometry(pThis->pDrvMedia, pLCHSGeometry);
    450450
    451451    if (    RT_SUCCESS(rc)
    452452        ||  rc == VERR_NOT_IMPLEMENTED)
    453453    {
    454         pData->LCHSGeometry = *pLCHSGeometry;
     454        pThis->LCHSGeometry = *pLCHSGeometry;
    455455        rc = VINF_SUCCESS;
    456456    }
     
    462462static DECLCALLBACK(bool) drvblockIsVisible(PPDMIBLOCKBIOS pInterface)
    463463{
    464     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    465     LogFlow(("drvblockIsVisible: returns %d\n", pData->fBiosVisible));
    466     return pData->fBiosVisible;
     464    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     465    LogFlow(("drvblockIsVisible: returns %d\n", pThis->fBiosVisible));
     466    return pThis->fBiosVisible;
    467467}
    468468
     
    471471static DECLCALLBACK(PDMBLOCKTYPE) drvblockBiosGetType(PPDMIBLOCKBIOS pInterface)
    472472{
    473     PDRVBLOCK pData = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
    474     LogFlow(("drvblockBiosGetType: returns %d\n", pData->enmType));
    475     return pData->enmType;
     473    PDRVBLOCK pThis = PDMIBLOCKBIOS_2_DRVBLOCK(pInterface);
     474    LogFlow(("drvblockBiosGetType: returns %d\n", pThis->enmType));
     475    return pThis->enmType;
    476476}
    477477
     
    488488{
    489489    LogFlow(("drvblockMount: pszFilename=%p:{%s} pszCoreDriver=%p:{%s}\n", pszFilename, pszFilename, pszCoreDriver, pszCoreDriver));
    490     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
     490    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
    491491
    492492    /*
    493493     * Validate state.
    494494     */
    495     if (pData->pDrvMedia)
     495    if (pThis->pDrvMedia)
    496496    {
    497497        AssertMsgFailed(("Already mounted\n"));
     
    504504    if (pszFilename)
    505505    {
    506         int rc = pData->pDrvIns->pDrvHlp->pfnMountPrepare(pData->pDrvIns, pszFilename, pszCoreDriver);
     506        int rc = pThis->pDrvIns->pDrvHlp->pfnMountPrepare(pThis->pDrvIns, pszFilename, pszCoreDriver);
    507507        if (RT_FAILURE(rc))
    508508        {
     
    516516     */
    517517    PPDMIBASE pBase;
    518     int rc = pData->pDrvIns->pDrvHlp->pfnAttach(pData->pDrvIns, &pBase);
     518    int rc = pThis->pDrvIns->pDrvHlp->pfnAttach(pThis->pDrvIns, &pBase);
    519519    if (RT_FAILURE(rc))
    520520    {
     
    523523    }
    524524
    525     pData->pDrvMedia = (PPDMIMEDIA)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA);
    526     if (pData->pDrvMedia)
     525    pThis->pDrvMedia = (PPDMIMEDIA)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA);
     526    if (pThis->pDrvMedia)
    527527    {
    528528        /*
    529529         * Initialize state.
    530530         */
    531         pData->fLocked = false;
    532         pData->PCHSGeometry.cCylinders  = 0;
    533         pData->PCHSGeometry.cHeads      = 0;
    534         pData->PCHSGeometry.cSectors    = 0;
    535         pData->LCHSGeometry.cCylinders  = 0;
    536         pData->LCHSGeometry.cHeads      = 0;
    537         pData->LCHSGeometry.cSectors    = 0;
     531        pThis->fLocked = false;
     532        pThis->PCHSGeometry.cCylinders  = 0;
     533        pThis->PCHSGeometry.cHeads      = 0;
     534        pThis->PCHSGeometry.cSectors    = 0;
     535        pThis->LCHSGeometry.cCylinders  = 0;
     536        pThis->LCHSGeometry.cHeads      = 0;
     537        pThis->LCHSGeometry.cSectors    = 0;
    538538#ifdef VBOX_PERIODIC_FLUSH
    539         pData->cbDataWritten = 0;
     539        pThis->cbDataWritten = 0;
    540540#endif /* VBOX_PERIODIC_FLUSH */
    541541
     
    543543         * Notify driver/device above us.
    544544         */
    545         if (pData->pDrvMountNotify)
    546             pData->pDrvMountNotify->pfnMountNotify(pData->pDrvMountNotify);
     545        if (pThis->pDrvMountNotify)
     546            pThis->pDrvMountNotify->pfnMountNotify(pThis->pDrvMountNotify);
    547547        Log(("drvblockMount: Success\n"));
    548548        return VINF_SUCCESS;
     
    555555     */
    556556    AssertMsgFailed(("No media interface!\n"));
    557     int rc2 = pData->pDrvIns->pDrvHlp->pfnDetach(pData->pDrvIns);
     557    int rc2 = pThis->pDrvIns->pDrvHlp->pfnDetach(pThis->pDrvIns);
    558558    AssertRC(rc2);
    559     pData->pDrvMedia = NULL;
     559    pThis->pDrvMedia = NULL;
    560560    return rc;
    561561}
     
    565565static DECLCALLBACK(int) drvblockUnmount(PPDMIMOUNT pInterface, bool fForce)
    566566{
    567     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
     567    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
    568568
    569569    /*
    570570     * Validate state.
    571571     */
    572     if (!pData->pDrvMedia)
     572    if (!pThis->pDrvMedia)
    573573    {
    574574        Log(("drvblockUmount: Not mounted\n"));
    575575        return VERR_PDM_MEDIA_NOT_MOUNTED;
    576576    }
    577     if (pData->fLocked && !fForce)
     577    if (pThis->fLocked && !fForce)
    578578    {
    579579        Log(("drvblockUmount: Locked\n"));
     
    582582
    583583    /* Media is no longer locked even if it was previously. */
    584     pData->fLocked = false;
     584    pThis->fLocked = false;
    585585
    586586    /*
    587587     * Detach the media driver and query it's interface.
    588588     */
    589     int rc = pData->pDrvIns->pDrvHlp->pfnDetach(pData->pDrvIns);
     589    int rc = pThis->pDrvIns->pDrvHlp->pfnDetach(pThis->pDrvIns);
    590590    if (RT_FAILURE(rc))
    591591    {
     
    593593        return rc;
    594594    }
    595     Assert(!pData->pDrvMedia);
     595    Assert(!pThis->pDrvMedia);
    596596
    597597    /*
    598598     * Notify driver/device above us.
    599599     */
    600     if (pData->pDrvMountNotify)
    601         pData->pDrvMountNotify->pfnUnmountNotify(pData->pDrvMountNotify);
     600    if (pThis->pDrvMountNotify)
     601        pThis->pDrvMountNotify->pfnUnmountNotify(pThis->pDrvMountNotify);
    602602    Log(("drvblockUnmount: success\n"));
    603603    return VINF_SUCCESS;
     
    608608static DECLCALLBACK(bool) drvblockIsMounted(PPDMIMOUNT pInterface)
    609609{
    610     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
    611     return pData->pDrvMedia != NULL;
     610    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
     611    return pThis->pDrvMedia != NULL;
    612612}
    613613
     
    615615static DECLCALLBACK(int) drvblockLock(PPDMIMOUNT pInterface)
    616616{
    617     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
    618     Log(("drvblockLock: %d -> %d\n", pData->fLocked, true));
    619     pData->fLocked = true;
     617    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
     618    Log(("drvblockLock: %d -> %d\n", pThis->fLocked, true));
     619    pThis->fLocked = true;
    620620    return VINF_SUCCESS;
    621621}
     
    624624static DECLCALLBACK(int) drvblockUnlock(PPDMIMOUNT pInterface)
    625625{
    626     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
    627     Log(("drvblockUnlock: %d -> %d\n", pData->fLocked, false));
    628     pData->fLocked = false;
     626    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
     627    Log(("drvblockUnlock: %d -> %d\n", pThis->fLocked, false));
     628    pThis->fLocked = false;
    629629    return VINF_SUCCESS;
    630630}
     
    633633static DECLCALLBACK(bool) drvblockIsLocked(PPDMIMOUNT pInterface)
    634634{
    635     PDRVBLOCK pData = PDMIMOUNT_2_DRVBLOCK(pInterface);
    636     return pData->fLocked;
     635    PDRVBLOCK pThis = PDMIMOUNT_2_DRVBLOCK(pInterface);
     636    return pThis->fLocked;
    637637}
    638638
     
    644644{
    645645    PPDMDRVINS  pDrvIns = PDMIBASE_2_PDMDRV(pInterface);
    646     PDRVBLOCK   pData = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
     646    PDRVBLOCK   pThis = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
    647647    switch (enmInterface)
    648648    {
     
    650650            return &pDrvIns->IBase;
    651651        case PDMINTERFACE_BLOCK:
    652             return &pData->IBlock;
     652            return &pThis->IBlock;
    653653        case PDMINTERFACE_BLOCK_BIOS:
    654             return pData->fBiosVisible ? &pData->IBlockBios : NULL;
     654            return pThis->fBiosVisible ? &pThis->IBlockBios : NULL;
    655655        case PDMINTERFACE_MOUNT:
    656             return pData->fMountable ? &pData->IMount : NULL;
     656            return pThis->fMountable ? &pThis->IMount : NULL;
    657657        case PDMINTERFACE_BLOCK_ASYNC:
    658             return pData->pDrvMediaAsync ? &pData->IBlockAsync : NULL;
     658            return pThis->pDrvMediaAsync ? &pThis->IBlockAsync : NULL;
    659659        case PDMINTERFACE_MEDIA_ASYNC_PORT:
    660             return pData->pDrvBlockAsyncPort ? &pData->IMediaAsyncPort : NULL;
     660            return pThis->pDrvBlockAsyncPort ? &pThis->IMediaAsyncPort : NULL;
    661661        default:
    662662            return NULL;
     
    670670static DECLCALLBACK(void)  drvblockDetach(PPDMDRVINS pDrvIns)
    671671{
    672     PDRVBLOCK pData = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
    673     pData->pDrvMedia = NULL;
    674     pData->pDrvMediaAsync = NULL;
     672    PDRVBLOCK pThis = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
     673    pThis->pDrvMedia = NULL;
     674    pThis->pDrvMediaAsync = NULL;
    675675}
    676676
     
    683683static DECLCALLBACK(void)  drvblockReset(PPDMDRVINS pDrvIns)
    684684{
    685     PDRVBLOCK pData = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
    686 
    687     pData->fLocked = false;
     685    PDRVBLOCK pThis = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
     686
     687    pThis->fLocked = false;
    688688}
    689689
     
    700700static DECLCALLBACK(int) drvblockConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    701701{
    702     PDRVBLOCK pData = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
     702    PDRVBLOCK pThis = PDMINS_2_DATA(pDrvIns, PDRVBLOCK);
    703703    LogFlow(("drvblockConstruct: iInstance=%d\n", pDrvIns->iInstance));
    704704
     
    716716     * Initialize most of the data members.
    717717     */
    718     pData->pDrvIns                          = pDrvIns;
     718    pThis->pDrvIns                          = pDrvIns;
    719719
    720720    /* IBase. */
     
    722722
    723723    /* IBlock. */
    724     pData->IBlock.pfnRead                   = drvblockRead;
    725     pData->IBlock.pfnWrite                  = drvblockWrite;
    726     pData->IBlock.pfnFlush                  = drvblockFlush;
    727     pData->IBlock.pfnIsReadOnly             = drvblockIsReadOnly;
    728     pData->IBlock.pfnGetSize                = drvblockGetSize;
    729     pData->IBlock.pfnGetType                = drvblockGetType;
    730     pData->IBlock.pfnGetUuid                = drvblockGetUuid;
     724    pThis->IBlock.pfnRead                   = drvblockRead;
     725    pThis->IBlock.pfnWrite                  = drvblockWrite;
     726    pThis->IBlock.pfnFlush                  = drvblockFlush;
     727    pThis->IBlock.pfnIsReadOnly             = drvblockIsReadOnly;
     728    pThis->IBlock.pfnGetSize                = drvblockGetSize;
     729    pThis->IBlock.pfnGetType                = drvblockGetType;
     730    pThis->IBlock.pfnGetUuid                = drvblockGetUuid;
    731731
    732732    /* IBlockBios. */
    733     pData->IBlockBios.pfnGetPCHSGeometry    = drvblockGetPCHSGeometry;
    734     pData->IBlockBios.pfnSetPCHSGeometry    = drvblockSetPCHSGeometry;
    735     pData->IBlockBios.pfnGetLCHSGeometry    = drvblockGetLCHSGeometry;
    736     pData->IBlockBios.pfnSetLCHSGeometry    = drvblockSetLCHSGeometry;
    737     pData->IBlockBios.pfnIsVisible          = drvblockIsVisible;
    738     pData->IBlockBios.pfnGetType            = drvblockBiosGetType;
     733    pThis->IBlockBios.pfnGetPCHSGeometry    = drvblockGetPCHSGeometry;
     734    pThis->IBlockBios.pfnSetPCHSGeometry    = drvblockSetPCHSGeometry;
     735    pThis->IBlockBios.pfnGetLCHSGeometry    = drvblockGetLCHSGeometry;
     736    pThis->IBlockBios.pfnSetLCHSGeometry    = drvblockSetLCHSGeometry;
     737    pThis->IBlockBios.pfnIsVisible          = drvblockIsVisible;
     738    pThis->IBlockBios.pfnGetType            = drvblockBiosGetType;
    739739
    740740    /* IMount. */
    741     pData->IMount.pfnMount                  = drvblockMount;
    742     pData->IMount.pfnUnmount                = drvblockUnmount;
    743     pData->IMount.pfnIsMounted              = drvblockIsMounted;
    744     pData->IMount.pfnLock                   = drvblockLock;
    745     pData->IMount.pfnUnlock                 = drvblockUnlock;
    746     pData->IMount.pfnIsLocked               = drvblockIsLocked;
     741    pThis->IMount.pfnMount                  = drvblockMount;
     742    pThis->IMount.pfnUnmount                = drvblockUnmount;
     743    pThis->IMount.pfnIsMounted              = drvblockIsMounted;
     744    pThis->IMount.pfnLock                   = drvblockLock;
     745    pThis->IMount.pfnUnlock                 = drvblockUnlock;
     746    pThis->IMount.pfnIsLocked               = drvblockIsLocked;
    747747
    748748    /* IBlockAsync. */
    749     pData->IBlockAsync.pfnStartRead         = drvblockAsyncReadStart;
    750     pData->IBlockAsync.pfnStartWrite        = drvblockAsyncWriteStart;
     749    pThis->IBlockAsync.pfnStartRead         = drvblockAsyncReadStart;
     750    pThis->IBlockAsync.pfnStartWrite        = drvblockAsyncWriteStart;
    751751
    752752    /* IMediaAsyncPort. */
    753     pData->IMediaAsyncPort.pfnTransferCompleteNotify  = drvblockAsyncTransferCompleteNotify;
     753    pThis->IMediaAsyncPort.pfnTransferCompleteNotify  = drvblockAsyncTransferCompleteNotify;
    754754
    755755    /*
    756756     * Get the IBlockPort & IMountNotify interfaces of the above driver/device.
    757757     */
    758     pData->pDrvBlockPort = (PPDMIBLOCKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_BLOCK_PORT);
    759     if (!pData->pDrvBlockPort)
     758    pThis->pDrvBlockPort = (PPDMIBLOCKPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_BLOCK_PORT);
     759    if (!pThis->pDrvBlockPort)
    760760        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE,
    761761                                N_("No block port interface above"));
    762762
    763763    /* Try to get the optional async block port interface above. */
    764     pData->pDrvBlockAsyncPort = (PPDMIBLOCKASYNCPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_BLOCK_ASYNC_PORT);
    765 
    766     pData->pDrvMountNotify = (PPDMIMOUNTNOTIFY)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_MOUNT_NOTIFY);
     764    pThis->pDrvBlockAsyncPort = (PPDMIBLOCKASYNCPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_BLOCK_ASYNC_PORT);
     765
     766    pThis->pDrvMountNotify = (PPDMIMOUNTNOTIFY)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_MOUNT_NOTIFY);
    767767
    768768    /*
     
    775775        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_BLOCK_NO_TYPE, N_("Failed to obtain the type"));
    776776    if (!strcmp(psz, "HardDisk"))
    777         pData->enmType = PDMBLOCKTYPE_HARD_DISK;
     777        pThis->enmType = PDMBLOCKTYPE_HARD_DISK;
    778778    else if (!strcmp(psz, "DVD"))
    779         pData->enmType = PDMBLOCKTYPE_DVD;
     779        pThis->enmType = PDMBLOCKTYPE_DVD;
    780780    else if (!strcmp(psz, "CDROM"))
    781         pData->enmType = PDMBLOCKTYPE_CDROM;
     781        pThis->enmType = PDMBLOCKTYPE_CDROM;
    782782    else if (!strcmp(psz, "Floppy 2.88"))
    783         pData->enmType = PDMBLOCKTYPE_FLOPPY_2_88;
     783        pThis->enmType = PDMBLOCKTYPE_FLOPPY_2_88;
    784784    else if (!strcmp(psz, "Floppy 1.44"))
    785         pData->enmType = PDMBLOCKTYPE_FLOPPY_1_44;
     785        pThis->enmType = PDMBLOCKTYPE_FLOPPY_1_44;
    786786    else if (!strcmp(psz, "Floppy 1.20"))
    787         pData->enmType = PDMBLOCKTYPE_FLOPPY_1_20;
     787        pThis->enmType = PDMBLOCKTYPE_FLOPPY_1_20;
    788788    else if (!strcmp(psz, "Floppy 720"))
    789         pData->enmType = PDMBLOCKTYPE_FLOPPY_720;
     789        pThis->enmType = PDMBLOCKTYPE_FLOPPY_720;
    790790    else if (!strcmp(psz, "Floppy 360"))
    791         pData->enmType = PDMBLOCKTYPE_FLOPPY_360;
     791        pThis->enmType = PDMBLOCKTYPE_FLOPPY_360;
    792792    else
    793793    {
     
    797797        return VERR_PDM_BLOCK_UNKNOWN_TYPE;
    798798    }
    799     Log2(("drvblockConstruct: enmType=%d\n", pData->enmType));
     799    Log2(("drvblockConstruct: enmType=%d\n", pThis->enmType));
    800800    MMR3HeapFree(psz); psz = NULL;
    801801
    802802    /* Mountable */
    803     rc = CFGMR3QueryBoolDef(pCfgHandle, "Mountable", &pData->fMountable, false);
     803    rc = CFGMR3QueryBoolDef(pCfgHandle, "Mountable", &pThis->fMountable, false);
    804804    if (RT_FAILURE(rc))
    805805        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"Mountable\" from the config"));
    806806
    807807    /* Locked */
    808     rc = CFGMR3QueryBoolDef(pCfgHandle, "Locked", &pData->fLocked, false);
     808    rc = CFGMR3QueryBoolDef(pCfgHandle, "Locked", &pThis->fLocked, false);
    809809    if (RT_FAILURE(rc))
    810810        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"Locked\" from the config"));
    811811
    812812    /* BIOS visible */
    813     rc = CFGMR3QueryBoolDef(pCfgHandle, "BIOSVisible", &pData->fBiosVisible, true);
     813    rc = CFGMR3QueryBoolDef(pCfgHandle, "BIOSVisible", &pThis->fBiosVisible, true);
    814814    if (RT_FAILURE(rc))
    815815        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"BIOSVisible\" from the config"));
     
    818818
    819819    /* Cylinders */
    820     rc = CFGMR3QueryU32Def(pCfgHandle, "Cylinders", &pData->LCHSGeometry.cCylinders, 0);
     820    rc = CFGMR3QueryU32Def(pCfgHandle, "Cylinders", &pThis->LCHSGeometry.cCylinders, 0);
    821821    if (RT_FAILURE(rc))
    822822        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"Cylinders\" from the config"));
    823823
    824824    /* Heads */
    825     rc = CFGMR3QueryU32Def(pCfgHandle, "Heads", &pData->LCHSGeometry.cHeads, 0);
     825    rc = CFGMR3QueryU32Def(pCfgHandle, "Heads", &pThis->LCHSGeometry.cHeads, 0);
    826826    if (RT_FAILURE(rc))
    827827        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"Heads\" from the config"));
    828828
    829829    /* Sectors */
    830     rc = CFGMR3QueryU32Def(pCfgHandle, "Sectors", &pData->LCHSGeometry.cSectors, 0);
     830    rc = CFGMR3QueryU32Def(pCfgHandle, "Sectors", &pThis->LCHSGeometry.cSectors, 0);
    831831    if (RT_FAILURE(rc))
    832832        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"Sectors\" from the config"));
     
    835835    rc = CFGMR3QueryStringAlloc(pCfgHandle, "Uuid", &psz);
    836836    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    837         RTUuidClear(&pData->Uuid);
     837        RTUuidClear(&pThis->Uuid);
    838838    else if (RT_SUCCESS(rc))
    839839    {
    840         rc = RTUuidFromStr(&pData->Uuid, psz);
     840        rc = RTUuidFromStr(&pThis->Uuid, psz);
    841841        if (RT_FAILURE(rc))
    842842        {
     
    852852
    853853#ifdef VBOX_PERIODIC_FLUSH
    854     rc = CFGMR3QueryU32Def(pCfgHandle, "FlushInterval", &pData->cbFlushInterval, 0);
     854    rc = CFGMR3QueryU32Def(pCfgHandle, "FlushInterval", &pThis->cbFlushInterval, 0);
    855855    if (RT_FAILURE(rc))
    856856        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"FlushInterval\" from the config"));
     
    858858
    859859#ifdef VBOX_IGNORE_FLUSH
    860     rc = CFGMR3QueryBoolDef(pCfgHandle, "IgnoreFlush", &pData->fIgnoreFlush, true);
     860    rc = CFGMR3QueryBoolDef(pCfgHandle, "IgnoreFlush", &pThis->fIgnoreFlush, true);
    861861    if (RT_FAILURE(rc))
    862862        return PDMDRV_SET_ERROR(pDrvIns, rc, N_("Failed to query \"IgnoreFlush\" from the config"));
     
    869869    rc = pDrvIns->pDrvHlp->pfnAttach(pDrvIns, &pBase);
    870870    if (    rc == VERR_PDM_NO_ATTACHED_DRIVER
    871         &&  pData->enmType != PDMBLOCKTYPE_HARD_DISK)
     871        &&  pThis->enmType != PDMBLOCKTYPE_HARD_DISK)
    872872        return VINF_SUCCESS;
    873873    if (RT_FAILURE(rc))
     
    876876        return rc;
    877877    }
    878     pData->pDrvMedia = (PPDMIMEDIA)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA);
    879     if (!pData->pDrvMedia)
     878    pThis->pDrvMedia = (PPDMIMEDIA)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA);
     879    if (!pThis->pDrvMedia)
    880880        return PDMDRV_SET_ERROR(pDrvIns, VERR_PDM_MISSING_INTERFACE_BELOW,
    881881                                N_("No media or async media interface below"));
    882882
    883883    /* Try to get the optional async interface. */
    884     pData->pDrvMediaAsync = (PPDMIMEDIAASYNC)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA_ASYNC);
    885 
    886     if (RTUuidIsNull(&pData->Uuid))
    887     {
    888         if (pData->enmType == PDMBLOCKTYPE_HARD_DISK)
    889             pData->pDrvMedia->pfnGetUuid(pData->pDrvMedia, &pData->Uuid);
     884    pThis->pDrvMediaAsync = (PPDMIMEDIAASYNC)pBase->pfnQueryInterface(pBase, PDMINTERFACE_MEDIA_ASYNC);
     885
     886    if (RTUuidIsNull(&pThis->Uuid))
     887    {
     888        if (pThis->enmType == PDMBLOCKTYPE_HARD_DISK)
     889            pThis->pDrvMedia->pfnGetUuid(pThis->pDrvMedia, &pThis->Uuid);
    890890    }
    891891
  • trunk/src/VBox/Devices/Storage/DrvMediaISO.cpp

    r11267 r11269  
    9999static DECLCALLBACK(int) drvMediaISOConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    100100{
    101     PDRVMEDIAISO pData = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
     101    PDRVMEDIAISO pThis = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
    102102
    103103    /*
    104104     * Init the static parts.
    105105     */
    106     pData->pDrvIns                      = pDrvIns;
    107     pData->File                         = NIL_RTFILE;
     106    pThis->pDrvIns                      = pDrvIns;
     107    pThis->File                         = NIL_RTFILE;
    108108    /* IBase */
    109109    pDrvIns->IBase.pfnQueryInterface    = drvMediaISOQueryInterface;
    110110    /* IMedia */
    111     pData->IMedia.pfnRead               = drvMediaISORead;
    112     pData->IMedia.pfnWrite              = drvMediaISOWrite;
    113     pData->IMedia.pfnFlush              = drvMediaISOFlush;
    114     pData->IMedia.pfnGetSize            = drvMediaISOGetSize;
    115     pData->IMedia.pfnGetUuid            = drvMediaISOGetUuid;
    116     pData->IMedia.pfnIsReadOnly         = drvMediaISOIsReadOnly;
    117     pData->IMedia.pfnBiosGetPCHSGeometry = drvMediaISOBiosGetPCHSGeometry;
    118     pData->IMedia.pfnBiosSetPCHSGeometry = drvMediaISOBiosSetPCHSGeometry;
    119     pData->IMedia.pfnBiosGetLCHSGeometry = drvMediaISOBiosGetLCHSGeometry;
    120     pData->IMedia.pfnBiosSetLCHSGeometry = drvMediaISOBiosSetLCHSGeometry;
     111    pThis->IMedia.pfnRead               = drvMediaISORead;
     112    pThis->IMedia.pfnWrite              = drvMediaISOWrite;
     113    pThis->IMedia.pfnFlush              = drvMediaISOFlush;
     114    pThis->IMedia.pfnGetSize            = drvMediaISOGetSize;
     115    pThis->IMedia.pfnGetUuid            = drvMediaISOGetUuid;
     116    pThis->IMedia.pfnIsReadOnly         = drvMediaISOIsReadOnly;
     117    pThis->IMedia.pfnBiosGetPCHSGeometry = drvMediaISOBiosGetPCHSGeometry;
     118    pThis->IMedia.pfnBiosSetPCHSGeometry = drvMediaISOBiosSetPCHSGeometry;
     119    pThis->IMedia.pfnBiosGetLCHSGeometry = drvMediaISOBiosGetLCHSGeometry;
     120    pThis->IMedia.pfnBiosSetLCHSGeometry = drvMediaISOBiosSetLCHSGeometry;
    121121
    122122    /*
     
    134134     * Open the image.
    135135     */
    136     rc = RTFileOpen(&pData->File, pszName,
     136    rc = RTFileOpen(&pThis->File, pszName,
    137137                    RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_WRITE);
    138138    if (RT_SUCCESS(rc))
    139139    {
    140140        LogFlow(("drvMediaISOConstruct: ISO image '%s' opened successfully.\n", pszName));
    141         pData->pszFilename = pszName;
     141        pThis->pszFilename = pszName;
    142142    }
    143143    else
     
    161161static DECLCALLBACK(void) drvMediaISODestruct(PPDMDRVINS pDrvIns)
    162162{
    163     PDRVMEDIAISO pData = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
    164     LogFlow(("drvMediaISODestruct: '%s'\n", pData->pszFilename));
    165 
    166     if (pData->File != NIL_RTFILE)
    167     {
    168         RTFileClose(pData->File);
    169         pData->File = NIL_RTFILE;
    170     }
    171     if (pData->pszFilename)
    172         MMR3HeapFree(pData->pszFilename);
     163    PDRVMEDIAISO pThis = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
     164    LogFlow(("drvMediaISODestruct: '%s'\n", pThis->pszFilename));
     165
     166    if (pThis->File != NIL_RTFILE)
     167    {
     168        RTFileClose(pThis->File);
     169        pThis->File = NIL_RTFILE;
     170    }
     171    if (pThis->pszFilename)
     172        MMR3HeapFree(pThis->pszFilename);
    173173}
    174174
     
    177177static DECLCALLBACK(uint64_t) drvMediaISOGetSize(PPDMIMEDIA pInterface)
    178178{
    179     PDRVMEDIAISO pData = PDMIMEDIA_2_DRVMEDIAISO(pInterface);
    180     LogFlow(("drvMediaISOGetSize: '%s'\n", pData->pszFilename));
     179    PDRVMEDIAISO pThis = PDMIMEDIA_2_DRVMEDIAISO(pInterface);
     180    LogFlow(("drvMediaISOGetSize: '%s'\n", pThis->pszFilename));
    181181
    182182    uint64_t cbFile;
    183     int rc = RTFileGetSize(pData->File, &cbFile);
     183    int rc = RTFileGetSize(pThis->File, &cbFile);
    184184    if (RT_SUCCESS(rc))
    185185    {
    186         LogFlow(("drvMediaISOGetSize: returns %lld (%s)\n", cbFile, pData->pszFilename));
     186        LogFlow(("drvMediaISOGetSize: returns %lld (%s)\n", cbFile, pThis->pszFilename));
    187187        return cbFile;
    188188    }
    189189
    190     AssertMsgFailed(("Error querying ISO file size, rc=%Vrc. (%s)\n", rc, pData->pszFilename));
     190    AssertMsgFailed(("Error querying ISO file size, rc=%Vrc. (%s)\n", rc, pThis->pszFilename));
    191191    return 0;
    192192}
     
    228228static DECLCALLBACK(int) drvMediaISORead(PPDMIMEDIA pInterface, uint64_t off, void *pvBuf, size_t cbRead)
    229229{
    230     PDRVMEDIAISO pData = PDMIMEDIA_2_DRVMEDIAISO(pInterface);
    231     LogFlow(("drvMediaISORead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n", off, pvBuf, cbRead, pData->pszFilename));
    232 
    233     Assert(pData->File);
     230    PDRVMEDIAISO pThis = PDMIMEDIA_2_DRVMEDIAISO(pInterface);
     231    LogFlow(("drvMediaISORead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n", off, pvBuf, cbRead, pThis->pszFilename));
     232
     233    Assert(pThis->File);
    234234    Assert(pvBuf);
    235235
     
    237237     * Seek to the position and read.
    238238     */
    239     int rc = RTFileSeek(pData->File, off, RTFILE_SEEK_BEGIN, NULL);
     239    int rc = RTFileSeek(pThis->File, off, RTFILE_SEEK_BEGIN, NULL);
    240240    if (RT_SUCCESS(rc))
    241241    {
    242         rc = RTFileRead(pData->File, pvBuf, cbRead, NULL);
     242        rc = RTFileRead(pThis->File, pvBuf, cbRead, NULL);
    243243        if (RT_SUCCESS(rc))
    244244        {
    245245            Log2(("drvMediaISORead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n"
    246246                  "%16.*Vhxd\n",
    247                   off, pvBuf, cbRead, pData->pszFilename,
     247                  off, pvBuf, cbRead, pThis->pszFilename,
    248248                  cbRead, pvBuf));
    249249        }
    250250        else
    251251            AssertMsgFailed(("RTFileRead(%d, %p, %#x) -> %Vrc (off=%#llx '%s')\n",
    252                              pData->File, pvBuf, cbRead, rc, off, pData->pszFilename));
     252                             pThis->File, pvBuf, cbRead, rc, off, pThis->pszFilename));
    253253    }
    254254    else
    255         AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pData->File, off, rc));
     255        AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pThis->File, off, rc));
    256256    LogFlow(("drvMediaISORead: returns %Vrc\n", rc));
    257257    return rc;
     
    302302{
    303303    PPDMDRVINS pDrvIns = PDMIBASE_2_DRVINS(pInterface);
    304     PDRVMEDIAISO pData = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
     304    PDRVMEDIAISO pThis = PDMINS_2_DATA(pDrvIns, PDRVMEDIAISO);
    305305    switch (enmInterface)
    306306    {
     
    308308            return &pDrvIns->IBase;
    309309        case PDMINTERFACE_MEDIA:
    310             return &pData->IMedia;
     310            return &pThis->IMedia;
    311311        default:
    312312            return NULL;
  • trunk/src/VBox/Devices/Storage/DrvRawImage.cpp

    r11267 r11269  
    102102static DECLCALLBACK(int) drvRawImageConstruct(PPDMDRVINS pDrvIns, PCFGMNODE pCfgHandle)
    103103{
    104     PDRVRAWIMAGE pData = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
     104    PDRVRAWIMAGE pThis = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
    105105
    106106    /*
    107107     * Init the static parts.
    108108     */
    109     pData->pDrvIns                      = pDrvIns;
    110     pData->File                         = NIL_RTFILE;
     109    pThis->pDrvIns                      = pDrvIns;
     110    pThis->File                         = NIL_RTFILE;
    111111    /* IBase */
    112112    pDrvIns->IBase.pfnQueryInterface    = drvRawImageQueryInterface;
    113113    /* IMedia */
    114     pData->IMedia.pfnRead               = drvRawImageRead;
    115     pData->IMedia.pfnWrite              = drvRawImageWrite;
    116     pData->IMedia.pfnFlush              = drvRawImageFlush;
    117     pData->IMedia.pfnGetSize            = drvRawImageGetSize;
    118     pData->IMedia.pfnGetUuid            = drvRawImageGetUuid;
    119     pData->IMedia.pfnIsReadOnly         = drvRawImageIsReadOnly;
    120     pData->IMedia.pfnBiosGetPCHSGeometry = drvRawImageBiosGetPCHSGeometry;
    121     pData->IMedia.pfnBiosSetPCHSGeometry = drvRawImageBiosSetPCHSGeometry;
    122     pData->IMedia.pfnBiosGetLCHSGeometry = drvRawImageBiosGetLCHSGeometry;
    123     pData->IMedia.pfnBiosSetLCHSGeometry = drvRawImageBiosSetLCHSGeometry;
     114    pThis->IMedia.pfnRead               = drvRawImageRead;
     115    pThis->IMedia.pfnWrite              = drvRawImageWrite;
     116    pThis->IMedia.pfnFlush              = drvRawImageFlush;
     117    pThis->IMedia.pfnGetSize            = drvRawImageGetSize;
     118    pThis->IMedia.pfnGetUuid            = drvRawImageGetUuid;
     119    pThis->IMedia.pfnIsReadOnly         = drvRawImageIsReadOnly;
     120    pThis->IMedia.pfnBiosGetPCHSGeometry = drvRawImageBiosGetPCHSGeometry;
     121    pThis->IMedia.pfnBiosSetPCHSGeometry = drvRawImageBiosSetPCHSGeometry;
     122    pThis->IMedia.pfnBiosGetLCHSGeometry = drvRawImageBiosGetLCHSGeometry;
     123    pThis->IMedia.pfnBiosSetLCHSGeometry = drvRawImageBiosSetLCHSGeometry;
    124124
    125125    /*
     
    140140     * Open the image.
    141141     */
    142     rc = RTFileOpen(&pData->File, pszName,
     142    rc = RTFileOpen(&pThis->File, pszName,
    143143                    RTFILE_O_READWRITE | RTFILE_O_OPEN | RTFILE_O_DENY_NONE);
    144144    if (RT_SUCCESS(rc))
    145145    {
    146146        LogFlow(("drvRawImageConstruct: Raw image '%s' opened successfully.\n", pszName));
    147         pData->pszFilename = pszName;
    148         pData->fReadOnly = false;
     147        pThis->pszFilename = pszName;
     148        pThis->fReadOnly = false;
    149149    }
    150150    else
    151151    {
    152         rc = RTFileOpen(&pData->File, pszName,
     152        rc = RTFileOpen(&pThis->File, pszName,
    153153                        RTFILE_O_READ | RTFILE_O_OPEN | RTFILE_O_DENY_NONE);
    154154        if (RT_SUCCESS(rc))
    155155        {
    156156            LogFlow(("drvRawImageConstruct: Raw image '%s' opened successfully.\n", pszName));
    157             pData->pszFilename = pszName;
    158             pData->fReadOnly = true;
     157            pThis->pszFilename = pszName;
     158            pThis->fReadOnly = true;
    159159        }
    160160        else
     
    179179static DECLCALLBACK(void) drvRawImageDestruct(PPDMDRVINS pDrvIns)
    180180{
    181     PDRVRAWIMAGE pData = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
    182     LogFlow(("drvRawImageDestruct: '%s'\n", pData->pszFilename));
    183 
    184     if (pData->File != NIL_RTFILE)
    185     {
    186         RTFileClose(pData->File);
    187         pData->File = NIL_RTFILE;
    188     }
    189     if (pData->pszFilename)
    190         MMR3HeapFree(pData->pszFilename);
     181    PDRVRAWIMAGE pThis = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
     182    LogFlow(("drvRawImageDestruct: '%s'\n", pThis->pszFilename));
     183
     184    if (pThis->File != NIL_RTFILE)
     185    {
     186        RTFileClose(pThis->File);
     187        pThis->File = NIL_RTFILE;
     188    }
     189    if (pThis->pszFilename)
     190        MMR3HeapFree(pThis->pszFilename);
    191191}
    192192
     
    195195static DECLCALLBACK(uint64_t) drvRawImageGetSize(PPDMIMEDIA pInterface)
    196196{
    197     PDRVRAWIMAGE pData = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
    198     LogFlow(("drvRawImageGetSize: '%s'\n", pData->pszFilename));
     197    PDRVRAWIMAGE pThis = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
     198    LogFlow(("drvRawImageGetSize: '%s'\n", pThis->pszFilename));
    199199
    200200    uint64_t cbFile;
    201     int rc = RTFileGetSize(pData->File, &cbFile);
     201    int rc = RTFileGetSize(pThis->File, &cbFile);
    202202    if (RT_SUCCESS(rc))
    203203    {
    204         LogFlow(("drvRawImageGetSize: returns %lld (%s)\n", cbFile, pData->pszFilename));
     204        LogFlow(("drvRawImageGetSize: returns %lld (%s)\n", cbFile, pThis->pszFilename));
    205205        return cbFile;
    206206    }
    207207
    208     AssertMsgFailed(("Error querying Raw image file size, rc=%Vrc. (%s)\n", rc, pData->pszFilename));
     208    AssertMsgFailed(("Error querying Raw image file size, rc=%Vrc. (%s)\n", rc, pThis->pszFilename));
    209209    return 0;
    210210}
     
    246246static DECLCALLBACK(int) drvRawImageRead(PPDMIMEDIA pInterface, uint64_t off, void *pvBuf, size_t cbRead)
    247247{
    248     PDRVRAWIMAGE pData = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
    249     LogFlow(("drvRawImageRead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n", off, pvBuf, cbRead, pData->pszFilename));
    250 
    251     Assert(pData->File);
     248    PDRVRAWIMAGE pThis = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
     249    LogFlow(("drvRawImageRead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n", off, pvBuf, cbRead, pThis->pszFilename));
     250
     251    Assert(pThis->File);
    252252    Assert(pvBuf);
    253253
     
    255255     * Seek to the position and read.
    256256     */
    257     int rc = RTFileSeek(pData->File, off, RTFILE_SEEK_BEGIN, NULL);
     257    int rc = RTFileSeek(pThis->File, off, RTFILE_SEEK_BEGIN, NULL);
    258258    if (RT_SUCCESS(rc))
    259259    {
    260         rc = RTFileRead(pData->File, pvBuf, cbRead, NULL);
     260        rc = RTFileRead(pThis->File, pvBuf, cbRead, NULL);
    261261        if (RT_SUCCESS(rc))
    262262        {
    263263            Log2(("drvRawImageRead: off=%#llx pvBuf=%p cbRead=%#x (%s)\n"
    264264                  "%16.*Vhxd\n",
    265                   off, pvBuf, cbRead, pData->pszFilename,
     265                  off, pvBuf, cbRead, pThis->pszFilename,
    266266                  cbRead, pvBuf));
    267267        }
    268268        else
    269269            AssertMsgFailed(("RTFileRead(%d, %p, %#x) -> %Vrc (off=%#llx '%s')\n",
    270                              pData->File, pvBuf, cbRead, rc, off, pData->pszFilename));
     270                             pThis->File, pvBuf, cbRead, rc, off, pThis->pszFilename));
    271271    }
    272272    else
    273         AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pData->File, off, rc));
     273        AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pThis->File, off, rc));
    274274    LogFlow(("drvRawImageRead: returns %Vrc\n", rc));
    275275    return rc;
     
    280280static DECLCALLBACK(int) drvRawImageWrite(PPDMIMEDIA pInterface, uint64_t off, const void *pvBuf, size_t cbWrite)
    281281{
    282     PDRVRAWIMAGE pData = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
    283     LogFlow(("drvRawImageWrite: off=%#llx pvBuf=%p cbWrite=%#x (%s)\n", off, pvBuf, cbWrite, pData->pszFilename));
    284 
    285     Assert(pData->File);
     282    PDRVRAWIMAGE pThis = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
     283    LogFlow(("drvRawImageWrite: off=%#llx pvBuf=%p cbWrite=%#x (%s)\n", off, pvBuf, cbWrite, pThis->pszFilename));
     284
     285    Assert(pThis->File);
    286286    Assert(pvBuf);
    287287
     
    289289     * Seek to the position and write.
    290290     */
    291     int rc = RTFileSeek(pData->File, off, RTFILE_SEEK_BEGIN, NULL);
     291    int rc = RTFileSeek(pThis->File, off, RTFILE_SEEK_BEGIN, NULL);
    292292    if (RT_SUCCESS(rc))
    293293    {
    294         rc = RTFileWrite(pData->File, pvBuf, cbWrite, NULL);
     294        rc = RTFileWrite(pThis->File, pvBuf, cbWrite, NULL);
    295295        if (RT_SUCCESS(rc))
    296296        {
    297297            Log2(("drvRawImageWrite: off=%#llx pvBuf=%p cbWrite=%#x (%s)\n"
    298298                  "%16.*Vhxd\n",
    299                   off, pvBuf, cbWrite, pData->pszFilename,
     299                  off, pvBuf, cbWrite, pThis->pszFilename,
    300300                  cbWrite, pvBuf));
    301301        }
    302302        else
    303303            AssertMsgFailed(("RTFileWrite(%d, %p, %#x) -> %Vrc (off=%#llx '%s')\n",
    304                              pData->File, pvBuf, cbWrite, rc, off, pData->pszFilename));
     304                             pThis->File, pvBuf, cbWrite, rc, off, pThis->pszFilename));
    305305    }
    306306    else
    307         AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pData->File, off, rc));
     307        AssertMsgFailed(("RTFileSeek(%d,%#llx,) -> %Vrc\n", pThis->File, off, rc));
    308308    LogFlow(("drvRawImageWrite: returns %Vrc\n", rc));
    309309    return rc;
     
    314314static DECLCALLBACK(int) drvRawImageFlush(PPDMIMEDIA pInterface)
    315315{
    316     PDRVRAWIMAGE pData = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
    317     LogFlow(("drvRawImageFlush: (%s)\n", pData->pszFilename));
    318 
    319     Assert(pData->File != NIL_RTFILE);
    320     int rc = RTFileFlush(pData->File);
     316    PDRVRAWIMAGE pThis = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
     317    LogFlow(("drvRawImageFlush: (%s)\n", pThis->pszFilename));
     318
     319    Assert(pThis->File != NIL_RTFILE);
     320    int rc = RTFileFlush(pThis->File);
    321321    LogFlow(("drvRawImageFlush: returns %Vrc\n", rc));
    322322    return rc;
     
    335335static DECLCALLBACK(bool) drvRawImageIsReadOnly(PPDMIMEDIA pInterface)
    336336{
    337     PDRVRAWIMAGE pData = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
    338     return pData->fReadOnly;
     337    PDRVRAWIMAGE pThis = PDMIMEDIA_2_DRVRAWIMAGE(pInterface);
     338    return pThis->fReadOnly;
    339339}
    340340
     
    352352{
    353353    PPDMDRVINS pDrvIns = PDMIBASE_2_DRVINS(pInterface);
    354     PDRVRAWIMAGE pData = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
     354    PDRVRAWIMAGE pThis = PDMINS_2_DATA(pDrvIns, PDRVRAWIMAGE);
    355355    switch (enmInterface)
    356356    {
     
    358358            return &pDrvIns->IBase;
    359359        case PDMINTERFACE_MEDIA:
    360             return &pData->IMedia;
     360            return &pThis->IMedia;
    361361        default:
    362362            return NULL;
  • trunk/src/VBox/Devices/Storage/DrvVD.cpp

    r11267 r11269  
    276276    LogFlow(("%s: off=%#llx pvBuf=%p cbRead=%d\n", __FUNCTION__,
    277277             off, pvBuf, cbRead));
    278     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    279     int rc = VDRead(pData->pDisk, off, pvBuf, cbRead);
     278    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     279    int rc = VDRead(pThis->pDisk, off, pvBuf, cbRead);
    280280    if (RT_SUCCESS(rc))
    281281        Log2(("%s: off=%#llx pvBuf=%p cbRead=%d %.*Vhxd\n", __FUNCTION__,
     
    292292    LogFlow(("%s: off=%#llx pvBuf=%p cbWrite=%d\n", __FUNCTION__,
    293293             off, pvBuf, cbWrite));
    294     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
     294    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
    295295    Log2(("%s: off=%#llx pvBuf=%p cbWrite=%d %.*Vhxd\n", __FUNCTION__,
    296296          off, pvBuf, cbWrite, cbWrite, pvBuf));
    297     int rc = VDWrite(pData->pDisk, off, pvBuf, cbWrite);
     297    int rc = VDWrite(pThis->pDisk, off, pvBuf, cbWrite);
    298298    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    299299    return rc;
     
    304304{
    305305    LogFlow(("%s:\n", __FUNCTION__));
    306     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    307     int rc = VDFlush(pData->pDisk);
     306    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     307    int rc = VDFlush(pThis->pDisk);
    308308    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    309309    return rc;
     
    314314{
    315315    LogFlow(("%s:\n", __FUNCTION__));
    316     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    317     uint64_t cb = VDGetSize(pData->pDisk, VD_LAST_IMAGE);
     316    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     317    uint64_t cb = VDGetSize(pThis->pDisk, VD_LAST_IMAGE);
    318318    LogFlow(("%s: returns %#llx (%llu)\n", __FUNCTION__, cb, cb));
    319319    return cb;
     
    324324{
    325325    LogFlow(("%s:\n", __FUNCTION__));
    326     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    327     bool f = VDIsReadOnly(pData->pDisk);
     326    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     327    bool f = VDIsReadOnly(pThis->pDisk);
    328328    LogFlow(("%s: returns %d\n", __FUNCTION__, f));
    329329    return f;
     
    335335{
    336336    LogFlow(("%s:\n", __FUNCTION__));
    337     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    338     int rc = VDGetPCHSGeometry(pData->pDisk, VD_LAST_IMAGE, pPCHSGeometry);
     337    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     338    int rc = VDGetPCHSGeometry(pThis->pDisk, VD_LAST_IMAGE, pPCHSGeometry);
    339339    if (RT_FAILURE(rc))
    340340    {
     
    353353    LogFlow(("%s: CHS=%d/%d/%d\n", __FUNCTION__,
    354354             pPCHSGeometry->cCylinders, pPCHSGeometry->cHeads, pPCHSGeometry->cSectors));
    355     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    356     int rc = VDSetPCHSGeometry(pData->pDisk, VD_LAST_IMAGE, pPCHSGeometry);
     355    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     356    int rc = VDSetPCHSGeometry(pThis->pDisk, VD_LAST_IMAGE, pPCHSGeometry);
    357357    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    358358    return rc;
     
    364364{
    365365    LogFlow(("%s:\n", __FUNCTION__));
    366     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    367     int rc = VDGetLCHSGeometry(pData->pDisk, VD_LAST_IMAGE, pLCHSGeometry);
     366    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     367    int rc = VDGetLCHSGeometry(pThis->pDisk, VD_LAST_IMAGE, pLCHSGeometry);
    368368    if (RT_FAILURE(rc))
    369369    {
     
    382382    LogFlow(("%s: CHS=%d/%d/%d\n", __FUNCTION__,
    383383             pLCHSGeometry->cCylinders, pLCHSGeometry->cHeads, pLCHSGeometry->cSectors));
    384     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    385     int rc = VDSetLCHSGeometry(pData->pDisk, VD_LAST_IMAGE, pLCHSGeometry);
     384    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     385    int rc = VDSetLCHSGeometry(pThis->pDisk, VD_LAST_IMAGE, pLCHSGeometry);
    386386    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    387387    return rc;
     
    392392{
    393393    LogFlow(("%s:\n", __FUNCTION__));
    394     PVBOXDISK pData = PDMIMEDIA_2_VBOXDISK(pInterface);
    395     int rc = VDGetUuid(pData->pDisk, 0, pUuid);
     394    PVBOXDISK pThis = PDMIMEDIA_2_VBOXDISK(pInterface);
     395    int rc = VDGetUuid(pThis->pDisk, 0, pUuid);
    396396    LogFlow(("%s: returns %Vrc ({%Vuuid})\n", __FUNCTION__, rc, pUuid));
    397397    return rc;
     
    408408     LogFlow(("%s: uOffset=%#llx paSeg=%#p cSeg=%u cbRead=%d\n pvUser=%#p", __FUNCTION__,
    409409             uOffset, paSeg, cSeg, cbRead, pvUser));
    410     PVBOXDISK pData = PDMIMEDIAASYNC_2_VBOXDISK(pInterface);
    411     int rc = VDAsyncRead(pData->pDisk, uOffset, cbRead, paSeg, cSeg, pvUser);
     410    PVBOXDISK pThis = PDMIMEDIAASYNC_2_VBOXDISK(pInterface);
     411    int rc = VDAsyncRead(pThis->pDisk, uOffset, cbRead, paSeg, cSeg, pvUser);
    412412    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    413413    return rc;
     
    420420     LogFlow(("%s: uOffset=%#llx paSeg=%#p cSeg=%u cbWrite=%d\n pvUser=%#p", __FUNCTION__,
    421421             uOffset, paSeg, cSeg, cbWrite, pvUser));
    422     PVBOXDISK pData = PDMIMEDIAASYNC_2_VBOXDISK(pInterface);
    423     int rc = VDAsyncWrite(pData->pDisk, uOffset, cbWrite, paSeg, cSeg, pvUser);
     422    PVBOXDISK pThis = PDMIMEDIAASYNC_2_VBOXDISK(pInterface);
     423    int rc = VDAsyncWrite(pThis->pDisk, uOffset, cbWrite, paSeg, cSeg, pvUser);
    424424    LogFlow(("%s: returns %Vrc\n", __FUNCTION__, rc));
    425425    return rc;
     
    432432static DECLCALLBACK(int) drvvdTasksCompleteNotify(PPDMITRANSPORTASYNCPORT pInterface, void *pvUser)
    433433{
    434     PVBOXDISK pData = PDMITRANSPORTASYNCPORT_2_VBOXDISK(pInterface);
     434    PVBOXDISK pThis = PDMITRANSPORTASYNCPORT_2_VBOXDISK(pInterface);
    435435    PDRVVDASYNCTASK pDrvVDAsyncTask = (PDRVVDASYNCTASK)pvUser;
    436436    int rc = VINF_VDI_ASYNC_IO_FINISHED;
     
    443443    if (rc == VINF_VDI_ASYNC_IO_FINISHED)
    444444    {
    445         rc = pData->pDrvMediaAsyncPort->pfnTransferCompleteNotify(pData->pDrvMediaAsyncPort, pDrvVDAsyncTask->pvUserCaller);
     445        rc = pThis->pDrvMediaAsyncPort->pfnTransferCompleteNotify(pThis->pDrvMediaAsyncPort, pDrvVDAsyncTask->pvUserCaller);
    446446    }
    447447    else if (rc == VERR_VDI_ASYNC_IO_IN_PROGRESS)
    448448        rc = VINF_SUCCESS;
    449449
    450     rc = RTCacheInsert(pData->pCache, pDrvVDAsyncTask);
     450    rc = RTCacheInsert(pThis->pCache, pDrvVDAsyncTask);
    451451    AssertRC(rc);
    452452
     
    464464{
    465465    PPDMDRVINS pDrvIns = PDMIBASE_2_DRVINS(pInterface);
    466     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     466    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    467467    switch (enmInterface)
    468468    {
     
    470470            return &pDrvIns->IBase;
    471471        case PDMINTERFACE_MEDIA:
    472             return &pData->IMedia;
     472            return &pThis->IMedia;
    473473        case PDMINTERFACE_MEDIA_ASYNC:
    474             return pData->fAsyncIOSupported ? &pData->IMediaAsync : NULL;
     474            return pThis->fAsyncIOSupported ? &pThis->IMediaAsync : NULL;
    475475        case PDMINTERFACE_TRANSPORT_ASYNC_PORT:
    476             return &pData->ITransportAsyncPort;
     476            return &pThis->ITransportAsyncPort;
    477477        default:
    478478            return NULL;
     
    500500{
    501501    LogFlow(("%s:\n", __FUNCTION__));
    502     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     502    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    503503    int rc = VINF_SUCCESS;
    504504    char *pszName = NULL;   /**< The path of the disk image file. */
     
    511511     */
    512512    pDrvIns->IBase.pfnQueryInterface    = drvvdQueryInterface;
    513     pData->pDrvIns                      = pDrvIns;
    514     pData->fTempReadOnly                = false;
    515     pData->pDisk                        = NULL;
     513    pThis->pDrvIns                      = pDrvIns;
     514    pThis->fTempReadOnly                = false;
     515    pThis->pDisk                        = NULL;
    516516
    517517    /* IMedia */
    518     pData->IMedia.pfnRead               = drvvdRead;
    519     pData->IMedia.pfnWrite              = drvvdWrite;
    520     pData->IMedia.pfnFlush              = drvvdFlush;
    521     pData->IMedia.pfnGetSize            = drvvdGetSize;
    522     pData->IMedia.pfnIsReadOnly         = drvvdIsReadOnly;
    523     pData->IMedia.pfnBiosGetPCHSGeometry = drvvdBiosGetPCHSGeometry;
    524     pData->IMedia.pfnBiosSetPCHSGeometry = drvvdBiosSetPCHSGeometry;
    525     pData->IMedia.pfnBiosGetLCHSGeometry = drvvdBiosGetLCHSGeometry;
    526     pData->IMedia.pfnBiosSetLCHSGeometry = drvvdBiosSetLCHSGeometry;
    527     pData->IMedia.pfnGetUuid            = drvvdGetUuid;
     518    pThis->IMedia.pfnRead               = drvvdRead;
     519    pThis->IMedia.pfnWrite              = drvvdWrite;
     520    pThis->IMedia.pfnFlush              = drvvdFlush;
     521    pThis->IMedia.pfnGetSize            = drvvdGetSize;
     522    pThis->IMedia.pfnIsReadOnly         = drvvdIsReadOnly;
     523    pThis->IMedia.pfnBiosGetPCHSGeometry = drvvdBiosGetPCHSGeometry;
     524    pThis->IMedia.pfnBiosSetPCHSGeometry = drvvdBiosSetPCHSGeometry;
     525    pThis->IMedia.pfnBiosGetLCHSGeometry = drvvdBiosGetLCHSGeometry;
     526    pThis->IMedia.pfnBiosSetLCHSGeometry = drvvdBiosSetLCHSGeometry;
     527    pThis->IMedia.pfnGetUuid            = drvvdGetUuid;
    528528
    529529    /* IMediaAsync */
    530     pData->IMediaAsync.pfnStartRead       = drvvdStartRead;
    531     pData->IMediaAsync.pfnStartWrite      = drvvdStartWrite;
     530    pThis->IMediaAsync.pfnStartRead       = drvvdStartRead;
     531    pThis->IMediaAsync.pfnStartWrite      = drvvdStartWrite;
    532532
    533533    /* ITransportAsyncPort */
    534     pData->ITransportAsyncPort.pfnTaskCompleteNotify  = drvvdTasksCompleteNotify;
     534    pThis->ITransportAsyncPort.pfnTaskCompleteNotify  = drvvdTasksCompleteNotify;
    535535
    536536    /* Initialize supported VD interfaces. */
    537     pData->VDIErrorCallbacks.cbSize       = sizeof(VDINTERFACEERROR);
    538     pData->VDIErrorCallbacks.enmInterface = VDINTERFACETYPE_ERROR;
    539     pData->VDIErrorCallbacks.pfnError     = drvvdErrorCallback;
    540 
    541     rc = VDInterfaceCreate(&pData->VDIError, "DrvVD_VDIError", VDINTERFACETYPE_ERROR,
    542                            &pData->VDIErrorCallbacks, pDrvIns, NULL);
     537    pThis->VDIErrorCallbacks.cbSize       = sizeof(VDINTERFACEERROR);
     538    pThis->VDIErrorCallbacks.enmInterface = VDINTERFACETYPE_ERROR;
     539    pThis->VDIErrorCallbacks.pfnError     = drvvdErrorCallback;
     540
     541    rc = VDInterfaceCreate(&pThis->VDIError, "DrvVD_VDIError", VDINTERFACETYPE_ERROR,
     542                           &pThis->VDIErrorCallbacks, pDrvIns, NULL);
    543543    AssertRC(rc);
    544544
    545     pData->VDIAsyncIOCallbacks.cbSize                  = sizeof(VDINTERFACEASYNCIO);
    546     pData->VDIAsyncIOCallbacks.enmInterface            = VDINTERFACETYPE_ASYNCIO;
    547     pData->VDIAsyncIOCallbacks.pfnOpen                 = drvvdAsyncIOOpen;
    548     pData->VDIAsyncIOCallbacks.pfnClose                = drvvdAsyncIOClose;
    549     pData->VDIAsyncIOCallbacks.pfnRead                 = drvvdAsyncIORead;
    550     pData->VDIAsyncIOCallbacks.pfnWrite                = drvvdAsyncIOWrite;
    551     pData->VDIAsyncIOCallbacks.pfnFlush                = drvvdAsyncIOFlush;
    552     pData->VDIAsyncIOCallbacks.pfnPrepareRead          = drvvdAsyncIOPrepareRead;
    553     pData->VDIAsyncIOCallbacks.pfnPrepareWrite         = drvvdAsyncIOPrepareWrite;
    554     pData->VDIAsyncIOCallbacks.pfnTasksSubmit          = drvvdAsyncIOTasksSubmit;
    555 
    556     rc = VDInterfaceCreate(&pData->VDIAsyncIO, "DrvVD_AsyncIO", VDINTERFACETYPE_ASYNCIO,
    557                            &pData->VDIAsyncIOCallbacks, pData, &pData->VDIError);
     545    pThis->VDIAsyncIOCallbacks.cbSize                  = sizeof(VDINTERFACEASYNCIO);
     546    pThis->VDIAsyncIOCallbacks.enmInterface            = VDINTERFACETYPE_ASYNCIO;
     547    pThis->VDIAsyncIOCallbacks.pfnOpen                 = drvvdAsyncIOOpen;
     548    pThis->VDIAsyncIOCallbacks.pfnClose                = drvvdAsyncIOClose;
     549    pThis->VDIAsyncIOCallbacks.pfnRead                 = drvvdAsyncIORead;
     550    pThis->VDIAsyncIOCallbacks.pfnWrite                = drvvdAsyncIOWrite;
     551    pThis->VDIAsyncIOCallbacks.pfnFlush                = drvvdAsyncIOFlush;
     552    pThis->VDIAsyncIOCallbacks.pfnPrepareRead          = drvvdAsyncIOPrepareRead;
     553    pThis->VDIAsyncIOCallbacks.pfnPrepareWrite         = drvvdAsyncIOPrepareWrite;
     554    pThis->VDIAsyncIOCallbacks.pfnTasksSubmit          = drvvdAsyncIOTasksSubmit;
     555
     556    rc = VDInterfaceCreate(&pThis->VDIAsyncIO, "DrvVD_AsyncIO", VDINTERFACETYPE_ASYNCIO,
     557                           &pThis->VDIAsyncIOCallbacks, pThis, &pThis->VDIError);
    558558    AssertRC(rc);
    559559
    560     pData->VDIConfigCallbacks.cbSize                = sizeof(VDINTERFACECONFIG);
    561     pData->VDIConfigCallbacks.enmInterface          = VDINTERFACETYPE_CONFIG;
    562     pData->VDIConfigCallbacks.pfnAreValuesValid     = drvvdCfgAreValuesValid;
    563     pData->VDIConfigCallbacks.pfnQueryType          = drvvdCfgQueryType;
    564     pData->VDIConfigCallbacks.pfnQuerySize          = drvvdCfgQuerySize;
    565     pData->VDIConfigCallbacks.pfnQueryInteger       = drvvdCfgQueryInteger;
    566     pData->VDIConfigCallbacks.pfnQueryIntegerDef    = drvvdCfgQueryIntegerDef;
    567     pData->VDIConfigCallbacks.pfnQueryString        = drvvdCfgQueryString;
    568     pData->VDIConfigCallbacks.pfnQueryStringDef     = drvvdCfgQueryStringDef;
    569     pData->VDIConfigCallbacks.pfnQueryBytes         = drvvdCfgQueryBytes;
     560    pThis->VDIConfigCallbacks.cbSize                = sizeof(VDINTERFACECONFIG);
     561    pThis->VDIConfigCallbacks.enmInterface          = VDINTERFACETYPE_CONFIG;
     562    pThis->VDIConfigCallbacks.pfnAreValuesValid     = drvvdCfgAreValuesValid;
     563    pThis->VDIConfigCallbacks.pfnQueryType          = drvvdCfgQueryType;
     564    pThis->VDIConfigCallbacks.pfnQuerySize          = drvvdCfgQuerySize;
     565    pThis->VDIConfigCallbacks.pfnQueryInteger       = drvvdCfgQueryInteger;
     566    pThis->VDIConfigCallbacks.pfnQueryIntegerDef    = drvvdCfgQueryIntegerDef;
     567    pThis->VDIConfigCallbacks.pfnQueryString        = drvvdCfgQueryString;
     568    pThis->VDIConfigCallbacks.pfnQueryStringDef     = drvvdCfgQueryStringDef;
     569    pThis->VDIConfigCallbacks.pfnQueryBytes         = drvvdCfgQueryBytes;
    570570
    571571    /** @todo TEMP! this isn't really correct - this needs to be made per image,
     
    573573     * At the moment this is harmless, as iSCSI can only be used as a base
    574574     * image, and no other backend uses the private data for these callbacks. */
    575     rc = VDInterfaceCreate(&pData->VDIConfig, "DrvVD_Config", VDINTERFACETYPE_CONFIG,
    576                            &pData->VDIConfigCallbacks, NULL /**< @todo TEMP */, &pData->VDIAsyncIO);
     575    rc = VDInterfaceCreate(&pThis->VDIConfig, "DrvVD_Config", VDINTERFACETYPE_CONFIG,
     576                           &pThis->VDIConfigCallbacks, NULL /**< @todo TEMP */, &pThis->VDIAsyncIO);
    577577    AssertRC(rc);
    578578
    579579    /* Try to attach async media port interface above.*/
    580     pData->pDrvMediaAsyncPort = (PPDMIMEDIAASYNCPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_MEDIA_ASYNC_PORT);
     580    pThis->pDrvMediaAsyncPort = (PPDMIMEDIAASYNCPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_MEDIA_ASYNC_PORT);
    581581
    582582    /*
     
    584584     * async interface.
    585585     */
    586     if (pData->pDrvMediaAsyncPort)
     586    if (pThis->pDrvMediaAsyncPort)
    587587    {
    588588        /* Try to attach the driver. */
     
    596596             * Revert to non async I/O.
    597597             */
    598             pData->pDrvMediaAsyncPort = NULL;
     598            pThis->pDrvMediaAsyncPort = NULL;
    599599        }
    600600        else if (RT_FAILURE(rc))
     
    605605        {
    606606            /* Success query the async transport interface. */
    607             pData->pDrvTransportAsync = (PPDMITRANSPORTASYNC)pBase->pfnQueryInterface(pBase, PDMINTERFACE_TRANSPORT_ASYNC);
    608             if (!pData->pDrvTransportAsync)
     607            pThis->pDrvTransportAsync = (PPDMITRANSPORTASYNC)pBase->pfnQueryInterface(pBase, PDMINTERFACE_TRANSPORT_ASYNC);
     608            if (!pThis->pDrvTransportAsync)
    609609            {
    610610                /* Whoops. */
     
    659659    {
    660660        /** @todo TEMP! later the iSCSI config callbacks won't be included here */
    661         rc = VDCreate(&pData->VDIConfig, &pData->pDisk);
     661        rc = VDCreate(&pThis->VDIConfig, &pThis->pDisk);
    662662        /* Error message is already set correctly. */
    663663    }
     
    717717        {
    718718            PCFGMNODE pCfg = CFGMR3GetChild(pCurNode, "VDConfig");
    719             pData->VDIConfig.pvUser = pCfg; /**< @todo TEMP! */
     719            pThis->VDIConfig.pvUser = pCfg; /**< @todo TEMP! */
    720720        }
    721721
     
    730730        if (fHonorZeroWrites)
    731731            uOpenFlags |= VD_OPEN_FLAGS_HONOR_ZEROES;
    732         if (pData->pDrvMediaAsyncPort)
     732        if (pThis->pDrvMediaAsyncPort)
    733733            uOpenFlags |= VD_OPEN_FLAGS_ASYNC_IO;
    734734
    735735        /** Try to open backend in asyc I/O mode first. */
    736         rc = VDOpen(pData->pDisk, pszFormat, pszName, uOpenFlags);
     736        rc = VDOpen(pThis->pDisk, pszFormat, pszName, uOpenFlags);
    737737        if (rc == VERR_NOT_SUPPORTED)
    738738        {
    739739            /* Seems async I/O is not supported by the backend, open in normal mode. */
    740740            uOpenFlags &= ~VD_OPEN_FLAGS_ASYNC_IO;
    741             rc = VDOpen(pData->pDisk, pszFormat, pszName, uOpenFlags);
     741            rc = VDOpen(pThis->pDisk, pszFormat, pszName, uOpenFlags);
    742742        }
    743743
     
    745745            Log(("%s: %d - Opened '%s' in %s mode\n", __FUNCTION__,
    746746                 iLevel, pszName,
    747                  VDIsReadOnly(pData->pDisk) ? "read-only" : "read-write"));
     747                 VDIsReadOnly(pThis->pDisk) ? "read-only" : "read-write"));
    748748        else
    749749        {
     
    765765    if (RT_FAILURE(rc))
    766766    {
    767         if (VALID_PTR(pData->pDisk))
    768         {
    769             VDDestroy(pData->pDisk);
    770             pData->pDisk = NULL;
     767        if (VALID_PTR(pThis->pDisk))
     768        {
     769            VDDestroy(pThis->pDisk);
     770            pThis->pDisk = NULL;
    771771        }
    772772        if (VALID_PTR(pszName))
     
    780780     * it.
    781781     */
    782     pData->fAsyncIOSupported = true;
    783     for (unsigned i = 0; i < VDGetCount(pData->pDisk); i++)
     782    pThis->fAsyncIOSupported = true;
     783    for (unsigned i = 0; i < VDGetCount(pThis->pDisk); i++)
    784784    {
    785785        VDBACKENDINFO vdBackendInfo;
    786786
    787         rc = VDBackendInfoSingle(pData->pDisk, i, &vdBackendInfo);
     787        rc = VDBackendInfoSingle(pThis->pDisk, i, &vdBackendInfo);
    788788        AssertRC(rc);
    789789
     
    794794             * Check if current file is supported with async I/O)
    795795             */
    796             rc = VDImageIsAsyncIOSupported(pData->pDisk, i, &pData->fAsyncIOSupported);
     796            rc = VDImageIsAsyncIOSupported(pThis->pDisk, i, &pThis->fAsyncIOSupported);
    797797            AssertRC(rc);
    798798
     
    802802             * at least one does not support it.
    803803             */
    804             if (!pData->fAsyncIOSupported)
     804            if (!pThis->fAsyncIOSupported)
    805805                break;
    806806        }
    807807        else
    808808        {
    809             pData->fAsyncIOSupported = false;
     809            pThis->fAsyncIOSupported = false;
    810810            break;
    811811        }
     
    813813
    814814    /* Create cache if async I/O is supported. */
    815     if (pData->fAsyncIOSupported)
    816     {
    817         rc = RTCacheCreate(&pData->pCache, 0, sizeof(DRVVDASYNCTASK), RTOBJCACHE_PROTECT_INSERT);
     815    if (pThis->fAsyncIOSupported)
     816    {
     817        rc = RTCacheCreate(&pThis->pCache, 0, sizeof(DRVVDASYNCTASK), RTOBJCACHE_PROTECT_INSERT);
    818818        AssertMsg(RT_SUCCESS(rc), ("Failed to create cache rc=%Vrc\n", rc));
    819819    }
     
    834834{
    835835    int rc;
    836     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    837     LogFlow(("%s:\n", __FUNCTION__));
    838 
    839     if (pData->pCache)
    840     {
    841         rc = RTCacheDestroy(pData->pCache);
     836    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     837    LogFlow(("%s:\n", __FUNCTION__));
     838
     839    if (pThis->pCache)
     840    {
     841        rc = RTCacheDestroy(pThis->pCache);
    842842        AssertRC(rc);
    843843    }
     
    855855{
    856856    LogFlow(("%s:\n", __FUNCTION__));
    857     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    858     if (!VDIsReadOnly(pData->pDisk))
     857    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     858    if (!VDIsReadOnly(pThis->pDisk))
    859859    {
    860860        unsigned uOpenFlags;
    861         int rc = VDGetOpenFlags(pData->pDisk, VD_LAST_IMAGE, &uOpenFlags);
     861        int rc = VDGetOpenFlags(pThis->pDisk, VD_LAST_IMAGE, &uOpenFlags);
    862862        AssertRC(rc);
    863863        uOpenFlags |= VD_OPEN_FLAGS_READONLY;
    864         rc = VDSetOpenFlags(pData->pDisk, VD_LAST_IMAGE, uOpenFlags);
     864        rc = VDSetOpenFlags(pThis->pDisk, VD_LAST_IMAGE, uOpenFlags);
    865865        AssertRC(rc);
    866         pData->fTempReadOnly = true;
     866        pThis->fTempReadOnly = true;
    867867    }
    868868}
     
    877877{
    878878    LogFlow(("%s:\n", __FUNCTION__));
    879     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    880     if (pData->fTempReadOnly)
     879    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     880    if (pThis->fTempReadOnly)
    881881    {
    882882        unsigned uOpenFlags;
    883         int rc = VDGetOpenFlags(pData->pDisk, VD_LAST_IMAGE, &uOpenFlags);
     883        int rc = VDGetOpenFlags(pThis->pDisk, VD_LAST_IMAGE, &uOpenFlags);
    884884        AssertRC(rc);
    885885        uOpenFlags &= ~VD_OPEN_FLAGS_READONLY;
    886         rc = VDSetOpenFlags(pData->pDisk, VD_LAST_IMAGE, uOpenFlags);
     886        rc = VDSetOpenFlags(pThis->pDisk, VD_LAST_IMAGE, uOpenFlags);
    887887        AssertRC(rc);
    888         pData->fTempReadOnly = false;
     888        pThis->fTempReadOnly = false;
    889889    }
    890890}
     
    893893{
    894894    LogFlow(("%s:\n", __FUNCTION__));
    895     PVBOXDISK pData = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
     895    PVBOXDISK pThis = PDMINS_2_DATA(pDrvIns, PVBOXDISK);
    896896
    897897    /*
     
    900900     * async transport driver is destructed.
    901901     */
    902     int rc = VDCloseAll(pData->pDisk);
     902    int rc = VDCloseAll(pThis->pDisk);
    903903    AssertRC(rc);
    904904}
  • trunk/src/VBox/Devices/Storage/VBoxHDD.cpp

    r11267 r11269  
    5656static DECLCALLBACK(uint64_t) vdiGetSize(PPDMIMEDIA pInterface)
    5757{
    58     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    59     uint64_t cb = VDIDiskGetSize(pData);
     58    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     59    uint64_t cb = VDIDiskGetSize(pThis);
    6060    LogFlow(("vdiGetSize: returns %#llx (%llu)\n", cb, cb));
    6161    return cb;
     
    9494static DECLCALLBACK(int) vdiBiosGetLCHSGeometry(PPDMIMEDIA pInterface, PPDMMEDIAGEOMETRY pLCHSGeometry)
    9595{
    96     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    97     int rc = VDIDiskGetLCHSGeometry(pData, pLCHSGeometry);
     96    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     97    int rc = VDIDiskGetLCHSGeometry(pThis, pLCHSGeometry);
    9898    if (RT_SUCCESS(rc))
    9999    {
     
    113113static DECLCALLBACK(int) vdiBiosSetLCHSGeometry(PPDMIMEDIA pInterface, PCPDMMEDIAGEOMETRY pLCHSGeometry)
    114114{
    115     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    116     int rc = VDIDiskSetLCHSGeometry(pData, pLCHSGeometry);
     115    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     116    int rc = VDIDiskSetLCHSGeometry(pThis, pLCHSGeometry);
    117117    LogFlow(("%s: returns %Vrc (%d,%d,%d)\n", __FUNCTION__, rc, pLCHSGeometry->cCylinders, pLCHSGeometry->cHeads, pLCHSGeometry->cSectors));
    118118    return rc;
     
    128128{
    129129    LogFlow(("vdiRead: off=%#llx pvBuf=%p cbRead=%d\n", off, pvBuf, cbRead));
    130     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    131     int rc = VDIDiskRead(pData, off, pvBuf, cbRead);
     130    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     131    int rc = VDIDiskRead(pThis, off, pvBuf, cbRead);
    132132    if (RT_SUCCESS(rc))
    133133        Log2(("vdiRead: off=%#llx pvBuf=%p cbRead=%d\n"
     
    147147{
    148148    LogFlow(("vdiWrite: off=%#llx pvBuf=%p cbWrite=%d\n", off, pvBuf, cbWrite));
    149     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
     149    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
    150150    Log2(("vdiWrite: off=%#llx pvBuf=%p cbWrite=%d\n"
    151151          "%.*Vhxd\n",
    152152          off, pvBuf, cbWrite, cbWrite, pvBuf));
    153     int rc = VDIDiskWrite(pData, off, pvBuf, cbWrite);
     153    int rc = VDIDiskWrite(pThis, off, pvBuf, cbWrite);
    154154    LogFlow(("vdiWrite: returns %Vrc\n", rc));
    155155    return rc;
     
    165165{
    166166    LogFlow(("vdiFlush:\n"));
    167     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    168     VDIFlushImage(pData->pLast);
     167    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     168    VDIFlushImage(pThis->pLast);
    169169    int rc = VINF_SUCCESS;
    170170    LogFlow(("vdiFlush: returns %Vrc\n", rc));
     
    176176static DECLCALLBACK(int) vdiGetUuid(PPDMIMEDIA pInterface, PRTUUID pUuid)
    177177{
    178     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    179     int rc = VDIDiskGetImageUuid(pData, 0, pUuid);
     178    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     179    int rc = VDIDiskGetImageUuid(pThis, 0, pUuid);
    180180    LogFlow(("vdiGetUuid: returns %Vrc ({%Vuuid})\n", rc, pUuid));
    181181    return rc;
     
    186186static DECLCALLBACK(bool) vdiIsReadOnly(PPDMIMEDIA pInterface)
    187187{
    188     PVDIDISK pData = PDMIMEDIA_2_VDIDISK(pInterface);
    189     LogFlow(("vdiIsReadOnly: returns %d\n", VDIDiskIsReadOnly(pData)));
    190     return VDIDiskIsReadOnly(pData);
     188    PVDIDISK pThis = PDMIMEDIA_2_VDIDISK(pInterface);
     189    LogFlow(("vdiIsReadOnly: returns %d\n", VDIDiskIsReadOnly(pThis)));
     190    return VDIDiskIsReadOnly(pThis);
    191191}
    192192
     
    204204{
    205205    PPDMDRVINS pDrvIns = PDMIBASE_2_DRVINS(pInterface);
    206     PVDIDISK pData = PDMINS_2_DATA(pDrvIns, PVDIDISK);
     206    PVDIDISK pThis = PDMINS_2_DATA(pDrvIns, PVDIDISK);
    207207    switch (enmInterface)
    208208    {
     
    210210            return &pDrvIns->IBase;
    211211        case PDMINTERFACE_MEDIA:
    212             return &pData->IMedia;
     212            return &pThis->IMedia;
    213213        default:
    214214            return NULL;
     
    227227    LogFlow(("vdiSuspend:\n"));
    228228#if 1 //#ifdef DEBUG_dmik
    229     PVDIDISK pData = PDMINS_2_DATA(pDrvIns, PVDIDISK);
    230     if (!(pData->pLast->fOpen & VDI_OPEN_FLAGS_READONLY))
    231     {
    232         int rc = vdiChangeImageMode(pData->pLast, false);
     229    PVDIDISK pThis = PDMINS_2_DATA(pDrvIns, PVDIDISK);
     230    if (!(pThis->pLast->fOpen & VDI_OPEN_FLAGS_READONLY))
     231    {
     232        int rc = vdiChangeImageMode(pThis->pLast, false);
    233233        AssertRC(rc);
    234234    }
     
    248248    LogFlow(("vdiSuspend:\n"));
    249249#if 1 // #ifdef DEBUG_dmik
    250     PVDIDISK pData = PDMINS_2_DATA(pDrvIns, PVDIDISK);
    251     if (!(pData->pLast->fOpen & VDI_OPEN_FLAGS_READONLY))
    252     {
    253         int rc = vdiChangeImageMode(pData->pLast, true);
     250    PVDIDISK pThis = PDMINS_2_DATA(pDrvIns, PVDIDISK);
     251    if (!(pThis->pLast->fOpen & VDI_OPEN_FLAGS_READONLY))
     252    {
     253        int rc = vdiChangeImageMode(pThis->pLast, true);
    254254        AssertRC(rc);
    255255    }
     
    269269{
    270270    LogFlow(("vdiDestruct:\n"));
    271     PVDIDISK pData = PDMINS_2_DATA(pDrvIns, PVDIDISK);
    272     VDIDiskCloseAllImages(pData);
     271    PVDIDISK pThis = PDMINS_2_DATA(pDrvIns, PVDIDISK);
     272    VDIDiskCloseAllImages(pThis);
    273273}
    274274
     
    287287{
    288288    LogFlow(("vdiConstruct:\n"));
    289     PVDIDISK pData = PDMINS_2_DATA(pDrvIns, PVDIDISK);
     289    PVDIDISK pThis = PDMINS_2_DATA(pDrvIns, PVDIDISK);
    290290    char *pszName;      /**< The path of the disk image file. */
    291291    bool fReadOnly;     /**< True if the media is readonly. */
     
    296296     */
    297297    pDrvIns->IBase.pfnQueryInterface    = vdiQueryInterface;
    298     pData->pDrvIns = pDrvIns;
    299 
    300     vdiInitVDIDisk(pData);
     298    pThis->pDrvIns = pDrvIns;
     299
     300    vdiInitVDIDisk(pThis);
    301301
    302302    /* IMedia */
    303     pData->IMedia.pfnRead               = vdiRead;
    304     pData->IMedia.pfnWrite              = vdiWrite;
    305     pData->IMedia.pfnFlush              = vdiFlush;
    306     pData->IMedia.pfnGetSize            = vdiGetSize;
    307     pData->IMedia.pfnGetUuid            = vdiGetUuid;
    308     pData->IMedia.pfnIsReadOnly         = vdiIsReadOnly;
    309     pData->IMedia.pfnBiosGetPCHSGeometry = vdiBiosGetPCHSGeometry;
    310     pData->IMedia.pfnBiosSetPCHSGeometry = vdiBiosSetPCHSGeometry;
    311     pData->IMedia.pfnBiosGetLCHSGeometry = vdiBiosGetLCHSGeometry;
    312     pData->IMedia.pfnBiosSetLCHSGeometry = vdiBiosSetLCHSGeometry;
     303    pThis->IMedia.pfnRead               = vdiRead;
     304    pThis->IMedia.pfnWrite              = vdiWrite;
     305    pThis->IMedia.pfnFlush              = vdiFlush;
     306    pThis->IMedia.pfnGetSize            = vdiGetSize;
     307    pThis->IMedia.pfnGetUuid            = vdiGetUuid;
     308    pThis->IMedia.pfnIsReadOnly         = vdiIsReadOnly;
     309    pThis->IMedia.pfnBiosGetPCHSGeometry = vdiBiosGetPCHSGeometry;
     310    pThis->IMedia.pfnBiosSetPCHSGeometry = vdiBiosSetPCHSGeometry;
     311    pThis->IMedia.pfnBiosGetLCHSGeometry = vdiBiosGetLCHSGeometry;
     312    pThis->IMedia.pfnBiosSetLCHSGeometry = vdiBiosSetLCHSGeometry;
    313313
    314314    /*
     
    371371         * Open the image.
    372372         */
    373         rc = VDIDiskOpenImage(pData, pszName, fReadOnly ? VDI_OPEN_FLAGS_READONLY
     373        rc = VDIDiskOpenImage(pThis, pszName, fReadOnly ? VDI_OPEN_FLAGS_READONLY
    374374                                                        : VDI_OPEN_FLAGS_NORMAL);
    375375        if (RT_SUCCESS(rc))
    376376            Log(("vdiConstruct: %d - Opened '%s' in %s mode\n",
    377                  iLevel, pszName, VDIDiskIsReadOnly(pData) ? "read-only" : "read-write"));
     377                 iLevel, pszName, VDIDiskIsReadOnly(pThis) ? "read-only" : "read-write"));
    378378        else
    379379            AssertMsgFailed(("Failed to open image '%s' rc=%Vrc\n", pszName, rc));
     
    387387    /* If any of the images has the flag set, handle zero writes like normal. */
    388388    if (RT_SUCCESS(rc))
    389         pData->fHonorZeroWrites = fHonorZeroWrites;
     389        pThis->fHonorZeroWrites = fHonorZeroWrites;
    390390
    391391    /* On failure, vdiDestruct will be called, so no need to clean up here. */
  • trunk/src/VBox/Devices/VMMDev/VBoxDev.cpp

    r11267 r11269  
    284284static DECLCALLBACK(int) vmmdevBackdoorLog(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    285285{
    286     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState *);
    287 
    288     if (!pData->fBackdoorLogDisabled && cb == 1 && Port == RTLOG_DEBUG_PORT)
     286    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState *);
     287
     288    if (!pThis->fBackdoorLogDisabled && cb == 1 && Port == RTLOG_DEBUG_PORT)
    289289    {
    290290
     
    301301        if (u32 == '\n' || u32 == '\r')
    302302        {
    303             pData->szMsg[pData->iMsg] = '\0';
    304             if (pData->iMsg)
    305                 LogRel(("Guest Log: %s\n", pData->szMsg));
    306             pData->iMsg = 0;
     303            pThis->szMsg[pThis->iMsg] = '\0';
     304            if (pThis->iMsg)
     305                LogRel(("Guest Log: %s\n", pThis->szMsg));
     306            pThis->iMsg = 0;
    307307        }
    308308        else
    309309        {
    310             if (pData->iMsg >= sizeof(pData->szMsg)-1)
    311             {
    312                 pData->szMsg[pData->iMsg] = '\0';
    313                 LogRel(("Guest Log: %s\n", pData->szMsg));
    314                 pData->iMsg = 0;
    315             }
    316             pData->szMsg[pData->iMsg] = (char )u32;
    317             pData->szMsg[++pData->iMsg] = '\0';
     310            if (pThis->iMsg >= sizeof(pThis->szMsg)-1)
     311            {
     312                pThis->szMsg[pThis->iMsg] = '\0';
     313                LogRel(("Guest Log: %s\n", pThis->szMsg));
     314                pThis->iMsg = 0;
     315            }
     316            pThis->szMsg[pThis->iMsg] = (char )u32;
     317            pThis->szMsg[++pThis->iMsg] = '\0';
    318318        }
    319319    }
     
    340340    if (cb == 4)
    341341    {
    342         VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState *);
     342        VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState *);
    343343        switch (u32)
    344344        {
    345345            case 0:
    346                 pData->fTimesyncBackdoorLo = false;
     346                pThis->fTimesyncBackdoorLo = false;
    347347                break;
    348348            case 1:
    349                 pData->fTimesyncBackdoorLo = true;
     349                pThis->fTimesyncBackdoorLo = true;
    350350        }
    351351        return VINF_SUCCESS;
     
    372372    if (cb == 4)
    373373    {
    374         VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState *);
     374        VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState *);
    375375        RTTIMESPEC now;
    376376
    377         if (pData->fTimesyncBackdoorLo)
    378         {
    379             *pu32 = (uint32_t)(pData->hostTime & (uint64_t)0xFFFFFFFF);
     377        if (pThis->fTimesyncBackdoorLo)
     378        {
     379            *pu32 = (uint32_t)(pThis->hostTime & (uint64_t)0xFFFFFFFF);
    380380        }
    381381        else
    382382        {
    383             pData->hostTime = RTTimeSpecGetMilli(PDMDevHlpUTCNow(pDevIns, &now));
    384             *pu32 = (uint32_t)(pData->hostTime >> 32);
     383            pThis->hostTime = RTTimeSpecGetMilli(PDMDevHlpUTCNow(pDevIns, &now));
     384            *pu32 = (uint32_t)(pThis->hostTime >> 32);
    385385        }
    386386        rc = VINF_SUCCESS;
     
    398398static DECLCALLBACK(int) vmmdevRequestHandler(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    399399{
    400     VMMDevState *pData = (VMMDevState*)pvUser;
     400    VMMDevState *pThis = (VMMDevState*)pvUser;
    401401    int rcRet = VINF_SUCCESS;
    402402
     
    429429
    430430    if (    requestHeader.requestType != VMMDevReq_ReportGuestInfo
    431         && !pData->fu32AdditionsOk)
     431        && !pThis->fu32AdditionsOk)
    432432    {
    433433        Log(("VMMDev: guest has not yet reported to us. Refusing operation.\n"));
     
    484484                VMMDevReportGuestInfo *guestInfo = (VMMDevReportGuestInfo*)pRequestHeader;
    485485
    486                 if (memcmp (&pData->guestInfo, &guestInfo->guestInfo, sizeof (guestInfo->guestInfo)) != 0)
     486                if (memcmp (&pThis->guestInfo, &guestInfo->guestInfo, sizeof (guestInfo->guestInfo)) != 0)
    487487                {
    488488                    /* make a copy of supplied information */
    489                     pData->guestInfo = guestInfo->guestInfo;
     489                    pThis->guestInfo = guestInfo->guestInfo;
    490490
    491491                    /* Check additions version */
    492                     pData->fu32AdditionsOk = VBOX_GUEST_ADDITIONS_VERSION_OK(pData->guestInfo.additionsVersion);
     492                    pThis->fu32AdditionsOk = VBOX_GUEST_ADDITIONS_VERSION_OK(pThis->guestInfo.additionsVersion);
    493493
    494494                    LogRel(("Guest Additions information report: additionsVersion = 0x%08X  osType = 0x%08X\n",
    495                             pData->guestInfo.additionsVersion,
    496                             pData->guestInfo.osType));
    497                     pData->pDrv->pfnUpdateGuestVersion(pData->pDrv, &pData->guestInfo);
    498                 }
    499 
    500                 if (pData->fu32AdditionsOk)
     495                            pThis->guestInfo.additionsVersion,
     496                            pThis->guestInfo.osType));
     497                    pThis->pDrv->pfnUpdateGuestVersion(pThis->pDrv, &pThis->guestInfo);
     498                }
     499
     500                if (pThis->fu32AdditionsOk)
    501501                {
    502502                    pRequestHeader->rc = VINF_SUCCESS;
     
    526526                /** @todo change this when we next bump the interface version */
    527527                guestCaps->caps |= VMMDEV_GUEST_SUPPORTS_GRAPHICS;
    528                 if (pData->guestCaps != guestCaps->caps)
     528                if (pThis->guestCaps != guestCaps->caps)
    529529                {
    530530                    /* make a copy of supplied information */
    531                     pData->guestCaps = guestCaps->caps;
     531                    pThis->guestCaps = guestCaps->caps;
    532532
    533533                    LogRel(("Guest Additions capability report: (0x%x) "
     
    540540                            guestCaps->caps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? "yes" : "no"));
    541541
    542                     pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, guestCaps->caps);
     542                    pThis->pDrv->pfnUpdateGuestCapabilities(pThis->pDrv, guestCaps->caps);
    543543                }
    544544                pRequestHeader->rc = VINF_SUCCESS;
     
    559559                VMMDevReqGuestCapabilities2 *guestCaps = (VMMDevReqGuestCapabilities2*)pRequestHeader;
    560560
    561                 pData->guestCaps |= guestCaps->u32OrMask;
    562                 pData->guestCaps &= ~guestCaps->u32NotMask;
     561                pThis->guestCaps |= guestCaps->u32OrMask;
     562                pThis->guestCaps &= ~guestCaps->u32NotMask;
    563563
    564564                LogRel(("Guest Additions capability report: (0x%x) "
     
    566566                        "hostWindowMapping: %s, "
    567567                        "graphics: %s\n",
    568                         pData->guestCaps,
    569                         pData->guestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS ? "yes" : "no",
    570                         pData->guestCaps & VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING ? "yes" : "no",
    571                         pData->guestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? "yes" : "no"));
    572 
    573                 pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, pData->guestCaps);
     568                        pThis->guestCaps,
     569                        pThis->guestCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS ? "yes" : "no",
     570                        pThis->guestCaps & VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING ? "yes" : "no",
     571                        pThis->guestCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? "yes" : "no"));
     572
     573                pThis->pDrv->pfnUpdateGuestCapabilities(pThis->pDrv, pThis->guestCaps);
    574574                pRequestHeader->rc = VINF_SUCCESS;
    575575            }
     
    591591                VMMDevReqMouseStatus *mouseStatus = (VMMDevReqMouseStatus*)pRequestHeader;
    592592                mouseStatus->mouseFeatures = 0;
    593                 if (pData->mouseCapabilities & VMMDEV_MOUSEHOSTWANTSABS)
     593                if (pThis->mouseCapabilities & VMMDEV_MOUSEHOSTWANTSABS)
    594594                {
    595595                    mouseStatus->mouseFeatures |= VBOXGUEST_MOUSE_HOST_CAN_ABSOLUTE;
    596596                }
    597                 if (pData->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS)
     597                if (pThis->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS)
    598598                {
    599599                    mouseStatus->mouseFeatures |= VBOXGUEST_MOUSE_GUEST_CAN_ABSOLUTE;
    600600                }
    601                 if (pData->mouseCapabilities & VMMDEV_MOUSEHOSTCANNOTHWPOINTER)
     601                if (pThis->mouseCapabilities & VMMDEV_MOUSEHOSTCANNOTHWPOINTER)
    602602                {
    603603                    mouseStatus->mouseFeatures |= VBOXGUEST_MOUSE_HOST_CANNOT_HWPOINTER;
    604604                }
    605                 mouseStatus->pointerXPos = pData->mouseXAbs;
    606                 mouseStatus->pointerYPos = pData->mouseYAbs;
     605                mouseStatus->pointerXPos = pThis->mouseXAbs;
     606                mouseStatus->pointerYPos = pThis->mouseYAbs;
    607607                Log2(("returning mouse status: features = %d, absX = %d, absY = %d\n", mouseStatus->mouseFeatures,
    608608                      mouseStatus->pointerXPos, mouseStatus->pointerYPos));
     
    633633                {
    634634                    /* set the capability flag and the changed flag if it's actually a change */
    635                     if (!(pData->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS))
     635                    if (!(pThis->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS))
    636636                    {
    637                         pData->mouseCapabilities |= VMMDEV_MOUSEGUESTWANTSABS;
     637                        pThis->mouseCapabilities |= VMMDEV_MOUSEGUESTWANTSABS;
    638638                        bCapsChanged = true;
    639639                        LogRel(("Guest requests mouse pointer integration\n"));
     
    641641                } else
    642642                {
    643                     if (pData->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS)
     643                    if (pThis->mouseCapabilities & VMMDEV_MOUSEGUESTWANTSABS)
    644644                    {
    645                         pData->mouseCapabilities &= ~VMMDEV_MOUSEGUESTWANTSABS;
     645                        pThis->mouseCapabilities &= ~VMMDEV_MOUSEGUESTWANTSABS;
    646646                        bCapsChanged = true;
    647647                        LogRel(("Guest disables mouse pointer integration\n"));
     
    649649                }
    650650                if (mouseStatus->mouseFeatures & VBOXGUEST_MOUSE_GUEST_NEEDS_HOST_CURSOR)
    651                     pData->mouseCapabilities |= VMMDEV_MOUSEGUESTNEEDSHOSTCUR;
     651                    pThis->mouseCapabilities |= VMMDEV_MOUSEGUESTNEEDSHOSTCUR;
    652652                else
    653                     pData->mouseCapabilities &= ~VMMDEV_MOUSEGUESTNEEDSHOSTCUR;
     653                    pThis->mouseCapabilities &= ~VMMDEV_MOUSEGUESTNEEDSHOSTCUR;
    654654
    655655                /*
     
    658658                if (bCapsChanged)
    659659                {
    660                     Log(("VMMDevReq_SetMouseStatus: capabilities changed (%x), informing connector\n", pData->mouseCapabilities));
    661                     pData->pDrv->pfnUpdateMouseCapabilities(pData->pDrv, pData->mouseCapabilities);
     660                    Log(("VMMDevReq_SetMouseStatus: capabilities changed (%x), informing connector\n", pThis->mouseCapabilities));
     661                    pThis->pDrv->pfnUpdateMouseCapabilities(pThis->pDrv, pThis->mouseCapabilities);
    662662                }
    663663                pRequestHeader->rc = VINF_SUCCESS;
     
    699699                if (fShape)
    700700                {
    701                     pData->pDrv->pfnUpdatePointerShape(pData->pDrv,
     701                    pThis->pDrv->pfnUpdatePointerShape(pThis->pDrv,
    702702                                                       fVisible,
    703703                                                       fAlpha,
     
    708708                else
    709709                {
    710                     pData->pDrv->pfnUpdatePointerShape(pData->pDrv,
     710                    pThis->pDrv->pfnUpdatePointerShape(pThis->pDrv,
    711711                                                       fVisible,
    712712                                                       0,
     
    730730                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    731731            }
    732             else if (RT_UNLIKELY(pData->fGetHostTimeDisabled))
     732            else if (RT_UNLIKELY(pThis->fGetHostTimeDisabled))
    733733                pRequestHeader->rc = VERR_NOT_SUPPORTED;
    734734            else
     
    863863                {
    864864                    /* Remember which resolution the client has queried, subsequent reads will return the same values. */
    865                     pData->lastReadDisplayChangeRequest = pData->displayChangeRequest;
     865                    pThis->lastReadDisplayChangeRequest = pThis->displayChangeRequest;
    866866                }
    867867
    868868                /* just pass on the information */
    869869                Log(("VMMDev: returning display change request xres = %d, yres = %d, bpp = %d\n",
    870                      pData->displayChangeRequest.xres, pData->displayChangeRequest.yres, pData->displayChangeRequest.bpp));
    871                 displayChangeRequest->xres = pData->lastReadDisplayChangeRequest.xres;
    872                 displayChangeRequest->yres = pData->lastReadDisplayChangeRequest.yres;
    873                 displayChangeRequest->bpp  = pData->lastReadDisplayChangeRequest.bpp;
     870                     pThis->displayChangeRequest.xres, pThis->displayChangeRequest.yres, pThis->displayChangeRequest.bpp));
     871                displayChangeRequest->xres = pThis->lastReadDisplayChangeRequest.xres;
     872                displayChangeRequest->yres = pThis->lastReadDisplayChangeRequest.yres;
     873                displayChangeRequest->bpp  = pThis->lastReadDisplayChangeRequest.bpp;
    874874
    875875                pRequestHeader->rc = VINF_SUCCESS;
     
    891891                {
    892892                    /* Remember which resolution the client has queried, subsequent reads will return the same values. */
    893                     pData->lastReadDisplayChangeRequest = pData->displayChangeRequest;
     893                    pThis->lastReadDisplayChangeRequest = pThis->displayChangeRequest;
    894894                }
    895895
    896896                /* just pass on the information */
    897897                Log(("VMMDev: returning display change request xres = %d, yres = %d, bpp = %d at %d\n",
    898                      pData->displayChangeRequest.xres, pData->displayChangeRequest.yres, pData->displayChangeRequest.bpp, pData->displayChangeRequest.display));
    899                 displayChangeRequest->xres    = pData->lastReadDisplayChangeRequest.xres;
    900                 displayChangeRequest->yres    = pData->lastReadDisplayChangeRequest.yres;
    901                 displayChangeRequest->bpp     = pData->lastReadDisplayChangeRequest.bpp;
    902                 displayChangeRequest->display = pData->lastReadDisplayChangeRequest.display;
     898                     pThis->displayChangeRequest.xres, pThis->displayChangeRequest.yres, pThis->displayChangeRequest.bpp, pThis->displayChangeRequest.display));
     899                displayChangeRequest->xres    = pThis->lastReadDisplayChangeRequest.xres;
     900                displayChangeRequest->yres    = pThis->lastReadDisplayChangeRequest.yres;
     901                displayChangeRequest->bpp     = pThis->lastReadDisplayChangeRequest.bpp;
     902                displayChangeRequest->display = pThis->lastReadDisplayChangeRequest.display;
    903903
    904904                pRequestHeader->rc = VINF_SUCCESS;
     
    921921                VMMDevVideoModeSupportedRequest *videoModeSupportedRequest = (VMMDevVideoModeSupportedRequest*)pRequestHeader;
    922922                /* forward the call */
    923                 pRequestHeader->rc = pData->pDrv->pfnVideoModeSupported(pData->pDrv,
     923                pRequestHeader->rc = pThis->pDrv->pfnVideoModeSupported(pThis->pDrv,
    924924                                                                       videoModeSupportedRequest->width,
    925925                                                                       videoModeSupportedRequest->height,
     
    944944                VMMDevGetHeightReductionRequest *heightReductionRequest = (VMMDevGetHeightReductionRequest*)pRequestHeader;
    945945                /* forward the call */
    946                 pRequestHeader->rc = pData->pDrv->pfnGetHeightReduction(pData->pDrv,
     946                pRequestHeader->rc = pThis->pDrv->pfnGetHeightReduction(pThis->pDrv,
    947947                                                                       &heightReductionRequest->heightReduction);
    948948            }
     
    962962            else
    963963            {
    964                 if (VBOX_GUEST_ADDITIONS_VERSION_1_03 (pData))
    965                 {
    966                     vmmdevSetIRQ_Legacy_EMT (pData);
     964                if (VBOX_GUEST_ADDITIONS_VERSION_1_03 (pThis))
     965                {
     966                    vmmdevSetIRQ_Legacy_EMT (pThis);
    967967                }
    968968                else
     
    970970                    VMMDevEvents *pAckRequest;
    971971
    972                     if (pData->fNewGuestFilterMask)
     972                    if (pThis->fNewGuestFilterMask)
    973973                    {
    974                         pData->fNewGuestFilterMask = false;
    975                         pData->u32GuestFilterMask = pData->u32NewGuestFilterMask;
     974                        pThis->fNewGuestFilterMask = false;
     975                        pThis->u32GuestFilterMask = pThis->u32NewGuestFilterMask;
    976976                    }
    977977
    978978                    pAckRequest = (VMMDevEvents *)pRequestHeader;
    979979                    pAckRequest->events =
    980                         pData->u32HostEventFlags & pData->u32GuestFilterMask;
    981 
    982                     pData->u32HostEventFlags &= ~pData->u32GuestFilterMask;
    983                     pData->pVMMDevRAMHC->V.V1_04.fHaveEvents = false;
    984                     PDMDevHlpPCISetIrqNoWait (pData->pDevIns, 0, 0);
     980                        pThis->u32HostEventFlags & pThis->u32GuestFilterMask;
     981
     982                    pThis->u32HostEventFlags &= ~pThis->u32GuestFilterMask;
     983                    pThis->pVMMDevRAMHC->V.V1_04.fHaveEvents = false;
     984                    PDMDevHlpPCISetIrqNoWait (pThis->pDevIns, 0, 0);
    985985                }
    986986                pRequestHeader->rc = VINF_SUCCESS;
     
    10071007                 * HGCM command is issued. The guest then can not disable these events.
    10081008                 */
    1009                 vmmdevCtlGuestFilterMask_EMT (pData,
     1009                vmmdevCtlGuestFilterMask_EMT (pThis,
    10101010                                              pCtlMaskRequest->u32OrMask,
    10111011                                              pCtlMaskRequest->u32NotMask & ~VMMDEV_EVENT_HGCM);
     
    10271027                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    10281028            }
    1029             else if (!pData->pHGCMDrv)
     1029            else if (!pThis->pHGCMDrv)
    10301030            {
    10311031                Log(("VMMDevReq_HGCMConnect HGCM Connector is NULL!\n"));
     
    10381038                Log(("VMMDevReq_HGCMConnect\n"));
    10391039
    1040                 pRequestHeader->rc = vmmdevHGCMConnect (pData, pHGCMConnect, (RTGCPHYS)u32);
     1040                pRequestHeader->rc = vmmdevHGCMConnect (pThis, pHGCMConnect, (RTGCPHYS)u32);
    10411041            }
    10421042            break;
     
    10501050                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    10511051            }
    1052             else if (!pData->pHGCMDrv)
     1052            else if (!pThis->pHGCMDrv)
    10531053            {
    10541054                Log(("VMMDevReq_HGCMDisconnect HGCM Connector is NULL!\n"));
     
    10601060
    10611061                Log(("VMMDevReq_VMMDevHGCMDisconnect\n"));
    1062                 pRequestHeader->rc = vmmdevHGCMDisconnect (pData, pHGCMDisconnect, (RTGCPHYS)u32);
     1062                pRequestHeader->rc = vmmdevHGCMDisconnect (pThis, pHGCMDisconnect, (RTGCPHYS)u32);
    10631063            }
    10641064            break;
     
    10771077                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    10781078            }
    1079             else if (!pData->pHGCMDrv)
     1079            else if (!pThis->pHGCMDrv)
    10801080            {
    10811081                Log(("VMMDevReq_HGCMCall HGCM Connector is NULL!\n"));
     
    10951095#endif /* VBOX_WITH_64_BITS_GUESTS */
    10961096
    1097                 pRequestHeader->rc = vmmdevHGCMCall (pData, pHGCMCall, (RTGCPHYS)u32, f64Bits);
     1097                pRequestHeader->rc = vmmdevHGCMCall (pThis, pHGCMCall, (RTGCPHYS)u32, f64Bits);
    10981098            }
    10991099            break;
     
    11081108                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    11091109            }
    1110             else if (!pData->pHGCMDrv)
     1110            else if (!pThis->pHGCMDrv)
    11111111            {
    11121112                Log(("VMMDevReq_HGCMCancel HGCM Connector is NULL!\n"));
     
    11181118
    11191119                Log(("VMMDevReq_VMMDevHGCMCancel\n"));
    1120                 pRequestHeader->rc = vmmdevHGCMCancel (pData, pHGCMCancel, (RTGCPHYS)u32);
     1120                pRequestHeader->rc = vmmdevHGCMCancel (pThis, pHGCMCancel, (RTGCPHYS)u32);
    11211121            }
    11221122            break;
     
    11301130                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    11311131            }
    1132             else if (!pData->pDrv)
     1132            else if (!pThis->pDrv)
    11331133            {
    11341134                Log(("VMMDevReq_VideoAccelEnable Connector is NULL!!!\n"));
     
    11531153
    11541154                    pRequestHeader->rc = ptr->u32Enable?
    1155                         pData->pDrv->pfnVideoAccelEnable (pData->pDrv, true, &pData->pVMMDevRAMHC->vbvaMemory):
    1156                         pData->pDrv->pfnVideoAccelEnable (pData->pDrv, false, NULL);
     1155                        pThis->pDrv->pfnVideoAccelEnable (pThis->pDrv, true, &pThis->pVMMDevRAMHC->vbvaMemory):
     1156                        pThis->pDrv->pfnVideoAccelEnable (pThis->pDrv, false, NULL);
    11571157
    11581158                    if (   ptr->u32Enable
     
    11641164                         * We need to reestablish it on restoring the VM from saved state.
    11651165                         */
    1166                         pData->u32VideoAccelEnabled = 1;
     1166                        pThis->u32VideoAccelEnabled = 1;
    11671167                    }
    11681168                    else
    11691169                    {
    11701170                        /* The acceleration was not enabled. Remember that. */
    1171                         pData->u32VideoAccelEnabled = 0;
     1171                        pThis->u32VideoAccelEnabled = 0;
    11721172                    }
    11731173                }
     
    11831183                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    11841184            }
    1185             else if (!pData->pDrv)
     1185            else if (!pThis->pDrv)
    11861186            {
    11871187                Log(("VMMDevReq_VideoAccelFlush Connector is NULL!\n"));
     
    11901190            else
    11911191            {
    1192                 pData->pDrv->pfnVideoAccelFlush (pData->pDrv);
     1192                pThis->pDrv->pfnVideoAccelFlush (pThis->pDrv);
    11931193
    11941194                pRequestHeader->rc = VINF_SUCCESS;
     
    12041204                pRequestHeader->rc = VERR_INVALID_PARAMETER;
    12051205            }
    1206             else if (!pData->pDrv)
     1206            else if (!pThis->pDrv)
    12071207            {
    12081208                Log(("VMMDevReq_VideoSetVisibleRegion Connector is NULL!!!\n"));
     
    12281228                    Log(("VMMDevReq_VideoSetVisibleRegion %d rectangles\n", ptr->cRect));
    12291229                    /* forward the call */
    1230                     pRequestHeader->rc = pData->pDrv->pfnSetVisibleRegion(pData->pDrv, ptr->cRect, &ptr->Rect);
     1230                    pRequestHeader->rc = pThis->pDrv->pfnSetVisibleRegion(pThis->pDrv, ptr->cRect, &ptr->Rect);
    12311231                }
    12321232            }
     
    12441244                VMMDevSeamlessChangeRequest *seamlessChangeRequest = (VMMDevSeamlessChangeRequest*)pRequestHeader;
    12451245                /* just pass on the information */
    1246                 Log(("VMMDev: returning seamless change request mode=%d\n", pData->fSeamlessEnabled));
    1247                 if (pData->fSeamlessEnabled)
     1246                Log(("VMMDev: returning seamless change request mode=%d\n", pThis->fSeamlessEnabled));
     1247                if (pThis->fSeamlessEnabled)
    12481248                    seamlessChangeRequest->mode = VMMDev_Seamless_Visible_Region;
    12491249                else
     
    12531253                {
    12541254                    /* Remember which mode the client has queried. */
    1255                     pData->fLastSeamlessEnabled = pData->fSeamlessEnabled;
     1255                    pThis->fLastSeamlessEnabled = pThis->fSeamlessEnabled;
    12561256                }
    12571257
     
    12711271                VMMDevVRDPChangeRequest *vrdpChangeRequest = (VMMDevVRDPChangeRequest*)pRequestHeader;
    12721272                /* just pass on the information */
    1273                 Log(("VMMDev: returning VRDP status %d level %d\n", pData->fVRDPEnabled, pData->u32VRDPExperienceLevel));
    1274 
    1275                 vrdpChangeRequest->u8VRDPActive = pData->fVRDPEnabled;
    1276                 vrdpChangeRequest->u32VRDPExperienceLevel = pData->u32VRDPExperienceLevel;
     1273                Log(("VMMDev: returning VRDP status %d level %d\n", pThis->fVRDPEnabled, pThis->u32VRDPExperienceLevel));
     1274
     1275                vrdpChangeRequest->u8VRDPActive = pThis->fVRDPEnabled;
     1276                vrdpChangeRequest->u32VRDPExperienceLevel = pThis->u32VRDPExperienceLevel;
    12771277
    12781278                pRequestHeader->rc = VINF_SUCCESS;
     
    12931293                VMMDevGetMemBalloonChangeRequest *memBalloonChangeRequest = (VMMDevGetMemBalloonChangeRequest*)pRequestHeader;
    12941294                /* just pass on the information */
    1295                 Log(("VMMDev: returning memory balloon size =%d\n", pData->u32MemoryBalloonSize));
    1296                 memBalloonChangeRequest->u32BalloonSize = pData->u32MemoryBalloonSize;
    1297                 memBalloonChangeRequest->u32PhysMemSize = pData->cbGuestRAM / (uint64_t)_1M;
     1295                Log(("VMMDev: returning memory balloon size =%d\n", pThis->u32MemoryBalloonSize));
     1296                memBalloonChangeRequest->u32BalloonSize = pThis->u32MemoryBalloonSize;
     1297                memBalloonChangeRequest->u32PhysMemSize = pThis->cbGuestRAM / (uint64_t)_1M;
    12981298
    12991299                if (memBalloonChangeRequest->eventAck == VMMDEV_EVENT_BALLOON_CHANGE_REQUEST)
    13001300                {
    13011301                    /* Remember which mode the client has queried. */
    1302                     pData->u32LastMemoryBalloonSize = pData->u32MemoryBalloonSize;
     1302                    pThis->u32LastMemoryBalloonSize = pThis->u32MemoryBalloonSize;
    13031303                }
    13041304
     
    13221322            else
    13231323            {
    1324                 pRequestHeader->rc = pData->pDrv->pfnChangeMemoryBalloon(pData->pDrv, !!memBalloonChange->fInflate, memBalloonChange->cPages, memBalloonChange->aPhysPage);
     1324                pRequestHeader->rc = pThis->pDrv->pfnChangeMemoryBalloon(pThis->pDrv, !!memBalloonChange->fInflate, memBalloonChange->cPages, memBalloonChange->aPhysPage);
    13251325            }
    13261326            break;
     
    13391339                VMMDevGetStatisticsChangeRequest *statIntervalChangeRequest = (VMMDevGetStatisticsChangeRequest*)pRequestHeader;
    13401340                /* just pass on the information */
    1341                 Log(("VMMDev: returning statistics interval %d seconds\n", pData->u32StatIntervalSize));
    1342                 statIntervalChangeRequest->u32StatInterval = pData->u32StatIntervalSize;
     1341                Log(("VMMDev: returning statistics interval %d seconds\n", pThis->u32StatIntervalSize));
     1342                statIntervalChangeRequest->u32StatInterval = pThis->u32StatIntervalSize;
    13431343
    13441344                if (statIntervalChangeRequest->eventAck == VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST)
    13451345                {
    13461346                    /* Remember which mode the client has queried. */
    1347                     pData->u32LastStatIntervalSize= pData->u32StatIntervalSize;
     1347                    pThis->u32LastStatIntervalSize= pThis->u32StatIntervalSize;
    13481348                }
    13491349
     
    14241424
    14251425                /* forward the call */
    1426                 pRequestHeader->rc = pData->pDrv->pfnReportStatistics(pData->pDrv, &stats->guestStats);
     1426                pRequestHeader->rc = pThis->pDrv->pfnReportStatistics(pThis->pDrv, &stats->guestStats);
    14271427            }
    14281428            break;
     
    14481448                if (credentials->u32Flags & VMMDEV_CREDENTIALS_QUERYPRESENCE)
    14491449                {
    1450                     if (   pData->credentialsLogon.szUserName[0]
    1451                         || pData->credentialsLogon.szPassword[0]
    1452                         || pData->credentialsLogon.szDomain[0])
     1450                    if (   pThis->credentialsLogon.szUserName[0]
     1451                        || pThis->credentialsLogon.szPassword[0]
     1452                        || pThis->credentialsLogon.szDomain[0])
    14531453                    {
    14541454                        credentials->u32Flags |= VMMDEV_CREDENTIALS_PRESENT;
     
    14631463                if (credentials->u32Flags & VMMDEV_CREDENTIALS_READ)
    14641464                {
    1465                     if (pData->credentialsLogon.szUserName[0])
    1466                         strcpy(credentials->szUserName, pData->credentialsLogon.szUserName);
    1467                     if (pData->credentialsLogon.szPassword[0])
    1468                         strcpy(credentials->szPassword, pData->credentialsLogon.szPassword);
    1469                     if (pData->credentialsLogon.szDomain[0])
    1470                         strcpy(credentials->szDomain, pData->credentialsLogon.szDomain);
    1471                     if (!pData->credentialsLogon.fAllowInteractiveLogon)
     1465                    if (pThis->credentialsLogon.szUserName[0])
     1466                        strcpy(credentials->szUserName, pThis->credentialsLogon.szUserName);
     1467                    if (pThis->credentialsLogon.szPassword[0])
     1468                        strcpy(credentials->szPassword, pThis->credentialsLogon.szPassword);
     1469                    if (pThis->credentialsLogon.szDomain[0])
     1470                        strcpy(credentials->szDomain, pThis->credentialsLogon.szDomain);
     1471                    if (!pThis->credentialsLogon.fAllowInteractiveLogon)
    14721472                        credentials->u32Flags |= VMMDEV_CREDENTIALS_NOLOCALLOGON;
    14731473                    else
     
    14751475                }
    14761476
    1477                 if (!pData->fKeepCredentials)
     1477                if (!pThis->fKeepCredentials)
    14781478                {
    14791479                    /* does the caller want us to destroy the logon credentials? */
    14801480                    if (credentials->u32Flags & VMMDEV_CREDENTIALS_CLEAR)
    14811481                    {
    1482                         memset(pData->credentialsLogon.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
    1483                         memset(pData->credentialsLogon.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
    1484                         memset(pData->credentialsLogon.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1482                        memset(pThis->credentialsLogon.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1483                        memset(pThis->credentialsLogon.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1484                        memset(pThis->credentialsLogon.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
    14851485                    }
    14861486                }
     
    14891489                if (credentials->u32Flags & VMMDEV_CREDENTIALS_READJUDGE)
    14901490                {
    1491                     if (pData->credentialsJudge.szUserName[0])
    1492                         strcpy(credentials->szUserName, pData->credentialsJudge.szUserName);
    1493                     if (pData->credentialsJudge.szPassword[0])
    1494                         strcpy(credentials->szPassword, pData->credentialsJudge.szPassword);
    1495                     if (pData->credentialsJudge.szDomain[0])
    1496                         strcpy(credentials->szDomain, pData->credentialsJudge.szDomain);
     1491                    if (pThis->credentialsJudge.szUserName[0])
     1492                        strcpy(credentials->szUserName, pThis->credentialsJudge.szUserName);
     1493                    if (pThis->credentialsJudge.szPassword[0])
     1494                        strcpy(credentials->szPassword, pThis->credentialsJudge.szPassword);
     1495                    if (pThis->credentialsJudge.szDomain[0])
     1496                        strcpy(credentials->szDomain, pThis->credentialsJudge.szDomain);
    14971497                }
    14981498
     
    15001500                if (credentials->u32Flags & VMMDEV_CREDENTIALS_CLEARJUDGE)
    15011501                {
    1502                     memset(pData->credentialsJudge.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
    1503                     memset(pData->credentialsJudge.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
    1504                     memset(pData->credentialsJudge.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1502                    memset(pThis->credentialsJudge.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1503                    memset(pThis->credentialsJudge.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
     1504                    memset(pThis->credentialsJudge.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
    15051505                }
    15061506
     
    15241524                if (credentials->u32Flags & VMMDEV_CREDENTIALS_JUDGE_DENY)
    15251525                {
    1526                     pData->pDrv->pfnSetCredentialsJudgementResult(pData->pDrv, VMMDEV_CREDENTIALS_JUDGE_DENY);
     1526                    pThis->pDrv->pfnSetCredentialsJudgementResult(pThis->pDrv, VMMDEV_CREDENTIALS_JUDGE_DENY);
    15271527                }
    15281528                else if (credentials->u32Flags & VMMDEV_CREDENTIALS_JUDGE_NOJUDGEMENT)
    15291529                {
    1530                     pData->pDrv->pfnSetCredentialsJudgementResult(pData->pDrv, VMMDEV_CREDENTIALS_JUDGE_NOJUDGEMENT);
     1530                    pThis->pDrv->pfnSetCredentialsJudgementResult(pThis->pDrv, VMMDEV_CREDENTIALS_JUDGE_NOJUDGEMENT);
    15311531                }
    15321532                else if (credentials->u32Flags & VMMDEV_CREDENTIALS_JUDGE_OK)
    15331533                {
    1534                     pData->pDrv->pfnSetCredentialsJudgementResult(pData->pDrv, VMMDEV_CREDENTIALS_JUDGE_OK);
     1534                    pThis->pDrv->pfnSetCredentialsJudgementResult(pThis->pDrv, VMMDEV_CREDENTIALS_JUDGE_OK);
    15351535                }
    15361536                else
     
    16041604{
    16051605    LogFlow(("vmmdevR3IORAMRegionMap: iRegion=%d GCPhysAddress=%VGp cb=%#x enmType=%d\n", iRegion, GCPhysAddress, cb, enmType));
    1606     VMMDevState *pData = PCIDEV_2_VMMDEVSTATE(pPciDev);
     1606    VMMDevState *pThis = PCIDEV_2_VMMDEVSTATE(pPciDev);
    16071607    int rc;
    16081608
    16091609    AssertReturn(iRegion == 1 && enmType == PCI_ADDRESS_SPACE_MEM, VERR_INTERNAL_ERROR);
    1610     Assert(pData->pVMMDevRAMHC != NULL);
     1610    Assert(pThis->pVMMDevRAMHC != NULL);
    16111611
    16121612    if (GCPhysAddress != NIL_RTGCPHYS)
     
    16151615         * Map the MMIO2 memory.
    16161616         */
    1617         pData->GCPhysVMMDevRAM = GCPhysAddress;
    1618         Assert(pData->GCPhysVMMDevRAM == GCPhysAddress);
     1617        pThis->GCPhysVMMDevRAM = GCPhysAddress;
     1618        Assert(pThis->GCPhysVMMDevRAM == GCPhysAddress);
    16191619        rc = PDMDevHlpMMIO2Map(pPciDev->pDevIns, iRegion, GCPhysAddress);
    16201620    }
     
    16241624         * It is about to be unmapped, just clean up.
    16251625         */
    1626         pData->GCPhysVMMDevRAM = NIL_RTGCPHYS32;
     1626        pThis->GCPhysVMMDevRAM = NIL_RTGCPHYS32;
    16271627        rc = VINF_SUCCESS;
    16281628    }
     
    16451645static DECLCALLBACK(int) vmmdevIOPortRegionMap(PPCIDEVICE pPciDev, /*unsigned*/ int iRegion, RTGCPHYS GCPhysAddress, uint32_t cb, PCIADDRESSSPACE enmType)
    16461646{
    1647     VMMDevState *pData = PCIDEV_2_VMMDEVSTATE(pPciDev);
     1647    VMMDevState *pThis = PCIDEV_2_VMMDEVSTATE(pPciDev);
    16481648    int         rc = VINF_SUCCESS;
    16491649
     
    16551655     * Save the base port address to simplify Port offset calculations.
    16561656     */
    1657     pData->PortBase = (RTIOPORT)GCPhysAddress;
     1657    pThis->PortBase = (RTIOPORT)GCPhysAddress;
    16581658
    16591659    /*
     
    16621662    rc = PDMDevHlpIOPortRegister(pPciDev->pDevIns,
    16631663                                 (RTIOPORT)GCPhysAddress + PORT_VMMDEV_REQUEST_OFFSET, 1,
    1664                                  (void*)pData, vmmdevRequestHandler,
     1664                                 (void*)pThis, vmmdevRequestHandler,
    16651665                                 NULL, NULL, NULL, "VMMDev Request Handler");
    16661666    AssertRC(rc);
     
    16791679static DECLCALLBACK(void *) vmmdevPortQueryInterface(PPDMIBASE pInterface, PDMINTERFACE enmInterface)
    16801680{
    1681     VMMDevState *pData = (VMMDevState*)((uintptr_t)pInterface - RT_OFFSETOF(VMMDevState, Base));
     1681    VMMDevState *pThis = (VMMDevState*)((uintptr_t)pInterface - RT_OFFSETOF(VMMDevState, Base));
    16821682    switch (enmInterface)
    16831683    {
    16841684        case PDMINTERFACE_BASE:
    1685             return &pData->Base;
     1685            return &pThis->Base;
    16861686        case PDMINTERFACE_VMMDEV_PORT:
    1687             return &pData->Port;
     1687            return &pThis->Port;
    16881688#ifdef VBOX_HGCM
    16891689        case PDMINTERFACE_HGCM_PORT:
    1690             return &pData->HGCMPort;
     1690            return &pThis->HGCMPort;
    16911691#endif
    16921692        case PDMINTERFACE_LED_PORTS:
    16931693            /* Currently only for shared folders */
    1694             return &pData->SharedFolders.ILeds;
     1694            return &pThis->SharedFolders.ILeds;
    16951695        default:
    16961696            return NULL;
     
    17081708static DECLCALLBACK(int) vmmdevQueryStatusLed(PPDMILEDPORTS pInterface, unsigned iLUN, PPDMLED *ppLed)
    17091709{
    1710     VMMDevState *pData = (VMMDevState *)( (uintptr_t)pInterface - RT_OFFSETOF(VMMDevState, SharedFolders.ILeds) );
     1710    VMMDevState *pThis = (VMMDevState *)( (uintptr_t)pInterface - RT_OFFSETOF(VMMDevState, SharedFolders.ILeds) );
    17111711    if (iLUN == 0) /* LUN 0 is shared folders */
    17121712    {
    1713         *ppLed = &pData->SharedFolders.Led;
     1713        *ppLed = &pThis->SharedFolders.Led;
    17141714        return VINF_SUCCESS;
    17151715    }
     
    17321732static DECLCALLBACK(int) vmmdevQueryAbsoluteMouse(PPDMIVMMDEVPORT pInterface, uint32_t *pAbsX, uint32_t *pAbsY)
    17331733{
    1734     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1734    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    17351735    if (pAbsX)
    1736         *pAbsX = pData->mouseXAbs;
     1736        *pAbsX = pThis->mouseXAbs;
    17371737    if (pAbsY)
    1738         *pAbsY = pData->mouseYAbs;
     1738        *pAbsY = pThis->mouseYAbs;
    17391739    return VINF_SUCCESS;
    17401740}
     
    17491749static DECLCALLBACK(int) vmmdevSetAbsoluteMouse(PPDMIVMMDEVPORT pInterface, uint32_t absX, uint32_t absY)
    17501750{
    1751     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1751    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    17521752    Log2(("vmmdevSetAbsoluteMouse: settings absolute position to x = %d, y = %d\n", absX, absY));
    1753     pData->mouseXAbs = absX;
    1754     pData->mouseYAbs = absY;
     1753    pThis->mouseXAbs = absX;
     1754    pThis->mouseYAbs = absY;
    17551755    return VINF_SUCCESS;
    17561756}
     
    17641764static DECLCALLBACK(int) vmmdevQueryMouseCapabilities(PPDMIVMMDEVPORT pInterface, uint32_t *pCapabilities)
    17651765{
    1766     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1766    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    17671767    if (!pCapabilities)
    17681768        return VERR_INVALID_PARAMETER;
    1769     *pCapabilities = pData->mouseCapabilities;
     1769    *pCapabilities = pThis->mouseCapabilities;
    17701770    return VINF_SUCCESS;
    17711771}
     
    17791779static DECLCALLBACK(int) vmmdevSetMouseCapabilities(PPDMIVMMDEVPORT pInterface, uint32_t capabilities)
    17801780{
    1781     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1781    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    17821782
    17831783    bool bCapsChanged = ((capabilities & VMMDEV_MOUSEHOSTWANTSABS)
    1784                          != (pData->mouseCapabilities & VMMDEV_MOUSEHOSTWANTSABS));
     1784                         != (pThis->mouseCapabilities & VMMDEV_MOUSEHOSTWANTSABS));
    17851785
    17861786    Log(("vmmdevSetMouseCapabilities: bCapsChanged %d\n", bCapsChanged));
    17871787
    17881788    if (capabilities & VMMDEV_MOUSEHOSTCANNOTHWPOINTER)
    1789         pData->mouseCapabilities |= VMMDEV_MOUSEHOSTCANNOTHWPOINTER;
     1789        pThis->mouseCapabilities |= VMMDEV_MOUSEHOSTCANNOTHWPOINTER;
    17901790    else
    1791         pData->mouseCapabilities &= ~VMMDEV_MOUSEHOSTCANNOTHWPOINTER;
     1791        pThis->mouseCapabilities &= ~VMMDEV_MOUSEHOSTCANNOTHWPOINTER;
    17921792
    17931793    if (capabilities & VMMDEV_MOUSEHOSTWANTSABS)
    1794         pData->mouseCapabilities |= VMMDEV_MOUSEHOSTWANTSABS;
     1794        pThis->mouseCapabilities |= VMMDEV_MOUSEHOSTWANTSABS;
    17951795    else
    1796         pData->mouseCapabilities &= ~VMMDEV_MOUSEHOSTWANTSABS;
     1796        pThis->mouseCapabilities &= ~VMMDEV_MOUSEHOSTWANTSABS;
    17971797
    17981798    if (bCapsChanged)
    1799         VMMDevNotifyGuest (pData, VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED);
     1799        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_MOUSE_CAPABILITIES_CHANGED);
    18001800
    18011801    return VINF_SUCCESS;
     
    18051805static DECLCALLBACK(int) vmmdevRequestDisplayChange(PPDMIVMMDEVPORT pInterface, uint32_t xres, uint32_t yres, uint32_t bpp, uint32_t display)
    18061806{
    1807     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1807    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    18081808
    18091809    /* Verify that the new resolution is different and that guest does not yet know about it. */
    1810     bool fSameResolution = (!xres || (pData->lastReadDisplayChangeRequest.xres == xres)) &&
    1811                            (!yres || (pData->lastReadDisplayChangeRequest.yres == yres)) &&
    1812                            (!bpp || (pData->lastReadDisplayChangeRequest.bpp == bpp)) &&
    1813                            pData->lastReadDisplayChangeRequest.display == display;
     1810    bool fSameResolution = (!xres || (pThis->lastReadDisplayChangeRequest.xres == xres)) &&
     1811                           (!yres || (pThis->lastReadDisplayChangeRequest.yres == yres)) &&
     1812                           (!bpp || (pThis->lastReadDisplayChangeRequest.bpp == bpp)) &&
     1813                           pThis->lastReadDisplayChangeRequest.display == display;
    18141814
    18151815    if (!xres && !yres && !bpp)
     
    18201820
    18211821    Log3(("vmmdevRequestDisplayChange: same=%d. new: xres=%d, yres=%d, bpp=%d, display=%d. old: xres=%d, yres=%d, bpp=%d, display=%d.\n",
    1822           fSameResolution, xres, yres, bpp, display, pData->lastReadDisplayChangeRequest.xres, pData->lastReadDisplayChangeRequest.yres, pData->lastReadDisplayChangeRequest.bpp, pData->lastReadDisplayChangeRequest.display));
     1822          fSameResolution, xres, yres, bpp, display, pThis->lastReadDisplayChangeRequest.xres, pThis->lastReadDisplayChangeRequest.yres, pThis->lastReadDisplayChangeRequest.bpp, pThis->lastReadDisplayChangeRequest.display));
    18231823
    18241824    if (!fSameResolution)
     
    18281828
    18291829        /* we could validate the information here but hey, the guest can do that as well! */
    1830         pData->displayChangeRequest.xres    = xres;
    1831         pData->displayChangeRequest.yres    = yres;
    1832         pData->displayChangeRequest.bpp     = bpp;
    1833         pData->displayChangeRequest.display = display;
     1830        pThis->displayChangeRequest.xres    = xres;
     1831        pThis->displayChangeRequest.yres    = yres;
     1832        pThis->displayChangeRequest.bpp     = bpp;
     1833        pThis->displayChangeRequest.display = display;
    18341834
    18351835        /* IRQ so the guest knows what's going on */
    1836         VMMDevNotifyGuest (pData, VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST);
     1836        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST);
    18371837    }
    18381838
     
    18421842static DECLCALLBACK(int) vmmdevRequestSeamlessChange(PPDMIVMMDEVPORT pInterface, bool fEnabled)
    18431843{
    1844     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1844    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    18451845
    18461846    /* Verify that the new resolution is different and that guest does not yet know about it. */
    1847     bool fSameMode = (pData->fLastSeamlessEnabled == fEnabled);
     1847    bool fSameMode = (pThis->fLastSeamlessEnabled == fEnabled);
    18481848
    18491849    Log(("vmmdevRequestSeamlessChange: same=%d. new=%d\n", fSameMode, fEnabled));
     
    18521852    {
    18531853        /* we could validate the information here but hey, the guest can do that as well! */
    1854         pData->fSeamlessEnabled = fEnabled;
     1854        pThis->fSeamlessEnabled = fEnabled;
    18551855
    18561856        /* IRQ so the guest knows what's going on */
    1857         VMMDevNotifyGuest (pData, VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST);
     1857        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_SEAMLESS_MODE_CHANGE_REQUEST);
    18581858    }
    18591859
     
    18631863static DECLCALLBACK(int) vmmdevSetMemoryBalloon(PPDMIVMMDEVPORT pInterface, uint32_t ulBalloonSize)
    18641864{
    1865     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1865    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    18661866
    18671867    /* Verify that the new resolution is different and that guest does not yet know about it. */
    1868     bool fSame = (pData->u32LastMemoryBalloonSize == ulBalloonSize);
    1869 
    1870     Log(("vmmdevSetMemoryBalloon: old=%d. new=%d\n", pData->u32LastMemoryBalloonSize, ulBalloonSize));
     1868    bool fSame = (pThis->u32LastMemoryBalloonSize == ulBalloonSize);
     1869
     1870    Log(("vmmdevSetMemoryBalloon: old=%d. new=%d\n", pThis->u32LastMemoryBalloonSize, ulBalloonSize));
    18711871
    18721872    if (!fSame)
    18731873    {
    18741874        /* we could validate the information here but hey, the guest can do that as well! */
    1875         pData->u32MemoryBalloonSize = ulBalloonSize;
     1875        pThis->u32MemoryBalloonSize = ulBalloonSize;
    18761876
    18771877        /* IRQ so the guest knows what's going on */
    1878         VMMDevNotifyGuest (pData, VMMDEV_EVENT_BALLOON_CHANGE_REQUEST);
     1878        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_BALLOON_CHANGE_REQUEST);
    18791879    }
    18801880
     
    18841884static DECLCALLBACK(int) vmmdevVRDPChange(PPDMIVMMDEVPORT pInterface, bool fVRDPEnabled, uint32_t u32VRDPExperienceLevel)
    18851885{
    1886     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    1887 
    1888     bool fSame = (pData->fVRDPEnabled == fVRDPEnabled);
    1889 
    1890     Log(("vmmdevVRDPChange: old=%d. new=%d\n", pData->fVRDPEnabled, fVRDPEnabled));
     1886    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1887
     1888    bool fSame = (pThis->fVRDPEnabled == fVRDPEnabled);
     1889
     1890    Log(("vmmdevVRDPChange: old=%d. new=%d\n", pThis->fVRDPEnabled, fVRDPEnabled));
    18911891
    18921892    if (!fSame)
    18931893    {
    1894         pData->fVRDPEnabled = fVRDPEnabled;
    1895         pData->u32VRDPExperienceLevel = u32VRDPExperienceLevel;
    1896 
    1897         VMMDevNotifyGuest (pData, VMMDEV_EVENT_VRDP);
     1894        pThis->fVRDPEnabled = fVRDPEnabled;
     1895        pThis->u32VRDPExperienceLevel = u32VRDPExperienceLevel;
     1896
     1897        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_VRDP);
    18981898    }
    18991899
     
    19031903static DECLCALLBACK(int) vmmdevSetStatisticsInterval(PPDMIVMMDEVPORT pInterface, uint32_t ulStatInterval)
    19041904{
    1905     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1905    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    19061906
    19071907    /* Verify that the new resolution is different and that guest does not yet know about it. */
    1908     bool fSame = (pData->u32LastStatIntervalSize == ulStatInterval);
    1909 
    1910     Log(("vmmdevSetStatisticsInterval: old=%d. new=%d\n", pData->u32LastStatIntervalSize, ulStatInterval));
     1908    bool fSame = (pThis->u32LastStatIntervalSize == ulStatInterval);
     1909
     1910    Log(("vmmdevSetStatisticsInterval: old=%d. new=%d\n", pThis->u32LastStatIntervalSize, ulStatInterval));
    19111911
    19121912    if (!fSame)
    19131913    {
    19141914        /* we could validate the information here but hey, the guest can do that as well! */
    1915         pData->u32StatIntervalSize = ulStatInterval;
     1915        pThis->u32StatIntervalSize = ulStatInterval;
    19161916
    19171917        /* IRQ so the guest knows what's going on */
    1918         VMMDevNotifyGuest (pData, VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST);
     1918        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST);
    19191919    }
    19201920
     
    19271927                                              uint32_t u32Flags)
    19281928{
    1929     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1929    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    19301930
    19311931    /* logon mode? */
     
    19331933    {
    19341934        /* memorize the data */
    1935         strcpy(pData->credentialsLogon.szUserName, pszUsername);
    1936         strcpy(pData->credentialsLogon.szPassword, pszPassword);
    1937         strcpy(pData->credentialsLogon.szDomain,   pszDomain);
    1938         pData->credentialsLogon.fAllowInteractiveLogon = !(u32Flags & VMMDEV_SETCREDENTIALS_NOLOCALLOGON);
     1935        strcpy(pThis->credentialsLogon.szUserName, pszUsername);
     1936        strcpy(pThis->credentialsLogon.szPassword, pszPassword);
     1937        strcpy(pThis->credentialsLogon.szDomain,   pszDomain);
     1938        pThis->credentialsLogon.fAllowInteractiveLogon = !(u32Flags & VMMDEV_SETCREDENTIALS_NOLOCALLOGON);
    19391939    }
    19401940    /* credentials verification mode? */
     
    19421942    {
    19431943        /* memorize the data */
    1944         strcpy(pData->credentialsJudge.szUserName, pszUsername);
    1945         strcpy(pData->credentialsJudge.szPassword, pszPassword);
    1946         strcpy(pData->credentialsJudge.szDomain,   pszDomain);
    1947 
    1948         VMMDevNotifyGuest (pData, VMMDEV_EVENT_JUDGE_CREDENTIALS);
     1944        strcpy(pThis->credentialsJudge.szUserName, pszUsername);
     1945        strcpy(pThis->credentialsJudge.szPassword, pszPassword);
     1946        strcpy(pThis->credentialsJudge.szDomain,   pszDomain);
     1947
     1948        VMMDevNotifyGuest (pThis, VMMDEV_EVENT_JUDGE_CREDENTIALS);
    19491949    }
    19501950    else
     
    19621962static DECLCALLBACK(void) vmmdevVBVAChange(PPDMIVMMDEVPORT pInterface, bool fEnabled)
    19631963{
    1964     VMMDevState *pData = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
     1964    VMMDevState *pThis = IVMMDEVPORT_2_VMMDEVSTATE(pInterface);
    19651965
    19661966    Log(("vmmdevVBVAChange: fEnabled = %d\n", fEnabled));
    19671967
    1968     if (pData)
    1969     {
    1970         pData->u32VideoAccelEnabled = fEnabled;
     1968    if (pThis)
     1969    {
     1970        pThis->u32VideoAccelEnabled = fEnabled;
    19711971    }
    19721972
     
    19931993static DECLCALLBACK(int) vmmdevSaveState(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    19941994{
    1995     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState*);
    1996     SSMR3PutU32(pSSMHandle, pData->hypervisorSize);
    1997     SSMR3PutU32(pSSMHandle, pData->mouseCapabilities);
    1998     SSMR3PutU32(pSSMHandle, pData->mouseXAbs);
    1999     SSMR3PutU32(pSSMHandle, pData->mouseYAbs);
    2000 
    2001     SSMR3PutBool(pSSMHandle, pData->fNewGuestFilterMask);
    2002     SSMR3PutU32(pSSMHandle, pData->u32NewGuestFilterMask);
    2003     SSMR3PutU32(pSSMHandle, pData->u32GuestFilterMask);
    2004     SSMR3PutU32(pSSMHandle, pData->u32HostEventFlags);
     1995    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState*);
     1996    SSMR3PutU32(pSSMHandle, pThis->hypervisorSize);
     1997    SSMR3PutU32(pSSMHandle, pThis->mouseCapabilities);
     1998    SSMR3PutU32(pSSMHandle, pThis->mouseXAbs);
     1999    SSMR3PutU32(pSSMHandle, pThis->mouseYAbs);
     2000
     2001    SSMR3PutBool(pSSMHandle, pThis->fNewGuestFilterMask);
     2002    SSMR3PutU32(pSSMHandle, pThis->u32NewGuestFilterMask);
     2003    SSMR3PutU32(pSSMHandle, pThis->u32GuestFilterMask);
     2004    SSMR3PutU32(pSSMHandle, pThis->u32HostEventFlags);
    20052005    // here be dragons (probably)
    2006 //    SSMR3PutBool(pSSMHandle, pData->pVMMDevRAMHC->V.V1_04.fHaveEvents);
    2007     SSMR3PutMem(pSSMHandle, &pData->pVMMDevRAMHC->V, sizeof (pData->pVMMDevRAMHC->V));
    2008 
    2009     SSMR3PutMem(pSSMHandle, &pData->guestInfo, sizeof (pData->guestInfo));
    2010     SSMR3PutU32(pSSMHandle, pData->fu32AdditionsOk);
    2011     SSMR3PutU32(pSSMHandle, pData->u32VideoAccelEnabled);
    2012 
    2013     SSMR3PutU32(pSSMHandle, pData->guestCaps);
     2006//    SSMR3PutBool(pSSMHandle, pThis->pVMMDevRAMHC->V.V1_04.fHaveEvents);
     2007    SSMR3PutMem(pSSMHandle, &pThis->pVMMDevRAMHC->V, sizeof (pThis->pVMMDevRAMHC->V));
     2008
     2009    SSMR3PutMem(pSSMHandle, &pThis->guestInfo, sizeof (pThis->guestInfo));
     2010    SSMR3PutU32(pSSMHandle, pThis->fu32AdditionsOk);
     2011    SSMR3PutU32(pSSMHandle, pThis->u32VideoAccelEnabled);
     2012
     2013    SSMR3PutU32(pSSMHandle, pThis->guestCaps);
    20142014
    20152015#ifdef VBOX_HGCM
    2016     vmmdevHGCMSaveState (pData, pSSMHandle);
     2016    vmmdevHGCMSaveState (pThis, pSSMHandle);
    20172017#endif /* VBOX_HGCM */
    20182018
     
    20312031{
    20322032    /** @todo The code load code is assuming we're always loaded into a fresh VM. */
    2033     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState*);
     2033    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState*);
    20342034    if (   SSM_VERSION_MAJOR_CHANGED(u32Version, VMMDEV_SSM_VERSION)
    20352035        || (SSM_VERSION_MINOR(u32Version) < 6))
    20362036        return VERR_SSM_UNSUPPORTED_DATA_UNIT_VERSION;
    20372037
    2038     SSMR3GetU32(pSSMHandle, &pData->hypervisorSize);
    2039     SSMR3GetU32(pSSMHandle, &pData->mouseCapabilities);
    2040     SSMR3GetU32(pSSMHandle, &pData->mouseXAbs);
    2041     SSMR3GetU32(pSSMHandle, &pData->mouseYAbs);
    2042 
    2043     SSMR3GetBool(pSSMHandle, &pData->fNewGuestFilterMask);
    2044     SSMR3GetU32(pSSMHandle, &pData->u32NewGuestFilterMask);
    2045     SSMR3GetU32(pSSMHandle, &pData->u32GuestFilterMask);
    2046     SSMR3GetU32(pSSMHandle, &pData->u32HostEventFlags);
    2047 //    SSMR3GetBool(pSSMHandle, &pData->pVMMDevRAMHC->fHaveEvents);
     2038    SSMR3GetU32(pSSMHandle, &pThis->hypervisorSize);
     2039    SSMR3GetU32(pSSMHandle, &pThis->mouseCapabilities);
     2040    SSMR3GetU32(pSSMHandle, &pThis->mouseXAbs);
     2041    SSMR3GetU32(pSSMHandle, &pThis->mouseYAbs);
     2042
     2043    SSMR3GetBool(pSSMHandle, &pThis->fNewGuestFilterMask);
     2044    SSMR3GetU32(pSSMHandle, &pThis->u32NewGuestFilterMask);
     2045    SSMR3GetU32(pSSMHandle, &pThis->u32GuestFilterMask);
     2046    SSMR3GetU32(pSSMHandle, &pThis->u32HostEventFlags);
     2047//    SSMR3GetBool(pSSMHandle, &pThis->pVMMDevRAMHC->fHaveEvents);
    20482048    // here be dragons (probably)
    2049     SSMR3GetMem(pSSMHandle, &pData->pVMMDevRAMHC->V, sizeof (pData->pVMMDevRAMHC->V));
    2050 
    2051     SSMR3GetMem(pSSMHandle, &pData->guestInfo, sizeof (pData->guestInfo));
    2052     SSMR3GetU32(pSSMHandle, &pData->fu32AdditionsOk);
    2053     SSMR3GetU32(pSSMHandle, &pData->u32VideoAccelEnabled);
    2054 
    2055     SSMR3GetU32(pSSMHandle, &pData->guestCaps);
     2049    SSMR3GetMem(pSSMHandle, &pThis->pVMMDevRAMHC->V, sizeof (pThis->pVMMDevRAMHC->V));
     2050
     2051    SSMR3GetMem(pSSMHandle, &pThis->guestInfo, sizeof (pThis->guestInfo));
     2052    SSMR3GetU32(pSSMHandle, &pThis->fu32AdditionsOk);
     2053    SSMR3GetU32(pSSMHandle, &pThis->u32VideoAccelEnabled);
     2054
     2055    SSMR3GetU32(pSSMHandle, &pThis->guestCaps);
    20562056
    20572057    /* Attributes which were temporarily introduced in r30072 */
     
    20652065
    20662066#ifdef VBOX_HGCM
    2067     vmmdevHGCMLoadState (pData, pSSMHandle);
     2067    vmmdevHGCMLoadState (pThis, pSSMHandle);
    20682068#endif /* VBOX_HGCM */
    20692069
     
    20722072     * that listeners can sync their state again
    20732073     */
    2074     Log(("vmmdevLoadState: capabilities changed (%x), informing connector\n", pData->mouseCapabilities));
    2075     if (pData->pDrv)
    2076         pData->pDrv->pfnUpdateMouseCapabilities(pData->pDrv, pData->mouseCapabilities);
     2074    Log(("vmmdevLoadState: capabilities changed (%x), informing connector\n", pThis->mouseCapabilities));
     2075    if (pThis->pDrv)
     2076        pThis->pDrv->pfnUpdateMouseCapabilities(pThis->pDrv, pThis->mouseCapabilities);
    20772077
    20782078    /* Reestablish the acceleration status. */
    2079     if (    pData->u32VideoAccelEnabled
    2080         &&  pData->pDrv)
    2081     {
    2082         pData->pDrv->pfnVideoAccelEnable (pData->pDrv, !!pData->u32VideoAccelEnabled, &pData->pVMMDevRAMHC->vbvaMemory);
    2083     }
    2084 
    2085     if (pData->fu32AdditionsOk)
     2079    if (    pThis->u32VideoAccelEnabled
     2080        &&  pThis->pDrv)
     2081    {
     2082        pThis->pDrv->pfnVideoAccelEnable (pThis->pDrv, !!pThis->u32VideoAccelEnabled, &pThis->pVMMDevRAMHC->vbvaMemory);
     2083    }
     2084
     2085    if (pThis->fu32AdditionsOk)
    20862086    {
    20872087        LogRel(("Guest Additions information report: additionsVersion = 0x%08X, osType = 0x%08X\n",
    2088                 pData->guestInfo.additionsVersion,
    2089                 pData->guestInfo.osType));
    2090         if (pData->pDrv)
    2091             pData->pDrv->pfnUpdateGuestVersion(pData->pDrv, &pData->guestInfo);
    2092     }
    2093     if (pData->pDrv)
    2094         pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, pData->guestCaps);
     2088                pThis->guestInfo.additionsVersion,
     2089                pThis->guestInfo.osType));
     2090        if (pThis->pDrv)
     2091            pThis->pDrv->pfnUpdateGuestVersion(pThis->pDrv, &pThis->guestInfo);
     2092    }
     2093    if (pThis->pDrv)
     2094        pThis->pDrv->pfnUpdateGuestCapabilities(pThis->pDrv, pThis->guestCaps);
    20952095
    20962096    return VINF_SUCCESS;
     
    21062106static DECLCALLBACK(int) vmmdevLoadStateDone(PPDMDEVINS pDevIns, PSSMHANDLE pSSMHandle)
    21072107{
    2108     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState*);
     2108    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState*);
    21092109
    21102110#ifdef VBOX_HGCM
    2111     vmmdevHGCMLoadStateDone (pData, pSSMHandle);
     2111    vmmdevHGCMLoadStateDone (pThis, pSSMHandle);
    21122112#endif /* VBOX_HGCM */
    21132113
    2114     VMMDevNotifyGuest (pData, VMMDEV_EVENT_RESTORED);
     2114    VMMDevNotifyGuest (pThis, VMMDEV_EVENT_RESTORED);
    21152115
    21162116    return VINF_SUCCESS;
     
    21202120 * (Re-)initializes the MMIO2 data.
    21212121 *
    2122  * @param   pData           Pointer to the VMMDev instance data.
     2122 * @param   pThis           Pointer to the VMMDev instance data.
    21232123 */
    2124 static void vmmdevInitRam(VMMDevState *pData)
    2125 {
    2126     memset(pData->pVMMDevRAMHC, 0, sizeof(VMMDevMemory));
    2127     pData->pVMMDevRAMHC->u32Size = sizeof(VMMDevMemory);
    2128     pData->pVMMDevRAMHC->u32Version = VMMDEV_MEMORY_VERSION;
     2124static void vmmdevInitRam(VMMDevState *pThis)
     2125{
     2126    memset(pThis->pVMMDevRAMHC, 0, sizeof(VMMDevMemory));
     2127    pThis->pVMMDevRAMHC->u32Size = sizeof(VMMDevMemory);
     2128    pThis->pVMMDevRAMHC->u32Version = VMMDEV_MEMORY_VERSION;
    21292129}
    21302130
     
    21452145{
    21462146    int rc;
    2147     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState *);
     2147    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState *);
    21482148
    21492149    Assert(iInstance == 0);
     
    21552155        return VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES;
    21562156
    2157     rc = CFGMR3QueryBool(pCfgHandle, "GetHostTimeDisabled", &pData->fGetHostTimeDisabled);
     2157    rc = CFGMR3QueryBool(pCfgHandle, "GetHostTimeDisabled", &pThis->fGetHostTimeDisabled);
    21582158    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    2159         pData->fGetHostTimeDisabled = false;
     2159        pThis->fGetHostTimeDisabled = false;
    21602160    else if (RT_FAILURE(rc))
    21612161        return PDMDEV_SET_ERROR(pDevIns, rc,
    21622162                                N_("Configuration error: Failed querying \"GetHostTimeDisabled\" as a boolean"));
    21632163
    2164     rc = CFGMR3QueryBool(pCfgHandle, "BackdoorLogDisabled", &pData->fBackdoorLogDisabled);
     2164    rc = CFGMR3QueryBool(pCfgHandle, "BackdoorLogDisabled", &pThis->fBackdoorLogDisabled);
    21652165    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    2166         pData->fBackdoorLogDisabled = false;
     2166        pThis->fBackdoorLogDisabled = false;
    21672167    else if (RT_FAILURE(rc))
    21682168        return PDMDEV_SET_ERROR(pDevIns, rc,
    21692169                                N_("Configuration error: Failed querying \"BackdoorLogDisabled\" as a boolean"));
    21702170
    2171     rc = CFGMR3QueryBool(pCfgHandle, "KeepCredentials", &pData->fKeepCredentials);
     2171    rc = CFGMR3QueryBool(pCfgHandle, "KeepCredentials", &pThis->fKeepCredentials);
    21722172    if (rc == VERR_CFGM_VALUE_NOT_FOUND)
    2173         pData->fKeepCredentials = false;
     2173        pThis->fKeepCredentials = false;
    21742174    else if (RT_FAILURE(rc))
    21752175        return PDMDEV_SET_ERROR(pDevIns, rc,
     
    21802180     */
    21812181    /* Save PDM device instance data for future reference. */
    2182     pData->pDevIns = pDevIns;
     2182    pThis->pDevIns = pDevIns;
    21832183
    21842184    /* PCI vendor, just a free bogus value */
    2185     pData->dev.config[0x00] = 0xee;
    2186     pData->dev.config[0x01] = 0x80;
     2185    pThis->dev.config[0x00] = 0xee;
     2186    pThis->dev.config[0x01] = 0x80;
    21872187    /* device ID */
    2188     pData->dev.config[0x02] = 0xfe;
    2189     pData->dev.config[0x03] = 0xca;
     2188    pThis->dev.config[0x02] = 0xfe;
     2189    pThis->dev.config[0x03] = 0xca;
    21902190    /* class sub code (other type of system peripheral) */
    2191     pData->dev.config[0x0a] = 0x80;
     2191    pThis->dev.config[0x0a] = 0x80;
    21922192    /* class base code (base system peripheral) */
    2193     pData->dev.config[0x0b] = 0x08;
     2193    pThis->dev.config[0x0b] = 0x08;
    21942194    /* header type */
    2195     pData->dev.config[0x0e] = 0x00;
     2195    pThis->dev.config[0x0e] = 0x00;
    21962196    /* interrupt on pin 0 */
    2197     pData->dev.config[0x3d] = 0x01;
     2197    pThis->dev.config[0x3d] = 0x01;
    21982198
    21992199    /*
     
    22012201     */
    22022202    /* Base */
    2203     pData->Base.pfnQueryInterface         = vmmdevPortQueryInterface;
     2203    pThis->Base.pfnQueryInterface         = vmmdevPortQueryInterface;
    22042204
    22052205    /* VMMDev port */
    2206     pData->Port.pfnQueryAbsoluteMouse     = vmmdevQueryAbsoluteMouse;
    2207     pData->Port.pfnSetAbsoluteMouse       = vmmdevSetAbsoluteMouse;
    2208     pData->Port.pfnQueryMouseCapabilities = vmmdevQueryMouseCapabilities;
    2209     pData->Port.pfnSetMouseCapabilities   = vmmdevSetMouseCapabilities;
    2210     pData->Port.pfnRequestDisplayChange   = vmmdevRequestDisplayChange;
    2211     pData->Port.pfnSetCredentials         = vmmdevSetCredentials;
    2212     pData->Port.pfnVBVAChange             = vmmdevVBVAChange;
    2213     pData->Port.pfnRequestSeamlessChange  = vmmdevRequestSeamlessChange;
    2214     pData->Port.pfnSetMemoryBalloon       = vmmdevSetMemoryBalloon;
    2215     pData->Port.pfnSetStatisticsInterval  = vmmdevSetStatisticsInterval;
    2216     pData->Port.pfnVRDPChange             = vmmdevVRDPChange;
     2206    pThis->Port.pfnQueryAbsoluteMouse     = vmmdevQueryAbsoluteMouse;
     2207    pThis->Port.pfnSetAbsoluteMouse       = vmmdevSetAbsoluteMouse;
     2208    pThis->Port.pfnQueryMouseCapabilities = vmmdevQueryMouseCapabilities;
     2209    pThis->Port.pfnSetMouseCapabilities   = vmmdevSetMouseCapabilities;
     2210    pThis->Port.pfnRequestDisplayChange   = vmmdevRequestDisplayChange;
     2211    pThis->Port.pfnSetCredentials         = vmmdevSetCredentials;
     2212    pThis->Port.pfnVBVAChange             = vmmdevVBVAChange;
     2213    pThis->Port.pfnRequestSeamlessChange  = vmmdevRequestSeamlessChange;
     2214    pThis->Port.pfnSetMemoryBalloon       = vmmdevSetMemoryBalloon;
     2215    pThis->Port.pfnSetStatisticsInterval  = vmmdevSetStatisticsInterval;
     2216    pThis->Port.pfnVRDPChange             = vmmdevVRDPChange;
    22172217
    22182218    /* Shared folder LED */
    2219     pData->SharedFolders.Led.u32Magic     = PDMLED_MAGIC;
    2220     pData->SharedFolders.ILeds.pfnQueryStatusLed = vmmdevQueryStatusLed;
     2219    pThis->SharedFolders.Led.u32Magic     = PDMLED_MAGIC;
     2220    pThis->SharedFolders.ILeds.pfnQueryStatusLed = vmmdevQueryStatusLed;
    22212221
    22222222#ifdef VBOX_HGCM
    22232223    /* HGCM port */
    2224     pData->HGCMPort.pfnCompleted          = hgcmCompleted;
     2224    pThis->HGCMPort.pfnCompleted          = hgcmCompleted;
    22252225#endif
    22262226
    22272227    /** @todo convert this into a config parameter like we do everywhere else.*/
    2228     pData->cbGuestRAM = MMR3PhysGetRamSize(PDMDevHlpGetVM(pDevIns));
     2228    pThis->cbGuestRAM = MMR3PhysGetRamSize(PDMDevHlpGetVM(pDevIns));
    22292229
    22302230    /*
     
    22452245     * Allocate and initialize the MMIO2 memory.
    22462246     */
    2247     rc = PDMDevHlpMMIO2Register(pDevIns, 1 /*iRegion*/, VMMDEV_RAM_SIZE, 0, (void **)&pData->pVMMDevRAMHC, "VMMDev");
     2247    rc = PDMDevHlpMMIO2Register(pDevIns, 1 /*iRegion*/, VMMDEV_RAM_SIZE, 0, (void **)&pThis->pVMMDevRAMHC, "VMMDev");
    22482248    if (RT_FAILURE(rc))
    22492249        return PDMDevHlpVMSetError(pDevIns, rc, RT_SRC_POS,
    22502250                                   N_("Failed to allocate %u bytes of memory for the VMM device"), VMMDEV_RAM_SIZE);
    2251     vmmdevInitRam(pData);
     2251    vmmdevInitRam(pThis);
    22522252
    22532253    /*
    22542254     * Register the PCI device.
    22552255     */
    2256     rc = PDMDevHlpPCIRegister(pDevIns, &pData->dev);
     2256    rc = PDMDevHlpPCIRegister(pDevIns, &pThis->dev);
    22572257    if (RT_FAILURE(rc))
    22582258        return rc;
    2259     if (pData->dev.devfn == 32 || iInstance != 0)
    2260         Log(("!!WARNING!!: pData->dev.devfn=%d (ignore if testcase or no started by Main)\n", pData->dev.devfn));
     2259    if (pThis->dev.devfn == 32 || iInstance != 0)
     2260        Log(("!!WARNING!!: pThis->dev.devfn=%d (ignore if testcase or no started by Main)\n", pThis->dev.devfn));
    22612261    rc = PDMDevHlpPCIIORegionRegister(pDevIns, 0, 0x20, PCI_ADDRESS_SPACE_IO, vmmdevIOPortRegionMap);
    22622262    if (RT_FAILURE(rc))
     
    22692269     * Get the corresponding connector interface
    22702270     */
    2271     rc = PDMDevHlpDriverAttach(pDevIns, 0, &pData->Base, &pData->pDrvBase, "VMM Driver Port");
     2271    rc = PDMDevHlpDriverAttach(pDevIns, 0, &pThis->Base, &pThis->pDrvBase, "VMM Driver Port");
    22722272    if (RT_SUCCESS(rc))
    22732273    {
    2274         pData->pDrv = (PPDMIVMMDEVCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_VMMDEV_CONNECTOR);
    2275         if (!pData->pDrv)
     2274        pThis->pDrv = (PPDMIVMMDEVCONNECTOR)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_VMMDEV_CONNECTOR);
     2275        if (!pThis->pDrv)
    22762276            AssertMsgFailedReturn(("LUN #0 doesn't have a VMMDev connector interface!\n"), VERR_PDM_MISSING_INTERFACE);
    22772277#ifdef VBOX_HGCM
    2278         pData->pHGCMDrv = (PPDMIHGCMCONNECTOR)pData->pDrvBase->pfnQueryInterface(pData->pDrvBase, PDMINTERFACE_HGCM_CONNECTOR);
    2279         if (!pData->pHGCMDrv)
     2278        pThis->pHGCMDrv = (PPDMIHGCMCONNECTOR)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_HGCM_CONNECTOR);
     2279        if (!pThis->pHGCMDrv)
    22802280        {
    22812281            Log(("LUN #0 doesn't have a HGCM connector interface, HGCM is not supported. rc=%Vrc\n", rc));
     
    22962296     */
    22972297    PPDMIBASE pBase;
    2298     rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pData->Base, &pBase, "Status Port");
     2298    rc = PDMDevHlpDriverAttach(pDevIns, PDM_STATUS_LUN, &pThis->Base, &pBase, "Status Port");
    22992299    if (RT_SUCCESS(rc))
    2300         pData->SharedFolders.pLedsConnector = (PPDMILEDCONNECTORS)
     2300        pThis->SharedFolders.pLedsConnector = (PPDMILEDCONNECTORS)
    23012301            pBase->pfnQueryInterface(pBase, PDMINTERFACE_LED_CONNECTORS);
    23022302    else if (rc != VERR_PDM_NO_ATTACHED_DRIVER)
     
    23092309     * Register saved state and init the HGCM CmdList critsect.
    23102310     */
    2311     rc = PDMDevHlpSSMRegister(pDevIns, "VMMDev", iInstance, VMMDEV_SSM_VERSION, sizeof(*pData),
     2311    rc = PDMDevHlpSSMRegister(pDevIns, "VMMDev", iInstance, VMMDEV_SSM_VERSION, sizeof(*pThis),
    23122312                              NULL, vmmdevSaveState, NULL,
    23132313                              NULL, vmmdevLoadState, vmmdevLoadStateDone);
     
    23152315
    23162316#ifdef VBOX_HGCM
    2317     pData->pHGCMCmdList = NULL;
    2318     rc = RTCritSectInit(&pData->critsectHGCMCmdList);
     2317    pThis->pHGCMCmdList = NULL;
     2318    rc = RTCritSectInit(&pThis->critsectHGCMCmdList);
    23192319    AssertRCReturn(rc, rc);
    2320     pData->u32HGCMEnabled = 0;
     2320    pThis->u32HGCMEnabled = 0;
    23212321#endif /* VBOX_HGCM */
    23222322
     
    23322332static DECLCALLBACK(void) vmmdevReset(PPDMDEVINS pDevIns)
    23332333{
    2334     VMMDevState *pData = PDMINS_2_DATA(pDevIns, VMMDevState*);
     2334    VMMDevState *pThis = PDMINS_2_DATA(pDevIns, VMMDevState*);
    23352335
    23362336    /*
    23372337     * Reset the mouse integration feature bit
    23382338     */
    2339     if (pData->mouseCapabilities & (VMMDEV_MOUSEGUESTWANTSABS|VMMDEV_MOUSEGUESTNEEDSHOSTCUR))
    2340     {
    2341         pData->mouseCapabilities &= ~VMMDEV_MOUSEGUESTWANTSABS;
     2339    if (pThis->mouseCapabilities & (VMMDEV_MOUSEGUESTWANTSABS|VMMDEV_MOUSEGUESTNEEDSHOSTCUR))
     2340    {
     2341        pThis->mouseCapabilities &= ~VMMDEV_MOUSEGUESTWANTSABS;
    23422342        /* notify the connector */
    2343         Log(("vmmdevReset: capabilities changed (%x), informing connector\n", pData->mouseCapabilities));
    2344         pData->pDrv->pfnUpdateMouseCapabilities(pData->pDrv, pData->mouseCapabilities);
    2345     }
    2346 
    2347     pData->hypervisorSize = 0;
    2348 
    2349     pData->u32HostEventFlags = 0;
     2343        Log(("vmmdevReset: capabilities changed (%x), informing connector\n", pThis->mouseCapabilities));
     2344        pThis->pDrv->pfnUpdateMouseCapabilities(pThis->pDrv, pThis->mouseCapabilities);
     2345    }
     2346
     2347    pThis->hypervisorSize = 0;
     2348
     2349    pThis->u32HostEventFlags = 0;
    23502350
    23512351    /* re-initialize the VMMDev memory */
    2352     if (pData->pVMMDevRAMHC)
    2353         vmmdevInitRam(pData);
     2352    if (pThis->pVMMDevRAMHC)
     2353        vmmdevInitRam(pThis);
    23542354
    23552355    /* credentials have to go away (by default) */
    2356     if (!pData->fKeepCredentials)
    2357     {
    2358         memset(pData->credentialsLogon.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
    2359         memset(pData->credentialsLogon.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
    2360         memset(pData->credentialsLogon.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
    2361     }
    2362     memset(pData->credentialsJudge.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
    2363     memset(pData->credentialsJudge.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
    2364     memset(pData->credentialsJudge.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2356    if (!pThis->fKeepCredentials)
     2357    {
     2358        memset(pThis->credentialsLogon.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2359        memset(pThis->credentialsLogon.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2360        memset(pThis->credentialsLogon.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2361    }
     2362    memset(pThis->credentialsJudge.szUserName, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2363    memset(pThis->credentialsJudge.szPassword, '\0', VMMDEV_CREDENTIALS_STRLEN);
     2364    memset(pThis->credentialsJudge.szDomain, '\0', VMMDEV_CREDENTIALS_STRLEN);
    23652365
    23662366    /* Reset means that additions will report again. */
    2367     const bool fVersionChanged = pData->fu32AdditionsOk
    2368                               || pData->guestInfo.additionsVersion
    2369                               || pData->guestInfo.osType != VBOXOSTYPE_Unknown;
     2367    const bool fVersionChanged = pThis->fu32AdditionsOk
     2368                              || pThis->guestInfo.additionsVersion
     2369                              || pThis->guestInfo.osType != VBOXOSTYPE_Unknown;
    23702370    if (fVersionChanged)
    23712371        Log(("vmmdevReset: fu32AdditionsOk=%d additionsVersion=%x osType=%#x\n",
    2372              pData->fu32AdditionsOk, pData->guestInfo.additionsVersion, pData->guestInfo.osType));
    2373     pData->fu32AdditionsOk = false;
    2374     memset (&pData->guestInfo, 0, sizeof (pData->guestInfo));
     2372             pThis->fu32AdditionsOk, pThis->guestInfo.additionsVersion, pThis->guestInfo.osType));
     2373    pThis->fu32AdditionsOk = false;
     2374    memset (&pThis->guestInfo, 0, sizeof (pThis->guestInfo));
    23752375
    23762376    /* clear pending display change request. */
    2377     memset (&pData->lastReadDisplayChangeRequest, 0, sizeof (pData->lastReadDisplayChangeRequest));
     2377    memset (&pThis->lastReadDisplayChangeRequest, 0, sizeof (pThis->lastReadDisplayChangeRequest));
    23782378
    23792379    /* disable seamless mode */
    2380     pData->fLastSeamlessEnabled = false;
     2380    pThis->fLastSeamlessEnabled = false;
    23812381
    23822382    /* disabled memory ballooning */
    2383     pData->u32LastMemoryBalloonSize = 0;
     2383    pThis->u32LastMemoryBalloonSize = 0;
    23842384
    23852385    /* disabled statistics updating */
    2386     pData->u32LastStatIntervalSize = 0;
     2386    pThis->u32LastStatIntervalSize = 0;
    23872387
    23882388    /*
    23892389     * Clear the event variables.
    23902390     *
    2391      *   Note: The pData->u32HostEventFlags is not cleared.
     2391     *   Note: The pThis->u32HostEventFlags is not cleared.
    23922392     *         It is designed that way so host events do not
    23932393     *         depend on guest resets.
    23942394     */
    2395     pData->u32GuestFilterMask    = 0;
    2396     pData->u32NewGuestFilterMask = 0;
    2397     pData->fNewGuestFilterMask   = 0;
     2395    pThis->u32GuestFilterMask    = 0;
     2396    pThis->u32NewGuestFilterMask = 0;
     2397    pThis->fNewGuestFilterMask   = 0;
    23982398
    23992399    /* This is the default, as Windows and OS/2 guests take this for granted. (Actually, neither does...) */
    24002400    /** @todo change this when we next bump the interface version */
    2401     const bool fCapsChanged = pData->guestCaps != VMMDEV_GUEST_SUPPORTS_GRAPHICS;
     2401    const bool fCapsChanged = pThis->guestCaps != VMMDEV_GUEST_SUPPORTS_GRAPHICS;
    24022402    if (fCapsChanged)
    2403         Log(("vmmdevReset: fCapsChanged=%#x -> %#x\n", pData->guestCaps, VMMDEV_GUEST_SUPPORTS_GRAPHICS));
    2404     pData->guestCaps = VMMDEV_GUEST_SUPPORTS_GRAPHICS; /** @todo r=bird: why? I cannot see this being done at construction?*/
     2403        Log(("vmmdevReset: fCapsChanged=%#x -> %#x\n", pThis->guestCaps, VMMDEV_GUEST_SUPPORTS_GRAPHICS));
     2404    pThis->guestCaps = VMMDEV_GUEST_SUPPORTS_GRAPHICS; /** @todo r=bird: why? I cannot see this being done at construction?*/
    24052405
    24062406    /*
     
    24082408     */
    24092409    if (fVersionChanged)
    2410         pData->pDrv->pfnUpdateGuestVersion(pData->pDrv, &pData->guestInfo);
     2410        pThis->pDrv->pfnUpdateGuestVersion(pThis->pDrv, &pThis->guestInfo);
    24112411    if (fCapsChanged)
    2412         pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, pData->guestCaps);
     2412        pThis->pDrv->pfnUpdateGuestCapabilities(pThis->pDrv, pThis->guestCaps);
    24132413}
    24142414
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