Logo Search packages:      
Sourcecode: virtualbox-ose version File versions

mm.h File Reference


Detailed Description

MM - The Memory Manager.

Definition in file mm.h.

#include <VBox/cdefs.h>
#include <VBox/types.h>
#include <VBox/x86.h>
#include <VBox/sup.h>

Go to the source code of this file.

Defines

#define MMHYPER_GC_ASSERT_GCPTR(pVM, GCPtr)   do { } while (0)
#define MMHyperGC2HC(pVM, RCPtr)   MMHyperRCToR3((pVM), (RCPtr))
#define MMHyperHC2GC(pVM, R3Ptr)   MMHyperR3ToRC((pVM), (R3Ptr))
RAM Page Flags
Since internal ranges have a byte granularity it's possible for a page be flagged for several uses. The access virtualization in PGM will choose the most restricted one and use EM to emulate access to the less restricted areas of the page.

Bits 0-11 only since they are fitted into the offset part of a physical memory address.

#define MM_RAM_FLAGS_CREFS_MASK   0x3
#define MM_RAM_FLAGS_CREFS_PHYSEXT   MM_RAM_FLAGS_CREFS_MASK
#define MM_RAM_FLAGS_CREFS_SHIFT   62
#define MM_RAM_FLAGS_DYNAMIC_ALLOC   RT_BIT(11)
#define MM_RAM_FLAGS_IDX_MASK   0x3fff
#define MM_RAM_FLAGS_IDX_OVERFLOWED   MM_RAM_FLAGS_IDX_MASK
#define MM_RAM_FLAGS_IDX_SHIFT   48
#define MM_RAM_FLAGS_MMIO   RT_BIT(2)
#define MM_RAM_FLAGS_MMIO2   RT_BIT(3)
#define MM_RAM_FLAGS_NO_REFS_MASK   UINT64_C(0x0000ffffffffffff)
#define MM_RAM_FLAGS_RESERVED   RT_BIT(0)
#define MM_RAM_FLAGS_ROM   RT_BIT(1)

Enumerations

enum  MMTAG {
  MM_TAG_INVALID = 0, MM_TAG_CFGM, MM_TAG_CFGM_BYTES, MM_TAG_CFGM_STRING,
  MM_TAG_CFGM_USER, MM_TAG_CSAM, MM_TAG_CSAM_PATCH, MM_TAG_DBGF,
  MM_TAG_DBGF_INFO, MM_TAG_DBGF_LINE, MM_TAG_DBGF_LINE_DUP, MM_TAG_DBGF_MODULE,
  MM_TAG_DBGF_OS, MM_TAG_DBGF_STACK, MM_TAG_DBGF_SYMBOL, MM_TAG_DBGF_SYMBOL_DUP,
  MM_TAG_EM, MM_TAG_IOM, MM_TAG_IOM_STATS, MM_TAG_MM,
  MM_TAG_MM_LOOKUP_GUEST, MM_TAG_MM_LOOKUP_PHYS, MM_TAG_MM_LOOKUP_VIRT, MM_TAG_MM_PAGE,
  MM_TAG_PATM, MM_TAG_PATM_PATCH, MM_TAG_PDM, MM_TAG_PDM_ASYNC_COMPLETION,
  MM_TAG_PDM_DEVICE, MM_TAG_PDM_DEVICE_USER, MM_TAG_PDM_DRIVER, MM_TAG_PDM_DRIVER_USER,
  MM_TAG_PDM_USB, MM_TAG_PDM_USB_USER, MM_TAG_PDM_LUN, MM_TAG_PDM_QUEUE,
  MM_TAG_PDM_THREAD, MM_TAG_PGM, MM_TAG_PGM_CHUNK_MAPPING, MM_TAG_PGM_HANDLERS,
  MM_TAG_PGM_PHYS, MM_TAG_PGM_POOL, MM_TAG_REM, MM_TAG_SELM,
  MM_TAG_SSM, MM_TAG_STAM, MM_TAG_TM, MM_TAG_TRPM,
  MM_TAG_VM, MM_TAG_VM_REQ, MM_TAG_VMM, MM_TAG_HWACCM,
  MM_TAG_32BIT_HACK = 0x7fffffff
}
MMR3PhysRegisterEx registration type
enum  MMPHYSREG { MM_PHYS_TYPE_NORMAL = 0, MM_PHYS_TYPE_DYNALLOC_CHUNK, MM_PHYS_TYPE_32BIT_HACK = 0x7fffffff }

Functions

 DECLINLINE (RTHCPTR) MMHyper2HC(PVM pVM
 MMDECL (RTHCPHYS) MMPage2Phys(PVM pVM
 MMDECL (bool) MMHyperIsInsideArea(PVM pVM
 MMDECL (RTGCPTR) MMHyperGetArea(PVM pVM
 MMDECL (size_t) MMHyperHeapGetFreeSize(PVM pVM)
 MMDECL (void) MMHyperHeapCheck(PVM pVM)
 MMDECL (int) MMHyperFree(PVM pVM
 MMDECL (RTR0PTR) MMHyperR3ToR0(PVM pVM
 MMDECL (void *) MMHyperR0ToCC(PVM pVM
 MMDECL (RTRCPTR) MMHyperR0ToRC(PVM pVM
 MMDECL (RTR3PTR) MMHyperR0ToR3(PVM pVM

Variables

RTGCPHYS RTUINT cbRange
RTGCPHYS GCPhys
RTGCPTR GCPtr
RTHCPHYS HCPhysPage
size_t * pcb
RTHCPHYS void ** ppvPage
void * pv
void * pvPage
RTR0PTR R0Ptr
RTR3PTR R3Ptr
RTRCPTR RCPtr


Generated by  Doxygen 1.6.0   Back to index