diff options
| author | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-09-12 21:51:10 +0300 |
|---|---|---|
| committer | Kimplul <kimi.h.kuparinen@gmail.com> | 2021-09-12 21:51:10 +0300 |
| commit | d95c714c8cfdc5818b0e0f0c99cf2e5be66de202 (patch) | |
| tree | 3b7b7a4fda733f284a4f77a9e67cc509201cfeca /include/apos/pmem.h | |
| parent | 1ab464d959b9ee3d3bb6758ac0d9d33fc6c77e46 (diff) | |
| download | kmi-d95c714c8cfdc5818b0e0f0c99cf2e5be66de202.tar.gz kmi-d95c714c8cfdc5818b0e0f0c99cf2e5be66de202.zip | |
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.
Diffstat (limited to 'include/apos/pmem.h')
| -rw-r--r-- | include/apos/pmem.h | 35 |
1 files changed, 35 insertions, 0 deletions
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 <apos/types.h> + +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 */ |
