// 我们跳过位于0x0的页。我们不希望空指针是指向一个有效的内存空间。
#define LOOKUP_START 1
-size_t pg_lookup_ptr;
+volatile size_t pg_lookup_ptr;
void
pmm_init(uintptr_t mem_upper_lim)
size_t p2 = 0;
while (p2 < max_pg && p2 - p1 < num_pages) {
- (!(&pm_table[p2])->ref_counts) ? (p2++) : (p1 = p2);
+ (!(&pm_table[p2])->ref_counts) ? (p2++) : (p1 = ++p2);
}
- if (p2 < max_pg) {
+ if (p2 == max_pg && p2 - p1 < num_pages) {
return NULL;
}