//===-- mem_map_base.h ------------------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef SCUDO_MEM_MAP_BASE_H_ #define SCUDO_MEM_MAP_BASE_H_ #include "common.h" namespace scudo { // In Scudo, every memory operation will be fulfilled through a // platform-specific `MemMap` instance. The essential APIs are listed in the // `MemMapBase` below. This is implemented in CRTP, so for each implementation, // it has to implement all of the 'Impl' named functions. template <class Derived> class MemMapBase { … }; // `ReservedMemory` is a special memory handle which can be viewed as a page // allocator. `ReservedMemory` will reserve a contiguous pages and the later // page request can be fulfilled at the designated address. This is used when // we want to ensure the virtual address of the MemMap will be in a known range. // This is implemented in CRTP, so for each // implementation, it has to implement all of the 'Impl' named functions. template <class Derived, typename MemMapTy> class ReservedMemory { … }; } // namespace scudo #endif // SCUDO_MEM_MAP_BASE_H_