/* * Copyright (c) 2021, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace Kernel { // A Scatter-Gather List type that owns its buffers class ScatterGatherList : public RefCounted { public: static RefPtr try_create(AsyncBlockDeviceRequest&, Span> allocated_pages, size_t device_block_size); const VMObject& vmobject() const { return m_vm_object; } VirtualAddress dma_region() const { return m_dma_region->vaddr(); } size_t scatters_count() const { return m_vm_object->physical_pages().size(); } private: ScatterGatherList(NonnullRefPtr, AsyncBlockDeviceRequest&, size_t device_block_size); NonnullRefPtr m_vm_object; OwnPtr m_dma_region; }; }