blob: 513b69ee709fcc8d21bb3150a3ad3a636d039585 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- MachVMMemory.h ------------------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// Created by Greg Clayton on 6/26/07.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef __MachVMMemory_h__
15#define __MachVMMemory_h__
16
17#include "DNBDefs.h"
18#include "DNBError.h"
19#include <mach/mach.h>
20
Kate Stoneb9c1b512016-09-06 20:57:50 +000021class MachVMMemory {
Chris Lattner30fdc8d2010-06-08 16:52:24 +000022public:
Kate Stoneb9c1b512016-09-06 20:57:50 +000023 MachVMMemory();
24 ~MachVMMemory();
25 nub_size_t Read(task_t task, nub_addr_t address, void *data,
26 nub_size_t data_count);
27 nub_size_t Write(task_t task, nub_addr_t address, const void *data,
28 nub_size_t data_count);
29 nub_size_t PageSize(task_t task);
30 nub_bool_t GetMemoryRegionInfo(task_t task, nub_addr_t address,
31 DNBRegionInfo *region_info);
Kate Stoneb9c1b512016-09-06 20:57:50 +000032 nub_bool_t GetMemoryProfile(DNBProfileDataScanType scanType, task_t task,
33 struct task_basic_info ti, cpu_type_t cputype,
34 nub_process_t pid, vm_statistics64_data_t &vminfo,
Han Ming Ong41423692018-02-28 22:18:45 +000035 uint64_t &physical_memory, uint64_t &anonymous,
36 uint64_t &phys_footprint, uint64_t &memory_cap);
Chris Lattner30fdc8d2010-06-08 16:52:24 +000037
38protected:
Kate Stoneb9c1b512016-09-06 20:57:50 +000039 nub_size_t MaxBytesLeftInPage(task_t task, nub_addr_t addr, nub_size_t count);
Chris Lattner30fdc8d2010-06-08 16:52:24 +000040
Kate Stoneb9c1b512016-09-06 20:57:50 +000041 nub_size_t WriteRegion(task_t task, const nub_addr_t address,
42 const void *data, const nub_size_t data_count);
Jason Molendabecd6392013-04-06 07:16:15 +000043
Kate Stoneb9c1b512016-09-06 20:57:50 +000044 vm_size_t m_page_size;
45 DNBError m_err;
Chris Lattner30fdc8d2010-06-08 16:52:24 +000046};
47
Chris Lattner30fdc8d2010-06-08 16:52:24 +000048#endif // #ifndef __MachVMMemory_h__