Luna/kernel/src/memory/MemoryMap.h
apio 1ebd892c16
Convert uses of u64 to usize
Not all of them, but if you're measuring a size it's more appropriate to use usize than u64.
2022-12-07 10:55:47 +01:00

64 lines
1.0 KiB
C++

#pragma once
#include "boot/bootboot.h"
#include <luna/Result.h>
#include <luna/Types.h>
struct MemoryMapEntry
{
MemoryMapEntry() = default;
MemoryMapEntry(const MemoryMapEntry& other) = default;
MemoryMapEntry(u64 address, usize size, bool is_free);
u64 address() const
{
return m_address;
}
void* ptr() const
{
return (void*)m_address;
}
usize size() const
{
return m_size;
}
bool is_free() const
{
return m_is_free;
}
MemoryMapEntry& operator=(const MemoryMapEntry& other);
private:
u64 m_address;
usize m_size;
bool m_is_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:
const usize m_mmap_entries;
const MMapEnt* m_base_ent;
usize m_cur_ent;
};