124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- MachVMMemory.h ------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Created by Greg Clayton on 6/26/07. 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef __MachVMMemory_h__ 1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define __MachVMMemory_h__ 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DNBDefs.h" 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "DNBError.h" 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include <mach/mach.h> 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass MachVMMemory 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic: 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner enum { kInvalidPageSize = ~0 }; 2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner MachVMMemory(); 2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner ~MachVMMemory(); 2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner nub_size_t Read(task_t task, nub_addr_t address, void *data, nub_size_t data_count); 2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner nub_size_t Write(task_t task, nub_addr_t address, const void *data, nub_size_t data_count); 29fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda nub_size_t PageSize(task_t task); 301308a9555ad586ff03c8f97bcfe7f3212d06bc86Greg Clayton nub_bool_t GetMemoryRegionInfo(task_t task, nub_addr_t address, DNBRegionInfo *region_info); 3177d340f114b99ec8e2f7a48cbb674c93e237022bHan Ming Ong nub_bool_t GetMemoryProfile(DNBProfileDataScanType scanType, task_t task, struct task_basic_info ti, cpu_type_t cputype, nub_process_t pid, vm_statistics_data_t &vm_stats, uint64_t &physical_memory, mach_vm_size_t &rprvt, mach_vm_size_t &rsize, mach_vm_size_t &vprvt, mach_vm_size_t &vsize, mach_vm_size_t &dirty_size, mach_vm_size_t &purgable, mach_vm_size_t &anonymous); 3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected: 34fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda nub_size_t MaxBytesLeftInPage(task_t task, nub_addr_t addr, nub_size_t count); 35fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda 36fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda uint64_t GetStolenPages(task_t task); 37fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda void GetRegionSizes(task_t task, mach_vm_size_t &rsize, mach_vm_size_t &dirty_size); 38fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda void GetMemorySizes(task_t task, cpu_type_t cputype, nub_process_t pid, mach_vm_size_t &rprvt, mach_vm_size_t &vprvt); 39fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda 40fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda 41fb190f3e1ddbaf9fb72e15a96e103de2b9c0dc44Jason Molenda nub_size_t WriteRegion(task_t task, const nub_addr_t address, const void *data, const nub_size_t data_count); 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 43fb9cee64303d36d6fe5d87e63dd8701d1ddb70a9Han Ming Ong vm_size_t m_page_size; 4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner DNBError m_err; 4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner}; 4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif // #ifndef __MachVMMemory_h__ 49