void Main(struct Boot_Info *bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); Init_TSS(); lockKernel(); Init_Interrupts(0); Init_SMP(); TODO_P(PROJECT_VIRTUAL_MEMORY_A, "initialize virtual memory page tables."); Init_Scheduler(0, (void *)KERN_STACK); Init_Traps(); Init_Local_APIC(0); Init_Timer(); Init_Keyboard(); Init_DMA(); /* Init_Floppy(); *//* floppy initialization hangs on virtualbox */ Init_IDE(); Init_PFAT(); Init_GFS2(); Init_GOSFS(); Init_CFS(); Init_Alarm(); Release_SMP(); /* Initialize Networking */ Init_Network_Devices(); Init_ARP_Protocol(); Init_IP(); Init_Routing(); Init_Sockets(); Init_RIP(); /* End networking subsystem init */ /* Initialize Sound */ Init_Sound_Devices(); /* End sound init */ Mount_Root_Filesystem(); TODO_P(PROJECT_VIRTUAL_MEMORY_A, "initialize page file."); Set_Current_Attr(ATTRIB(BLACK, GREEN | BRIGHT)); Print("Welcome to GeekOS!\n"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); TODO_P(PROJECT_SOUND, "play startup sound"); Spawn_Init_Process(); /* it's time to shutdown the system */ Hardware_Shutdown(); /* we should not get here */ }
/*----------------------------------------------------------------------------------------------*/ int main(int argc, char* argv[]) { FILE* fp; int success; int state; int fin[2]; int fout[2]; pid_t pid; Parse_Arguments(argc, argv); success = Hardware_Init(); if(success == false) { Hardware_Shutdown(); fprintf(stderr,"Hardware_Init() failed, aborting.\n"); return(-1); } if(success) { success = Pipes_Init(); } else { Pipes_Shutdown(); Hardware_Shutdown(); fprintf(stderr,"Pipes_Init() failed, aborting.\n"); return(-1); } if(success) { success = Object_Init(); } else { Pipes_Shutdown(); Object_Shutdown(); Hardware_Shutdown(); fprintf(stderr,"Object_Init() failed, aborting.\n"); return(-1); } if(success) { success = Thread_Init(); } else { Thread_Shutdown(); Pipes_Shutdown(); Object_Shutdown(); Hardware_Shutdown(); fprintf(stderr,"Thread_Init() failed, aborting.\n"); return(-1); } while(grun) { usleep(10000); } Thread_Shutdown(); Pipes_Shutdown(); Object_Shutdown(); Hardware_Shutdown(); return(1); }
void Main(struct Boot_Info *bootInfo) { Init_BSS(); Init_Screen(); Init_Mem(bootInfo); Init_CRC32(); TODO_P(PROJECT_PERCPU, "Initialize PERCPU"); Init_TSS(); /* by modifying begin_int_atomic to autolock if not locked when interrupts are disabled, this lockKernel() became duplicative */ /* lockKernel(); */ Init_Interrupts(0); Print("Init_SMP\n"); Init_SMP(); Print("/Init_SMP\n"); TODO_P(PROJECT_VIRTUAL_MEMORY_A, "initialize virtual memory page tables."); Init_Scheduler(0, (void *)KERN_STACK); Init_Traps(); Init_Local_APIC(0); Init_Timer(); Init_Keyboard(); Init_DMA(); /* Init_Floppy(); *//* floppy initialization hangs on virtualbox */ Init_IDE(); Init_PFAT(); if(Init_GFS2) Init_GFS2(); if(Init_GFS3) Init_GFS3(); Init_GOSFS(); Init_CFS(); Init_Alarm(); Init_Serial(); Print("the global lock is %sheld.\n", Kernel_Is_Locked()? "" : "not "); Release_SMP(); /* Initialize Networking */ /* Init_Network_Devices(); Init_ARP_Protocol(); Init_IP(); Init_Routing(); Init_Sockets(); Init_RIP(); */ /* End networking subsystem init */ /* Initialize Sound */ Init_Sound_Devices(); /* End sound init */ Mount_Root_Filesystem(); TODO_P(PROJECT_VIRTUAL_MEMORY_A, "initialize page file."); Set_Current_Attr(ATTRIB(BLACK, GREEN | BRIGHT)); Print("Welcome to GeekOS!\n"); Set_Current_Attr(ATTRIB(BLACK, GRAY)); TODO_P(PROJECT_SOUND, "play startup sound"); TODO_P(PROJECT_SERIAL, "Initialize the serial console and start the shell."); Spawn_Init_Process(); /* it's time to shutdown the system because Init exited. */ Hardware_Shutdown(); /* we should not get here */ }