From d95c714c8cfdc5818b0e0f0c99cf2e5be66de202 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sun, 12 Sep 2021 21:51:10 +0300 Subject: Initial physical page manager + Will probably still need a fair bit of tweakind and documentation improvements, but seems to work outside of the kernel. Also no valgrind errors, which is quite promising I guess. --- include/apos/pmem.h | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 include/apos/pmem.h (limited to 'include/apos/pmem.h') diff --git a/include/apos/pmem.h b/include/apos/pmem.h new file mode 100644 index 0000000..ec98cbf --- /dev/null +++ b/include/apos/pmem.h @@ -0,0 +1,35 @@ +#ifndef APOS_PMEM_H +#define APOS_PMEM_H + +#include + +enum mm_order_t { + MM_O0, + MM_O1, + MM_O2, + MM_O3, + MM_O4, + MM_O5, + MM_O6, + MM_O7, + MM_O8, + MM_O9, +}; + +typedef size_t paddr_t; +typedef ssize_t pnum_t; + +void update_pmap(paddr_t offset); +void free_page(enum mm_order_t order, paddr_t paddr); +void mark_used(enum mm_order_t order, paddr_t paddr); +paddr_t alloc_page(enum mm_order_t order, paddr_t offset); + +#if defined(INIT) +void populate_pmap(paddr_t ram_base, size_t ram_size, paddr_t cont); +#endif + +#if defined(KERNEL) +void init_pmap(void *p); +#endif + +#endif /* APOS_PMEM_H */ -- cgit v1.3