Пример #1
0
void main(struct multiboot *mboot) {

    int rc;

    /* init the kmsg buffer and printk */
    console_sys_init();
    kmsg_init();
    console_register(&kmsg_con);

    /* arch might want to setup stuff */
    arch_early_init();

    printk("kmsg: buffer setup!\n");

    printk("sys: kernel relocation: 0x%x -> 0x%x  size 0x%x\n",
        &kernel_base, &kernel_end, 
        (uintptr_t)&kernel_end - (uintptr_t)&kernel_base);

    parse_multiboot(mboot);

    paging_fini();

    heap_install();

    /* arch should finish init now */
    arch_late_init();

    printk("sys: init done!\n");

    drivers_init();
    do_mount();
    do_test();
    syscall_init();
    /* wait forever */
    asm volatile("mov $0x1337, %eax");
    asm volatile("mov $0x1337, %ebx");
    asm volatile("mov $0x1337, %ecx");
    asm volatile("mov $0x1337, %edx");
    start_sched();
    panic("finished with main, but no idle task was started\n");
}
Пример #2
0
extern "C" void boot2(){

	dln
printd("memset\r\n");
delay_cpu(10);
  for (int i = (int) _bss_start; i < (int)_bss_end; i++)
  {
    *((char*) i)=0;
  }


	dln
printd("boot2\r\n");
delay_cpu(10);

debug_serial_printhex_int((int)&__preinit_array_start);dln
debug_serial_printhex_int((int)&__preinit_array_end);dln
debug_serial_printhex_int((int)&__init_array_start);dln
debug_serial_printhex_int((int)&__init_array_end);dln
debug_serial_printhex_int((int)&_ctor_start);dln
debug_serial_printhex_int((int)&_ctor_end);dln


// BEGIN C++ support (2/2)
  //Call C++ global constructors
  call_constructors(&__preinit_array_start, &__preinit_array_end);
  call_constructors(&__init_array_start, &__init_array_end);
 call_constructors(&_ctor_start, &_ctor_end);
  // END C++ support (2/2)

dln
printd("callconstrend\r\n");
delay_cpu(10);

	second_init();
	drivers_init();
	hmain();
	
	systemError("MAIN FUNCTION END. Kernel bewilderment :)");	
}