diff --git a/src/hulk/hippo.d b/src/hulk/hippo.d index cec3535..9951e14 100644 --- a/src/hulk/hippo.d +++ b/src/hulk/hippo.d @@ -102,4 +102,20 @@ struct hippo free_pages = pp; n_free_pages++; } + + /** + * Allocate a physical page. + * + * @return Page address, or null if none available. + */ + public static void * allocate_page() + { + PhysicalPage * pp; + if (pp != null) + { + pp = free_pages; + free_pages = free_pages.next; + } + return cast(void *)pp; + } }