• Frans Kaashoek's avatar
    One way of supporting a guard page below kstack: allocate kstacks in · 91566327
    Frans Kaashoek authored
    procinit() and map them high up (below TRAMPOLNE) with an empty
    mapping below each stack.  Never free a kernel stack.
    
    Another way would be to allocate and map them dynamically, but then we
    need to reload page table when switching processes in scheduler()
    and/or have a kernel pagetable per proc (if we want k->stack to be the
    same virtual address in each process).
    
    One gotcha: kernel addresses are not equal to physical addresses for
    stack addresses.  A stack address must be translated if we need its
    physical address (e.g., virtio passes a stack address to the disk).
    91566327