Luna/kernel/src/memory/MemoryMap.h

37 lines
557 B
C
Raw Normal View History

#pragma once
#include "boot/bootboot.h"
#include <luna/Result.h>
#include <luna/Types.h>
struct MemoryMapEntry
{
u64 ptr;
u64 size;
bool free;
};
class MemoryMapIterator
{
public:
MemoryMapIterator();
void rewind();
Result<MemoryMapEntry> next();
MemoryMapEntry largest_free();
MemoryMapEntry highest();
Result<MemoryMapEntry> at(usize index) const;
usize entries() const
{
return m_mmap_entries;
}
private:
usize m_mmap_entries;
const MMapEnt* m_base_ent;
usize m_cur_ent;
};