在LAB2 的TODO 3中,需要我们为一段地址建立映射表。
其中的一项评分中检查了查询到的页的物理地址是否和建立映射时传入的一致。
我的疑惑是:
难道物理地址不是分配物理页时决定的吗?为什么可以通过传入参数确定?
或者,如果我想强行通过传入的参数来直接决定数据页的物理地址,我是不是应该根据它和空闲页的起始地址的偏移确定具体的物理页,然后手动把这些物理页从空闲链表中剔除?
实验中用到的评分代码如下:
//kernel/arch/aarch64/mm/page_table.c
void lab2_test_page_table(void)
{
{
...
ret = map_range_in_pgtbl(
pgtbl, 0x1001000, 0x1000, PAGE_SIZE, flags);
lab_assert(ret == 0);
ret = query_in_pgtbl(pgtbl, 0x1001000, &pa, &pte);
lab_assert(ret == 0 && pa == 0x1000);
}
...
}