// 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_SHARED_MEMORY_MAPPING_H_ #define BASE_MEMORY_SHARED_MEMORY_MAPPING_H_ #include <cstddef> #include "base/base_export.h" #include "base/check.h" #include "base/containers/span.h" #include "base/memory/raw_ptr.h" #include "base/memory/shared_memory_mapper.h" #include "base/memory/shared_memory_safety_checker.h" #include "base/unguessable_token.h" namespace base { namespace subtle { class PlatformSharedMemoryRegion; } // namespace subtle // Base class for scoped handles to a shared memory mapping created from a // shared memory region. Created shared memory mappings remain valid even if the // creator region is transferred or destroyed. // // Each mapping has an UnguessableToken that identifies the shared memory region // it was created from. This is used for memory metrics, to avoid overcounting // shared memory. class BASE_EXPORT SharedMemoryMapping { … }; // Class modeling a read-only mapping of a shared memory region into the // current process' address space. This is created by ReadOnlySharedMemoryRegion // instances. class BASE_EXPORT ReadOnlySharedMemoryMapping : public SharedMemoryMapping { … }; // Class modeling a writable mapping of a shared memory region into the // current process' address space. This is created by *SharedMemoryRegion // instances. class BASE_EXPORT WritableSharedMemoryMapping : public SharedMemoryMapping { … }; } // namespace base #endif // BASE_MEMORY_SHARED_MEMORY_MAPPING_H_