Unifying the Lunaix's Physical Memory Model (#28)
[lunaix-os.git] / lunaix-os / kernel / mm / pmm_internal.h
diff --git a/lunaix-os/kernel/mm/pmm_internal.h b/lunaix-os/kernel/mm/pmm_internal.h
new file mode 100644 (file)
index 0000000..cfdd265
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __LUNAIX_PMM_ALLOC_H
+#define __LUNAIX_PMM_ALLOC_H
+
+#include <lunaix/mm/pmm.h>
+
+static inline void
+set_reserved(struct ppage* page)
+{
+    page->refs = RESERVE_MARKER;
+    page->type = PP_RESERVED;
+    page->order = 0;
+}
+
+void
+pmm_allocator_init(struct pmem* memory);
+
+void
+pmm_allocator_init_pool(struct pmem_pool* pool);
+
+void
+pmm_allocator_add_freehole(struct pmem_pool* pool, struct ppage* start, struct ppage* end);
+
+bool
+pmm_allocator_trymark_onhold(struct pmem_pool* pool, struct ppage* start, struct ppage* end);
+
+bool
+pmm_allocator_trymark_unhold(struct pmem_pool* pool, struct ppage* start, struct ppage* end);
+
+#endif /* __LUNAIX_PMM_ALLOC_H */