// Copyright 2021 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_UNSAFE_SHARED_MEMORY_POOL_H_ #define BASE_MEMORY_UNSAFE_SHARED_MEMORY_POOL_H_ #include <memory> #include <utility> #include <vector> #include "base/base_export.h" #include "base/memory/ref_counted.h" #include "base/memory/unsafe_shared_memory_region.h" #include "base/synchronization/lock.h" #include "base/types/pass_key.h" namespace base { // UnsafeSharedMemoryPool manages allocation and pooling of // UnsafeSharedMemoryRegions. Using pool saves cost of repeated shared memory // allocations. Up-to 32 regions would be pooled. It is thread-safe. May return // bigger regions than requested. If a requested size is increased, all stored // regions are purged. Regions are returned to the buffer on destruction of // |SharedMemoryHandle| if they are of a correct size. class BASE_EXPORT UnsafeSharedMemoryPool : public RefCountedThreadSafe<UnsafeSharedMemoryPool> { … }; } // namespace base #endif // BASE_MEMORY_UNSAFE_SHARED_MEMORY_POOL_H_