// Copyright 2018 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_ #define BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_ #include <stdint.h> #include <optional> #include "base/base_export.h" #include "base/containers/span.h" #include "base/gtest_prod_util.h" #include "base/memory/platform_shared_memory_handle.h" #include "base/memory/shared_memory_mapper.h" #include "base/unguessable_token.h" #include "build/build_config.h" #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) namespace content { class SandboxIPCHandler; } #endif namespace base { namespace subtle { // Implementation class for shared memory regions. // // This class does the following: // // - Wraps and owns a shared memory region platform handle. // - Provides a way to allocate a new region of platform shared memory of given // size. // - Provides a way to create mapping of the region in the current process' // address space, under special access-control constraints (see Mode). // - Provides methods to help transferring the handle across process boundaries. // - Holds a 128-bit unique identifier used to uniquely identify the same // kernel region resource across processes (used for memory tracking). // - Has a method to retrieve the region's size in bytes. // // IMPORTANT NOTE: Users should never use this directly, but // ReadOnlySharedMemoryRegion, WritableSharedMemoryRegion or // UnsafeSharedMemoryRegion since this is an implementation class. class BASE_EXPORT PlatformSharedMemoryRegion { … }; } // namespace subtle } // namespace base #endif // BASE_MEMORY_PLATFORM_SHARED_MEMORY_REGION_H_