PrOSess/kernel/include/memory/sections.h

19 lines
600 B
C++

#pragma once
#include "memory/pointer.h"
struct KernelSection {
uint64_t vma_start;
uint64_t vma_end;
const char* name;
paddr_t phys_start() const { return paddr_t{vma_start >= high_base ? vma_start - high_base : vma_start}; }
paddr_t phys_end() const { return paddr_t{vma_end >= high_base ? vma_end - high_base : vma_end}; }
};
extern KernelSection __reserved_ranges_start__[], __reserved_ranges_end__[];
template<typename Fn>
void for_each_reserved_section(Fn&& fn) {
for (auto* s = __reserved_ranges_start__; s < __reserved_ranges_end__; ++s)
fn(*s);
}