You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.2 KiB
46 lines
1.2 KiB
//========== Copyright (C) Valve Corporation, All rights reserved. ==========//
|
|
//
|
|
// Purpose: CVirtualMemoryManager interface
|
|
//
|
|
//===========================================================================//
|
|
|
|
#ifndef MEM_VIRT_H
|
|
#define MEM_VIRT_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
|
|
#define VMM_KB ( 1024 )
|
|
#define VMM_MB ( 1024 * VMM_KB )
|
|
|
|
#ifdef _PS3
|
|
// Total virtual address space reserved by CVirtualMemoryManager on startup:
|
|
#define VMM_VIRTUAL_SIZE ( 512 * VMM_MB )
|
|
#define VMM_PAGE_SIZE ( 64 * VMM_KB )
|
|
#endif
|
|
|
|
|
|
|
|
// Allocate virtual sections via IMemAlloc::AllocateVirtualMemorySection
|
|
abstract_class IVirtualMemorySection
|
|
{
|
|
public:
|
|
// Information about memory section
|
|
virtual void * GetBaseAddress() = 0;
|
|
virtual size_t GetPageSize() = 0;
|
|
virtual size_t GetTotalSize() = 0;
|
|
|
|
// Functions to manage physical memory mapped to virtual memory
|
|
virtual bool CommitPages( void *pvBase, size_t numBytes ) = 0;
|
|
virtual void DecommitPages( void *pvBase, size_t numBytes ) = 0;
|
|
|
|
// Release the physical memory and associated virtual address space
|
|
virtual void Release() = 0;
|
|
};
|
|
|
|
// Get the IVirtualMemorySection associated with a given memory address (if any):
|
|
extern IVirtualMemorySection *GetMemorySectionForAddress( void *pAddress );
|
|
|
|
|
|
#endif // MEM_VIRT_H
|