xref: /openbsd-src/gnu/llvm/lldb/tools/debugserver/source/MacOSX/MachVMMemory.h (revision dda2819751e49c83612958492e38917049128b41)
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