+struct pmem_pool*
+pmm_pool_get(int pool_index);
+
+void
+pmm_arch_init_pool(struct pmem* memory);
+
+bool
+pmm_onhold_range(pfn_t start, size_t npages);
+
+bool
+pmm_unhold_range(pfn_t start, size_t npages);
+
+
+struct pmem_pool*
+pmm_declare_pool(int pool, pfn_t start, pfn_t size);
+
+// ---- allocator specific ----
+
+void
+pmm_free_one(struct ppage* page, int type_mask);
+
+struct ppage*
+pmm_alloc_napot_type(int pool, size_t order, ppage_type_t type);
+
+// ----
+
+static inline struct ppage*
+pmm_alloc_normal(size_t order)
+{
+ return pmm_alloc_napot_type(POOL_UNIFIED, order, 0);
+}
+
+static inline struct ppage*
+pmm_alloc_locked(size_t order)
+{
+ return pmm_alloc_napot_type(POOL_UNIFIED, order, PP_FGLOCKED);
+}
+
+static inline void
+change_page_type(struct ppage* page, ppage_type_t type)
+{
+ page->type = type;
+}
+
+static inline struct pmem_pool*
+pmm_pool_lookup(struct ppage* page)
+{
+ return pmm_pool_get(page->pool);
+}