aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/src/memory
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/src/memory')
-rw-r--r--arch/x86_64/src/memory/frame_allocator.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86_64/src/memory/frame_allocator.cpp b/arch/x86_64/src/memory/frame_allocator.cpp
index 3793ac6..829cd6d 100644
--- a/arch/x86_64/src/memory/frame_allocator.cpp
+++ b/arch/x86_64/src/memory/frame_allocator.cpp
@@ -5,19 +5,18 @@ namespace teachos::arch::memory
auto area_frame_allocator::choose_next_area() -> void
{
current_area = std::nullopt;
- auto begin = areas;
- auto end = areas + 5;
- // TODO: Fix this loop as soon as you've created an area iterator
- for (auto area = begin; area != end; ++area)
+ for (memory_area_iterator it = begin(); it != end(); ++it)
{
- std::size_t address = area->base_address + area->area_length - 1;
+ memory_area & area = *it;
+
+ std::size_t address = area.base_address + area.area_length - 1;
if (frame::containing_address(address) >= next_free_frame)
{
// The `next_free_frame` address is smaller than the last address of the current area
- if (!current_area || area->base_address < current_area->base_address)
+ if (!current_area || area.base_address < current_area->base_address)
{
- current_area = *area;
+ current_area = area;
}
}
}