int main(int argc, char *argv[]) { if (argc > 1) { strncpy(config_file, argv[1], sizeof(config_file) - 1); config_file[sizeof(config_file) - 1] = 0; if (!strncmp(config_file, "(nd)", 4)) preset_menu = "dhcp"; } else if (start_info.mod_len) preset_menu = (void*) start_info.mod_start; else preset_menu = "dhcp --with-configfile"; mbi.drives_addr = BOOTSEC_LOCATION + (60 * 1024); mbi.drives_length = 0; mbi.boot_loader_name = (unsigned long) "GNU GRUB " VERSION; mbi.mem_lower = (start_info.nr_pages * PAGE_SIZE) / 1024; mbi.mem_upper = 0; saved_drive = boot_drive; saved_partition = install_partition; init_disk(); /* Try to make sure the client part got launched */ sleep(1); cmain(); printk("cmain returned!\n"); }
void kloader_cmain(struct mem_map_entry mem_map[], uint32_t mem_entry_count) { screen_init(); screen_cursor_hide(); terminal_init(); KINFO("Welcome to Nox (Bootloader mode)"); mem_mgr_init(mem_map, mem_entry_count); ata_init(); fs_init(); struct fat_part_info* part_info = fs_get_system_part(); struct fat_dir_entry kernel; if(!fat_get_dir_entry(part_info, "KERNEL ELF", &kernel)) { KPANIC("Failed to locate KERNEL.ELF"); while(1); } intptr_t kernel_entry_point; if(!elf_load_trusted("KERNEL ELF", &kernel_entry_point)) { KWARN("Failed to load elf!"); } kernel_entry cmain = (kernel_entry)(kernel_entry_point); cmain(mem_map, mem_entry_count); KINFO("Bootloader done"); while(1); }
int __stdcall WinMain(HINSTANCE,HINSTANCE,LPSTR cmdLine,int) { try { return main(cmdLine); #else int main(int argc, const char** argv) { try { return cmain(argc, argv); #endif } catch(Exception& e) { MessageBox(0, e.what(), 0, MB_ICONEXCLAMATION); return 1; } catch(...) { MessageBox(0, "Неопределенная ошибка", 0, MB_ICONEXCLAMATION); return 1; } }
int main(int argc,char *argv[]) { return cmain(argc, argv); }