void child_main(void) { setbuf(stdout, NULL); setbuf(stderr, NULL); printf("Child starts\n"); cache_param = heritage.param; AZ(pthread_key_create(&sp_key, NULL)); AZ(pthread_key_create(&name_key, NULL)); THR_SetName("cache-main"); VSM_Init(); /* First, LCK needs it. */ LCK_Init(); /* Second, locking */ WAIT_Init(); PAN_Init(); CLI_Init(); Fetch_Init(); CNT_Init(); VCL_Init(); HTTP_Init(); VDI_Init(); VBO_Init(); VBE_InitCfg(); VBP_Init(); WRK_Init(); Pool_Init(); EXP_Init(); HSH_Init(heritage.hash); BAN_Init(); VCA_Init(); SMS_Init(); SMP_Init(); STV_open(); VMOD_Init(); BAN_Compile(); /* Wait for persistent storage to load if asked to */ if (cache_param->diag_bitmap & 0x00020000) SMP_Ready(); CLI_Run(); STV_close(); printf("Child dies\n"); }
int main(int argc, char *argv[]) { //Initialization RDM_Init(); GRD_Init(); //TODO Write arg parser for auto play. CLI_Init(FALSE); //Main software CLI_Process(); //End CLI_Quit(); return EXIT_SUCCESS; }
int main(int argc, const char ** argv) { char cmd_buf[256] = ""; int i ; //open cli character device //if ((fd = open("/dev/mu3d_mtk_test", O_RDWR)) < 0) if ((fd = open("/dev/cli", O_RDWR)) < 0) { printf("cannot open /dev/cli"); return -1; } //eddie SetTTY(0); #if 0 CLI_Init(); #else // printf("[U3D_CLI] input , argc = %d\n", argc); // printf("[U3D_CLI] input , argv =[", argc); for (i= 1 ; i < argc ; i++){ printf("%s ", argv[i]); strcat(cmd_buf, argv[i]) ; strcat(cmd_buf, " ") ; } printf("]\n") ; printf("[U3D_CLI] the cmd buffer is %s\n", cmd_buf) ; write_cmd(cmd_buf) ; #endif close(fd); SetTTY(1); return 0; }
void child_main(void) { setbuf(stdout, NULL); setbuf(stderr, NULL); printf("Child starts\n"); cache_param = heritage.param; AZ(pthread_key_create(&req_key, NULL)); AZ(pthread_key_create(&bo_key, NULL)); AZ(pthread_key_create(&name_key, NULL)); THR_SetName("cache-main"); VSM_Init(); /* First, LCK needs it. */ LCK_Init(); /* Second, locking */ Lck_New(&vxid_lock, lck_vxid); CLI_Init(); PAN_Init(); VFP_Init(); VCL_Init(); HTTP_Init(); VBO_Init(); VBP_Init(); VBE_InitCfg(); Pool_Init(); V1P_Init(); EXP_Init(); HSH_Init(heritage.hash); BAN_Init(); VCA_Init(); SMP_Init(); STV_open(); VMOD_Init(); BAN_Compile(); VRND_Seed(); srand48(random()); CLI_AddFuncs(debug_cmds); /* Wait for persistent storage to load if asked to */ if (FEATURE(FEATURE_WAIT_SILO)) SMP_Ready(); CLI_Run(); BAN_Shutdown(); STV_close(); printf("Child dies\n"); }
int kmain(UInt32 initial_stack, MultibootHeader* mboot, UInt32 mboot_magic) { initial_esp = initial_stack; CLI_Init(); Cls(); UInt32 initrd_end = *(UInt32*)(mboot->mods_addr+4); placement_address = (Pointer) initrd_end; // Set up our new stack here. //UInt32 stack = (UInt32) kmalloc_a(8192, TRUE); MultibootHeader* mboot_hdr = mboot; //kmalloc(sizeof(MultibootHeader)); //memcpy(mboot_hdr, mboot, sizeof(MultibootHeader)); kprintf("Starting init...\n"); //new_start(stack, mboot_hdr); GDT_Init(); IDT_Init(); ISR_Init(); asm volatile("sti"); kprintf("Basics\t\t\t[OK]\n"); PIT_Init(PIT_MSTIME); kprintf("PIT\t\t\t[OK]\n"); init_kheap(); InitPaging((mboot_hdr->mem_lower+mboot_hdr->mem_upper)&~3); InitKernelHeap(); kprintf("Heap\t\t\t[OK]\n"); VFS_Init(); DevFS_Init(); kprintf("VFS\t\t\t[OK]\n"); DriversInit(); kprintf("Drivers\t\t\t[OK]\n"); Screen_Init(); FloppyInit(); checkAllBuses(); DumpPCIDeviceData(); kprintf("PCI\t\t\t[OK]\n"); /*kprintf("Keyboard Init... "); KB_Init(0); kprintf("[ok]\n");*/ FAT12_Init(FAT12_GetContext(FloppyGetDevice()), "/", "sys"); InitTasking(); KernelSymbolsLoad(); //Cls(); kprintf("kOS v0.6.13\n"); VFS_Node* rd = GetNodeFromFile(GetFileFromPath("/sys")); kprintf("rd = %x\n", rd); ArrayList* list = ListFiles(rd); ALIterator* itr = ALGetItr(list); while(ALItrHasNext(itr)) { VFS_Node* node = ALItrNext(itr); kprintf("file: %s\n", node->name); } ALFreeItr(itr); ALFreeList(list); //kprintf("kprintf symbol = %x\n", getKernelSymbol("kprintf")); File* initScript = GetFileFromPath("/sys/init.script"); FileSeek(0, initScript); // Due to these being global objects, we have to do such ugly things as this. #ifdef INIT_DEBUG kprintf("initScript=%x\n", initScript); #endif char* lineBuf = kalloc(256); int doBreak = 0; while(!doBreak) { if(fgetline(initScript, lineBuf, 256, '\n')==-1) { if(strlen(lineBuf) > 0) { doBreak = 1; } else { break; // We've processed everything that needs to be processed. } } // Now parse it. char* tok = strtok(lineBuf, " "); kprintf("%s, %x\n", tok,tok); if(!strcmp(tok, "load_driver")) { #ifdef INIT_DEBUG kprintf("load_driver "); #endif tok = strtok(NULL, " "); // Load the driver specified. File* drv = GetFileFromPath(tok); if(drv != NULL) { int drvLength = FileSeek(SEEK_EOF, drv); FileSeek(0, drv); void* drvBuf = kalloc(drvLength); #ifdef INIT_DEBUG kprintf("%s\n", GetNodeFromFile(drv)->name); #endif ReadFile(drvBuf, drvLength, drv); ELF* elf = LoadKernelDriver(drvBuf); #ifdef INIT_DEBUG kprintf("elf->start=%x\n", elf->start); #endif if(elf->error == 0) { void (*driverInit)() = (void (*)()) elf->start; driverInit(); } kfree(drvBuf); drvBuf = NULL; CloseFile(drv); } } } CloseFile(initScript); kfree(lineBuf); kprintf("Kernel init done...\n"); File* elf = GetFileFromPath("/sys/helloworld"); FileSeek(SEEK_EOF, elf); int length = FileTell(elf); FileSeek(0, elf); UInt8* elfBuf = kalloc(length); ReadFile(elfBuf, length, elf); ELF* elfExe = Parse_ELF(elfBuf); CreateTaskFromELF(elfExe); // Kernel main logic loop while(1) { asm volatile("hlt"); } return 0; }