diff options
Diffstat (limited to 'Kernel/Memory/RingBuffer.cpp')
-rw-r--r-- | Kernel/Memory/RingBuffer.cpp | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/Kernel/Memory/RingBuffer.cpp b/Kernel/Memory/RingBuffer.cpp index 388e4ae1fe..ca0f38602e 100644 --- a/Kernel/Memory/RingBuffer.cpp +++ b/Kernel/Memory/RingBuffer.cpp @@ -10,8 +10,15 @@ namespace Kernel::Memory { -RingBuffer::RingBuffer(StringView region_name, size_t capacity) - : m_region(MM.allocate_contiguous_kernel_region(page_round_up(capacity).release_value_but_fixme_should_propagate_errors(), region_name, Region::Access::Read | Region::Access::Write).release_value()) +ErrorOr<NonnullOwnPtr<RingBuffer>> RingBuffer::try_create(StringView region_name, size_t capacity) +{ + auto region_size = TRY(page_round_up(capacity)); + auto region = TRY(MM.allocate_contiguous_kernel_region(region_size, region_name, Region::Access::Read | Region::Access::Write)); + return adopt_nonnull_own_or_enomem(new (nothrow) RingBuffer(move(region), capacity)); +} + +RingBuffer::RingBuffer(NonnullOwnPtr<Memory::Region> region, size_t capacity) + : m_region(move(region)) , m_capacity_in_bytes(capacity) { } |