VirtualBox

Changeset 30040 in vbox for trunk


Ignore:
Timestamp:
Jun 4, 2010 4:23:29 PM (15 years ago)
Author:
vboxsync
Message:

Part one of the page fusion test case

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxGuestLib.h

    r29516 r30040  
    560560VBGLR3DECL(int)     VbglR3CheckSharedModules(void);
    561561VBGLR3DECL(bool)    VbglR3PageSharingIsEnabled(void);
     562VBGLR3DECL(int)     VbglR3PageIsShared(RTGCPTR pPage, bool *pfShared, bool *pfReadWrite);
    562563/** @} */
    563564
  • trunk/include/VBox/VMMDev.h

    r29344 r30040  
    175175    VMMDevReq_CheckSharedModules         = 214,
    176176    VMMDevReq_GetPageSharingStatus       = 215,
     177    VMMDevReq_DebugIsPageShared          = 216,
    177178    VMMDevReq_SizeHack                   = 0x7fffffff
    178179} VMMDevRequestType;
     
    11851186} VMMDevPageSharingStatusRequest;
    11861187AssertCompileSize(VMMDevPageSharingStatusRequest, 24+4);
     1188
     1189
     1190/**
     1191 * Page sharing status query (debug build only)
     1192 */
     1193typedef struct
     1194{
     1195    /** Header. */
     1196    VMMDevRequestHeader         header;
     1197    /** Page address. */
     1198    RTGCPTR                     GCPtrPage;
     1199    /** Shared flag (out) */
     1200    bool                        fShared;
     1201    /** Read/write flag (out) */
     1202    bool                        fReadWrite;
     1203    /** Alignment */
     1204    bool                        fAlignment[2];
     1205} VMMDevPageIsSharedRequest;
    11871206
    11881207#pragma pack()
     
    16961715        case VMMDevReq_GetPageSharingStatus:
    16971716            return sizeof(VMMDevPageSharingStatusRequest);
    1698 
     1717        case VMMDevReq_DebugIsPageShared:
     1718            return sizeof(VMMDevPageIsSharedRequest);
    16991719        default:
    17001720            return 0;
  • trunk/include/VBox/pgm.h

    r30027 r30040  
    572572VMMR3DECL(int)     PGMR3SharedModuleUnregister(PVM pVM, char *pszModuleName, char *pszVersion, RTGCPTR GCBaseAddr, uint32_t cbModule);
    573573VMMR3DECL(int)     PGMR3SharedModuleCheckAll(PVM pVM);
     574VMMR3DECL(int)     PGMR3SharedModuleGetPageState(PVM pVM, RTGCPTR GCPtrPage, bool *pfShared, bool *pfReadWrite);
    574575/** @} */
    575576
  • trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibModule.cpp

    r29538 r30040  
    144144}
    145145
     146/**
     147 * Checks if page sharing is enabled.
     148 *
     149 * @returns true/false enabled/disabled
     150 */
     151VBGLR3DECL(int) VbglR3PageIsShared(RTGCPTR pPage, bool *pfShared, bool *pfReadWrite)
     152{
     153#ifdef DEBUG
     154    VMMDevPageIsSharedRequest Req;
     155
     156    vmmdevInitRequest(&Req.header, VMMDevReq_DebugIsPageShared);
     157    Req.GCPtrPage = pPage;
     158    int rc = vbglR3GRPerform(&Req.header);
     159    if (RT_SUCCESS(rc))
     160    {
     161        *pfShared    = Req.fShared;
     162        *pfReadWrite = Req.fReadWrite;
     163    }
     164    return rc;
     165#else
     166    return VERR_NOT_IMPLEMENTED;
     167#endif
     168}
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