| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "memory_allocator.h" |
| |
| #include <zircon/assert.h> |
| |
| namespace sysmem_driver { |
| |
| MemoryAllocator::MemoryAllocator(llcpp::fuchsia::sysmem2::HeapProperties properties) |
| : heap_properties_(std::move(properties)) {} |
| |
| MemoryAllocator::~MemoryAllocator() { |
| for (auto& it : destroy_callbacks_) { |
| it.second(); |
| } |
| } |
| |
| void MemoryAllocator::set_ready() { ZX_PANIC("not implemented"); } |
| |
| bool MemoryAllocator::is_ready() { return true; } |
| |
| void MemoryAllocator::AddDestroyCallback(intptr_t key, fit::callback<void()> callback) { |
| ZX_DEBUG_ASSERT(destroy_callbacks_.find(key) == destroy_callbacks_.end()); |
| destroy_callbacks_[key] = std::move(callback); |
| } |
| |
| void MemoryAllocator::RemoveDestroyCallback(intptr_t key) { |
| // The key isn't required to be in the map in case of failures during |
| // create. Erase if present. |
| destroy_callbacks_.erase(key); |
| } |
| |
| } // namespace sysmem_driver |