VirtualBox

Ignore:
Timestamp:
Mar 22, 2011 1:19:08 PM (14 years ago)
Author:
vboxsync
Message:

PCI: guest power management

Location:
trunk/src/VBox/HostDrivers/VBoxPci
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostDrivers/VBoxPci/VBoxPci.c

    r36329 r36340  
    372372}
    373373
     374DECLHIDDEN(int) vboxPciDevPowerStateChange(PRAWPCIDEVPORT pPort, PCIRAWPOWERSTATE  aState)
     375{
     376    PVBOXRAWPCIINS pThis = DEVPORT_2_VBOXRAWPCIINS(pPort);
     377    int rc;
     378
     379    vboxPciDevLock(pThis);
     380
     381    rc = vboxPciOsDevPowerStateChange(pThis, aState);
     382   
     383    vboxPciDevUnlock(pThis);
     384
     385    return rc;
     386}
     387
    374388/**
    375389 * Creates a new instance.
     
    383397                              uint32_t           u32HostAddress,
    384398                              uint32_t           fFlags,
     399                              PRAWPCIVM          pVmCtx,
    385400                              PRAWPCIDEVPORT     *ppDevPort)
    386401{
     
    396411    pNew->HostPciAddress                = u32HostAddress;
    397412    pNew->iHostIrq                      = -1;
     413    pNew->pVmCtx                        = pVmCtx;
    398414
    399415    pNew->DevPort.u32Version            = RAWPCIDEVPORT_VERSION;
     
    411427    pNew->DevPort.pfnRegisterIrqHandler = vboxPciDevRegisterIrqHandler;
    412428    pNew->DevPort.pfnUnregisterIrqHandler = vboxPciDevUnregisterIrqHandler;
     429    pNew->DevPort.pfnPowerStateChange   = vboxPciDevPowerStateChange;
    413430    pNew->DevPort.u32VersionEnd         = RAWPCIDEVPORT_VERSION;
    414431
     
    447464                                                        uint32_t             u32HostAddress,
    448465                                                        uint32_t             fFlags,
     466                                                        PRAWPCIVM            pVmCtx,
    449467                                                        PRAWPCIDEVPORT       *ppDevPort)
    450468{
     
    466484    }
    467485
    468     rc = vboxPciNewInstance(pGlobals, u32HostAddress, fFlags, ppDevPort);
     486    rc = vboxPciNewInstance(pGlobals, u32HostAddress, fFlags, pVmCtx, ppDevPort);
    469487
    470488unlock:
     
    493511                                               PRAWPCIVM            pPciData)
    494512{
    495     PVBOXRAWPCIVM pThis = (PVBOXRAWPCIVM)RTMemAllocZ(sizeof(VBOXRAWPCIVM));
     513    PVBOXRAWPCIDRVVM pThis = (PVBOXRAWPCIDRVVM)RTMemAllocZ(sizeof(VBOXRAWPCIDRVVM));
    496514    int rc;
    497515
     
    527545    if (pPciData->pDriverData)
    528546    {
    529         PVBOXRAWPCIVM pThis = pPciData->pDriverData;
     547        PVBOXRAWPCIDRVVM pThis = (PVBOXRAWPCIDRVVM)pPciData->pDriverData;
    530548
    531549        vboxPciOsDeinitVm(pThis, pVM);
  • trunk/src/VBox/HostDrivers/VBoxPci/VBoxPciInternal.h

    r36329 r36340  
    4242/* Forward declaration. */
    4343typedef struct VBOXRAWPCIGLOBALS *PVBOXRAWPCIGLOBALS;
    44 typedef struct VBOXRAWPCIVM      *PVBOXRAWPCIVM;
     44typedef struct VBOXRAWPCIDRVVM   *PVBOXRAWPCIDRVVM;
    4545typedef struct VBOXRAWPCIINS     *PVBOXRAWPCIINS;
    4646
     
    8585    PFNRAWPCIISR       pfnIrqHandler;
    8686    void              *pIrqContext;
     87
     88    PRAWPCIVM         pVmCtx;
    8789} VBOXRAWPCIINS;
    8890
     
    9193 *
    9294 */
    93 typedef struct VBOXRAWPCIVM
     95typedef struct VBOXRAWPCIDRVVM
    9496{
    9597    /** Mutex protecting state changes. */
     
    101103# endif
    102104#endif
    103 } VBOXRAWPCIVM;
     105} VBOXRAWPCIDRVVM;
    104106
    105107/**
     
    136138DECLHIDDEN(void) vboxPciShutdown(PVBOXRAWPCIGLOBALS pGlobals);
    137139
    138 DECLHIDDEN(int)  vboxPciOsInitVm(PVBOXRAWPCIVM pThis,   PVM pVM);
    139 DECLHIDDEN(void) vboxPciOsDeinitVm(PVBOXRAWPCIVM pThis, PVM pVM);
     140DECLHIDDEN(int)  vboxPciOsInitVm(PVBOXRAWPCIDRVVM pThis,   PVM pVM);
     141DECLHIDDEN(void) vboxPciOsDeinitVm(PVBOXRAWPCIDRVVM pThis, PVM pVM);
    140142
    141143DECLHIDDEN(int)  vboxPciOsDevInit  (PVBOXRAWPCIINS pIns, uint32_t fFlags);
     
    167169DECLHIDDEN(int)  vboxPciOsDevUnregisterIrqHandler(PVBOXRAWPCIINS pIns, int32_t iHostIrq);
    168170
     171DECLHIDDEN(int)  vboxPciOsDevPowerStateChange(PVBOXRAWPCIINS pIns, PCIRAWPOWERSTATE  aState);
     172
     173#define VBOX_DRV_VMDATA(pIns) ((PVBOXRAWPCIDRVVM)(pIns->pVmCtx->pDriverData))
     174
    169175RT_C_DECLS_END
    170176
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