feat: (device) dev_null and dev_rand support
[lunaix-os.git] / lunaix-os / kernel / mm / pmm.c
index 450353538d6d17d38ad02ec7a3ee88d2fdec5488..3ebe22a10d34fdcec5446283534a1e10e4ca0051 100644 (file)
@@ -30,7 +30,7 @@ pmm_mark_chunk_free(uintptr_t start_ppn, size_t page_count)
 
 void
 pmm_mark_chunk_occupied(pid_t owner,
-                        uint32_t start_ppn,
+                        u32_t start_ppn,
                         size_t page_count,
                         pp_attr_t attr)
 {
@@ -43,7 +43,7 @@ pmm_mark_chunk_occupied(pid_t owner,
 // 我们跳过位于0x0的页。我们不希望空指针是指向一个有效的内存空间。
 #define LOOKUP_START 1
 
-size_t pg_lookup_ptr;
+volatile size_t pg_lookup_ptr;
 
 void
 pmm_init(uintptr_t mem_upper_lim)
@@ -140,7 +140,7 @@ pmm_ref_page(pid_t owner, void* page)
 {
     (void*)owner; // TODO: do smth with owner
 
-    uint32_t ppn = (uintptr_t)page >> 12;
+    u32_t ppn = (uintptr_t)page >> 12;
 
     if (ppn >= PM_BMP_MAX_SIZE) {
         return 0;
@@ -158,7 +158,7 @@ pmm_ref_page(pid_t owner, void* page)
 struct pp_struct*
 pmm_query(void* pa)
 {
-    uint32_t ppn = (uintptr_t)pa >> 12;
+    u32_t ppn = (uintptr_t)pa >> 12;
 
     if (ppn >= PM_BMP_MAX_SIZE) {
         return NULL;