5.20. kinit2関数
freerange関数でkmem構造体のfreelistに0x400000~0xe000000までの領域をページとして加える。 差を取ると0xdc00000で4096で割ると56320ページ分ある。
main.c
int
main(void)
{
/* 略 */
kinit2(P2V(4*1024*1024), P2V(PHYSTOP)); // must come after startothers()
/* 略 */
}
kalloc.c
void
kinit2(void *vstart, void *vend)
{
freerange(vstart, vend);
kmem.use_lock = 1;
}