#include "process.h" extern void InitExceptions(); //---------------------------------------------------------------------- // StartProcess // Run a user program. Open the executable, load it into // memory, and jump to it. //---------------------------------------------------------------------- void StartProcess(char *filename) { OpenFile *executable = fileSystem->Open(filename); AddrSpace *space; if (executable == NULL) { printf("Unable to open file %s\n", filename); return; } InitExceptions(); space = new AddrSpace(executable); currentThread->space = space; delete executable; // close file space->InitRegisters(); // set the initial register values space->RestoreState(); // load page table register machine->Run(); // jump to the user progam ASSERT(FALSE); // machine->Run never returns; // the address space exits // by doing the syscall "exit" }