// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef BASE_MEMORY_DISCARDABLE_MEMORY_SHMEM_ALLOCATOR_H_ #define BASE_MEMORY_DISCARDABLE_MEMORY_SHMEM_ALLOCATOR_H_ #include "base/base_export.h" #include "base/memory/scoped_ptr.h" namespace base { // TODO(reveman): Remove this by having allocator interface return // real DiscardableMemory instances. crbug.com/442945 class BASE_EXPORT DiscardableMemoryShmemChunk { public: virtual ~DiscardableMemoryShmemChunk() {} virtual bool Lock() = 0; virtual void Unlock() = 0; virtual void* Memory() const = 0; virtual bool IsMemoryResident() const = 0; }; class BASE_EXPORT DiscardableMemoryShmemAllocator { public: // Returns the allocator instance. static DiscardableMemoryShmemAllocator* GetInstance(); // Sets the allocator instance. Can only be called once, e.g. on startup. // Ownership of |instance| remains with the caller. static void SetInstance(DiscardableMemoryShmemAllocator* allocator); virtual scoped_ptr AllocateLockedDiscardableMemory(size_t size) = 0; protected: virtual ~DiscardableMemoryShmemAllocator() {} }; } // namespace base #endif // BASE_MEMORY_DISCARDABLE_MEMORY_SHMEM_ALLOCATOR_H_