test aarch64 page table中,free pages函数名写错,因此在unmap range in pgtbl中调用此函数释放空间会导致链接失败。 另外根据下面测试用例可以发现实际上没有调用malloc,但是函数里面依旧free了,这也会导致测试用例失败
后面几个lab似乎也都存在这个问题,在加上了free pages之后会失败,删除这行测试通过。我没细看,估计也是类似的地方有错误?
yang 还是说unmap里面其实不需要free?因为如果是共享内存的话free会出错?但是如果不free的话这段内存不是泄漏了吗?
同样有这个问题。我认真研究了一下,测试的内存分配是通过posix_memalign来实现的,和malloc类似。其实内存是已经分配过了的,只是因为L3页表项的结构和其他的不一样,所以在设置pfn的时候会把之前的地址覆盖掉,然后取出来的L3的ptp就是之前的pfn了(大概)。 我自己是修改了get_next_ptp函数,对于L3页表不分配新的内存,只更新pte。 希望作者能够修复这个问题。
posix_memalign
malloc
get_next_ptp
感谢指正,会在下个版本中修复该问题