Second Extended Filesystem (ext2) and other improvements (#33)
[lunaix-os.git] / lunaix-os / kernel / mm / page.c
index 400197fb60583658be2b3d3fcfd86ebc82dbbca8..7bccbb39b204fb8b2921a49baba8c9b701bd06b5 100644 (file)
@@ -1 +1,23 @@
-#include <lunaix/mm/page.h>
\ No newline at end of file
+#include <lunaix/mm/page.h>
+
+pte_t 
+alloc_kpage_at(pte_t* ptep, pte_t pte, int order)
+{
+    ptr_t va = ptep_va(ptep, LFT_SIZE);
+
+    assert(kernel_addr(va));
+
+    struct leaflet* leaflet = alloc_leaflet_pinned(order);
+
+    if (!leaflet) {
+        return null_pte;
+    }
+
+    leaflet_wipe(leaflet);
+
+    ptep_map_leaflet(ptep, pte, leaflet);
+
+    tlb_flush_kernel_ranged(va, leaflet_nfold(leaflet));
+
+    return pte_at(ptep);
+}
\ No newline at end of file