Stack Growth
Los procesos actualmente tienen un stack fijo, ahora es necesario que su stack pueda crecer de forma automática.
bool stack_growth(void *fault_address)
{
void *upage = pg_round_down(fault_address);
uint32_t* frame = create_frame();
if (frame != NULL){
bool success = install_frame(frame, upage, true);
if (!success){
destroy_frame(frame);
return false;
}
get_page(upage, true);
return true;
}else
return false;
}if (page == NULL && (esp - 32) <= fault_addr &&
(void*)(PHYS_BASE - fault_addr) <= (void*)0x80408000){
stack_growth(fault_addr);Last updated