VirtualBox

Changeset 454 in vbox


Ignore:
Timestamp:
Jan 31, 2007 12:02:36 AM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
18035
Message:

Aligned PGMPOOL and PGMPOOLPAGE.

Location:
trunk/src/VBox/VMM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/PGMInternal.h

    r161 r454  
    643643    /** AVL node code with the (HC) physical address of this page. */
    644644    AVLOHCPHYSNODECORE  Core;
     645#if HC_ARCH_BITS == 64 && GC_ARCH_BITS == 32 && defined(IN_GC)
     646    uint32_t            Alignment0; /**< Alignment. */
     647#endif
     648    /** Pointer to the HC mapping of the page. */
     649    HCPTRTYPE(void *)   pvPageHC;
    645650    /** The guest physical address. */
    646651    RTGCPHYS            GCPhys;
    647     /** Pointer to the HC mapping of the page. */
    648     HCPTRTYPE(void *)   pvPageHC;
    649652    /** The kind of page we're shadowing. (This is really a PGMPOOLKIND enum.) */
    650653    uint8_t             enmKind;
     
    701704     */
    702705    bool                fCR3Mix;
     706#if HC_ARCH_BITS == 64 || GC_ARCH_BITS == 64
     707    bool                Alignment[4];   /**< Align the structure size on a 64-bit boundrary. */
     708#endif
    703709} PGMPOOLPAGE, *PPGMPOOLPAGE, **PPPGMPOOLPAGE;
    704710
     
    740746    /** The number of present page table entries in the entire pool. */
    741747    uint32_t        cPresent;
     748    /** Pointer to the array of user nodes - GC pointer. */
     749    GCPTRTYPE(PPGMPOOLUSER) paUsersGC;
    742750    /** Pointer to the array of user nodes - HC pointer. */
    743751    HCPTRTYPE(PPGMPOOLUSER) paUsersHC;
    744     /** Pointer to the array of user nodes - GC pointer. */
    745     GCPTRTYPE(PPGMPOOLUSER) paUsersGC;
    746752#endif /* PGMPOOL_WITH_USER_TRACKING */
    747753#ifdef PGMPOOL_WITH_GCPHYS_TRACKING
     
    750756    /** The number of user nodes we've allocated. */
    751757    uint16_t        cMaxPhysExts;
     758    /** Pointer to the array of physical xref extent - GC pointer. */
     759    GCPTRTYPE(PPGMPOOLPHYSEXT) paPhysExtsGC;
    752760    /** Pointer to the array of physical xref extent nodes - HC pointer. */
    753761    HCPTRTYPE(PPGMPOOLPHYSEXT) paPhysExtsHC;
    754     /** Pointer to the array of physical xref extent - GC pointer. */
    755     GCPTRTYPE(PPGMPOOLPHYSEXT) paPhysExtsGC;
    756762#endif /* PGMPOOL_WITH_GCPHYS_TRACKING */
    757763#ifdef PGMPOOL_WITH_CACHE
     
    766772#endif /* PGMPOOL_WITH_CACHE */
    767773#ifdef PGMPOOL_WITH_MONITORING
     774    /** Head of the list of modified pages. */
     775    uint16_t        iModifiedHead;
     776    /** The current number of modified pages. */
     777    uint16_t        cModifiedPages;
    768778    /** Access handler, GC. */
    769779    GCPTRTYPE(PFNPGMGCPHYSHANDLER)  pfnAccessHandlerGC;
     
    774784    /** The access handler description (HC ptr). */
    775785    HCPTRTYPE(const char *)         pszAccessHandler;
    776     /** Head of the list of modified pages. */
    777     uint16_t        iModifiedHead;
    778     /** The current number of modified pages. */
    779     uint16_t        cModifiedPages;
    780786#endif /* PGMPOOL_WITH_MONITORING */
    781787    /** The number of pages currently in use. */
     
    784790    /** The high wather mark for cUsedPages. */
    785791    uint16_t        cUsedPagesHigh;
     792    uint32_t        Alignment1;         /**< Align the next member on a 64-bit boundrary. */
    786793    /** Profiling pgmPoolAlloc(). */
    787794    STAMPROFILEADV  StatAlloc;
     
    854861    /** The high wather mark for cModifiedPages. */
    855862    uint16_t        cModifiedPagesHigh;
     863    uint16_t        Alignment2[3];      /**< Align the next member on a 64-bit boundrary. */
    856864# endif
    857865# ifdef PGMPOOL_WITH_CACHE
     
    872880    /** The AVL tree for looking up a page by its HC physical address. */
    873881    AVLOHCPHYSTREE  HCPhysTree;
     882    uint32_t        Alignment3;         /**< Align the next member on a 64-bit boundrary. */
    874883    /** Array of pages. (cMaxPages in length)
    875884     * The Id is the index into thist array.
  • trunk/src/VBox/VMM/testcase/tstVMStructGC.cpp

    r443 r454  
    355355    GEN_CHECK_OFF(PGMTREES, PhysToVirtHandlers);
    356356    GEN_CHECK_OFF(PGMTREES, auPadding);
     357    GEN_CHECK_SIZE(PGMPOOLPAGE);
     358    GEN_CHECK_OFF(PGMPOOLPAGE, Core);
     359    GEN_CHECK_OFF(PGMPOOLPAGE, GCPhys);
     360    GEN_CHECK_OFF(PGMPOOLPAGE, pvPageHC);
     361    GEN_CHECK_OFF(PGMPOOLPAGE, enmKind);
     362    GEN_CHECK_OFF(PGMPOOLPAGE, bPadding);
     363    GEN_CHECK_OFF(PGMPOOLPAGE, idx);
     364    GEN_CHECK_OFF(PGMPOOLPAGE, iNext);
     365#ifdef PGMPOOL_WITH_USER_TRACKING
     366    GEN_CHECK_OFF(PGMPOOLPAGE, iUserHead);
     367    GEN_CHECK_OFF(PGMPOOLPAGE, cPresent);
     368    GEN_CHECK_OFF(PGMPOOLPAGE, iFirstPresent);
     369#endif
     370#ifdef PGMPOOL_WITH_MONITORING
     371    GEN_CHECK_OFF(PGMPOOLPAGE, cModifications);
     372    GEN_CHECK_OFF(PGMPOOLPAGE, iModifiedNext);
     373    GEN_CHECK_OFF(PGMPOOLPAGE, iModifiedPrev);
     374    GEN_CHECK_OFF(PGMPOOLPAGE, iMonitoredNext);
     375    GEN_CHECK_OFF(PGMPOOLPAGE, iMonitoredPrev);
     376#endif
     377#ifdef PGMPOOL_WITH_CACHE
     378    GEN_CHECK_OFF(PGMPOOLPAGE, iAgeNext);
     379    GEN_CHECK_OFF(PGMPOOLPAGE, iAgePrev);
     380#endif
     381    GEN_CHECK_OFF(PGMPOOLPAGE, fZeroed);
     382    GEN_CHECK_OFF(PGMPOOLPAGE, fSeenNonGlobal);
     383    GEN_CHECK_OFF(PGMPOOLPAGE, fMonitored);
     384    GEN_CHECK_OFF(PGMPOOLPAGE, fCached);
     385    GEN_CHECK_OFF(PGMPOOLPAGE, fReusedFlushPending);
     386    GEN_CHECK_OFF(PGMPOOLPAGE, fCR3Mix);
     387    GEN_CHECK_SIZE(PGMPOOL);
     388    GEN_CHECK_OFF(PGMPOOL, pVMHC);
     389    GEN_CHECK_OFF(PGMPOOL, pVMGC);
     390    GEN_CHECK_OFF(PGMPOOL, cMaxPages);
     391    GEN_CHECK_OFF(PGMPOOL, cCurPages);
     392    GEN_CHECK_OFF(PGMPOOL, iFreeHead);
     393    GEN_CHECK_OFF(PGMPOOL, u16Padding);
     394#ifdef PGMPOOL_WITH_USER_TRACKING
     395    GEN_CHECK_OFF(PGMPOOL, iUserFreeHead);
     396    GEN_CHECK_OFF(PGMPOOL, cMaxUsers);
     397    GEN_CHECK_OFF(PGMPOOL, cPresent);
     398    GEN_CHECK_OFF(PGMPOOL, paUsersHC);
     399    GEN_CHECK_OFF(PGMPOOL, paUsersGC);
     400#endif /* PGMPOOL_WITH_USER_TRACKING */
     401#ifdef PGMPOOL_WITH_GCPHYS_TRACKING
     402    GEN_CHECK_OFF(PGMPOOL, iPhysExtFreeHead);
     403    GEN_CHECK_OFF(PGMPOOL, cMaxPhysExts);
     404    GEN_CHECK_OFF(PGMPOOL, paPhysExtsHC);
     405    GEN_CHECK_OFF(PGMPOOL, paPhysExtsGC);
     406#endif
     407#ifdef PGMPOOL_WITH_CACHE
     408    GEN_CHECK_OFF(PGMPOOL, aiHash);
     409    GEN_CHECK_OFF(PGMPOOL, iAgeHead);
     410    GEN_CHECK_OFF(PGMPOOL, iAgeTail);
     411    GEN_CHECK_OFF(PGMPOOL, fCacheEnabled);
     412#endif
     413#ifdef PGMPOOL_WITH_MONITORING
     414    GEN_CHECK_OFF(PGMPOOL, pfnAccessHandlerGC);
     415    GEN_CHECK_OFF(PGMPOOL, pfnAccessHandlerR0);
     416    GEN_CHECK_OFF(PGMPOOL, pfnAccessHandlerR3);
     417    GEN_CHECK_OFF(PGMPOOL, pszAccessHandler);
     418    GEN_CHECK_OFF(PGMPOOL, iModifiedHead);
     419    GEN_CHECK_OFF(PGMPOOL, cModifiedPages);
     420#endif
     421    GEN_CHECK_OFF(PGMPOOL, cUsedPages);
     422#ifdef VBOX_WITH_STATISTICS
     423    GEN_CHECK_OFF(PGMPOOL, cUsedPagesHigh);
     424    GEN_CHECK_OFF(PGMPOOL, StatAlloc);
     425    GEN_CHECK_OFF(PGMPOOL, StatClearAll);
     426#endif
     427    GEN_CHECK_OFF(PGMPOOL, HCPhysTree);
     428    GEN_CHECK_OFF(PGMPOOL, aPages);
     429    GEN_CHECK_OFF(PGMPOOL, aPages[1]);
     430    GEN_CHECK_OFF(PGMPOOL, aPages[PGMPOOL_IDX_FIRST - 1]);
    357431
    358432    GEN_CHECK_SIZE(REM);
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