Browse Source

:bug: 修复了物理页分配时,起始页号计算错误的问题

fslongjin 3 years ago
parent
commit
26c23e0e65
1 changed files with 1 additions and 1 deletions
  1. 1 1
      kernel/mm/mm.c

+ 1 - 1
kernel/mm/mm.c

@@ -300,7 +300,7 @@ struct Page *alloc_pages(unsigned int zone_select, int num, ul flags)
                 // 寻找连续num个空页
                 if (!(((*p >> k) | (*(p + 1) << (64 - k))) & (num == 64 ? 0xffffffffffffffffUL : ((1UL << num) - 1))))
                 {
-                    ul start_page_num = j + k - 1; // 计算得到要开始获取的内存页的页号(书上的公式有问题,这个是改过之后的版本)
+                    ul start_page_num = j + k - shift; // 计算得到要开始获取的内存页的页号(书上的公式有问题,这个是改过之后的版本)
                     for (ul l = 0; l < num; ++l)
                     {
                         struct Page *x = memory_management_struct.pages_struct + start_page_num + l;