1061da546Spatrick //===-- MachVMMemory.h ------------------------------------------*- C++ -*-===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick // 9061da546Spatrick // Created by Greg Clayton on 6/26/07. 10061da546Spatrick // 11061da546Spatrick //===----------------------------------------------------------------------===// 12061da546Spatrick 13*dda28197Spatrick #ifndef LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMMEMORY_H 14*dda28197Spatrick #define LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMMEMORY_H 15061da546Spatrick 16061da546Spatrick #include "DNBDefs.h" 17061da546Spatrick #include "DNBError.h" 18061da546Spatrick #include <mach/mach.h> 19061da546Spatrick 20061da546Spatrick class MachVMMemory { 21061da546Spatrick public: 22061da546Spatrick MachVMMemory(); 23061da546Spatrick ~MachVMMemory(); 24061da546Spatrick nub_size_t Read(task_t task, nub_addr_t address, void *data, 25061da546Spatrick nub_size_t data_count); 26061da546Spatrick nub_size_t Write(task_t task, nub_addr_t address, const void *data, 27061da546Spatrick nub_size_t data_count); 28061da546Spatrick nub_size_t PageSize(task_t task); 29061da546Spatrick nub_bool_t GetMemoryRegionInfo(task_t task, nub_addr_t address, 30061da546Spatrick DNBRegionInfo *region_info); 31061da546Spatrick nub_bool_t GetMemoryProfile(DNBProfileDataScanType scanType, task_t task, 32061da546Spatrick struct task_basic_info ti, cpu_type_t cputype, 33061da546Spatrick nub_process_t pid, vm_statistics64_data_t &vminfo, 34061da546Spatrick uint64_t &physical_memory, uint64_t &anonymous, 35061da546Spatrick uint64_t &phys_footprint, uint64_t &memory_cap); 36061da546Spatrick 37061da546Spatrick protected: 38061da546Spatrick nub_size_t MaxBytesLeftInPage(task_t task, nub_addr_t addr, nub_size_t count); 39061da546Spatrick 40061da546Spatrick nub_size_t WriteRegion(task_t task, const nub_addr_t address, 41061da546Spatrick const void *data, const nub_size_t data_count); 42061da546Spatrick 43061da546Spatrick vm_size_t m_page_size; 44061da546Spatrick DNBError m_err; 45061da546Spatrick }; 46061da546Spatrick 47*dda28197Spatrick #endif // LLDB_TOOLS_DEBUGSERVER_SOURCE_MACOSX_MACHVMMEMORY_H 48