diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2025-12-23 20:30:57 +0100 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2025-12-23 20:30:57 +0100 |
| commit | 47209f32e5b68f2b1190afd9c409da7dcc369514 (patch) | |
| tree | feab4c1af141cf25a2a4a2649023334f04a06ced /kernel/src/kapi/memory.cpp | |
| parent | 2fc7576c3375dabeb273ca95cc702a1957dbab10 (diff) | |
| download | teachos-47209f32e5b68f2b1190afd9c409da7dcc369514.tar.xz teachos-47209f32e5b68f2b1190afd9c409da7dcc369514.zip | |
kapi/memory: implement multi-frame allocation
Diffstat (limited to 'kernel/src/kapi/memory.cpp')
| -rw-r--r-- | kernel/src/kapi/memory.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/kernel/src/kapi/memory.cpp b/kernel/src/kapi/memory.cpp index 2f707ec..ebd4c15 100644 --- a/kernel/src/kapi/memory.cpp +++ b/kernel/src/kapi/memory.cpp @@ -15,14 +15,14 @@ namespace teachos::memory { bad_frame_allocator static instance; - auto allocate() noexcept -> std::optional<frame> override + auto allocate_many(std::size_t) noexcept -> std::optional<std::pair<frame, std::size_t>> override { - system::panic("Tried to allocate a frame without an active allocator."); + system::panic("Tried to allocate frames without an active allocator."); } - auto release(frame) -> void override + auto release_many(std::pair<frame, std::size_t>) -> void override { - system::panic("Tried to release a frame without an active allocator."); + system::panic("Tried to release frames without an active allocator."); } }; @@ -76,6 +76,11 @@ namespace teachos::memory return active_frame_allocator->allocate(); } + auto allocate_many_frames(std::size_t count) -> std::optional<std::pair<frame, std::size_t>> + { + return active_frame_allocator->allocate_many(count); + } + auto map(page page, frame frame) -> std::byte * { return active_page_mapper->map(page, frame, page_mapper::flags::empty); |
