/*! * First kernel function (after boot loader loads it to memory) */ void k_startup () { extern console_t K_INITIAL_STDOUT, K_STDOUT; extern console_t *k_stdout; /* console for kernel messages */ /* set initial stdout */ k_stdout = &K_INITIAL_STDOUT; k_stdout->init (0); /* initialize memory subsystem (needed for boot) */ k_memory_init (); /*! start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* detect memory faults (qemu do not detect segment violations!) */ arch_register_interrupt_handler ( INT_MEM_FAULT, k_memory_fault ); arch_register_interrupt_handler ( INT_UNDEF_FAULT, k_memory_fault ); /* switch to default 'stdout' for kernel */ k_stdout = &K_STDOUT; k_stdout->init (0); kprintf ( "%s\n", system_info ); /* enable interrupts */ enable_interrupts (); stdio_init (); /* initialize standard output devices */ /* start desired program(s) */ hello_world (); segm_fault (); #if ( TURN_OFF == 0 ) kprintf ( "\nSystem halted!\n" ); #ifdef PL190 /* testing uart (arm) interrupts */ void uart0_echo_test_start (); uart0_echo_test_start (); suspend(); #endif halt (); #else /* power off (if supported, or just stop if not) */ kprintf ( "Powering off\n\n" ); power_off (); #endif }
/*! * First kernel function (after grub loads it to memory) * \param magic Multiboot magic number * \param addr Address where multiboot structure is saved */ void k_startup ( unsigned long magic, unsigned long addr ) { extern console_t INITIAL_STDOUT; /* initial stdout */ extern console_t STDOUT; /* default stdout for kernel */ extern console_t STDOUT_PROG; /* default stdout for programs */ /* set initial stdout */ k_stdout = &INITIAL_STDOUT; k_stdout->init ( NULL ); /* initialize memory subsystem (needed for boot) */ k_memory_init ( magic, addr ); /* start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* timer subsystem */ k_time_init (); /* switch to default 'stdout' for kernel */ //extern console_t dev_null; //k_stdout = &dev_null; k_stdout = &STDOUT; k_stdout->init( NULL ); /* initialize 'stdout' for programs */ u_stdout = &STDOUT_PROG; u_stdout->init ( NULL ); kprint ( "%s\n", system_info ); enable_interrupts (); /* "programs" - select programs to run */ // kprint ( "\nStarting program: hello_world\n\n" ); // hello_world (); // kprint ( "\nStarting program: timer\n\n" ); // timer (); //kprint ( "\nStarting program: dmem\n\n" ); //dmem (); kprint ( "\nStarting program: bftest\n\n" ); labos2test(); kprint ( "System halted!" ); halt(); }
/*! * First kernel function (after boot loader loads it to memory) */ void k_startup () { extern void *k_stdout; /* console for kernel messages */ /* set initial stdout */ kdevice_set_initial_stdout (); /* initialize memory subsystem (needed for boot) */ k_memory_init (); /*! start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* detect memory faults (qemu do not detect segment violations!) */ arch_register_interrupt_handler ( INT_MEM_FAULT, k_memory_fault, NULL ); arch_register_interrupt_handler ( INT_UNDEF_FAULT, k_memory_fault, NULL ); /* timer subsystem */ k_time_init (); /* devices */ k_devices_init (); /* switch to default 'stdout' for kernel */ k_stdout = k_device_open ( K_STDOUT, O_WRONLY ); kprintf ( "%s\n", system_info ); /* enable interrupts */ enable_interrupts (); stdio_init (); /* initialize standard input & output devices */ /* start desired program(s) */ hello_world (); keyboard (); timer (); /* segm_fault (); */ #if ( TURN_OFF == 0 ) kprintf ( "\nSystem halted!\n" ); halt (); #else /* power off (if supported, or just stop if not) */ kprintf ( "Powering off\n\n" ); power_off (); #endif }
/*! * First kernel function (after boot loader loads it to memory) */ void k_startup () { extern void *k_stdout; /* console for kernel messages */ extern prog_info_t pi; /* set initial stdout */ kdevice_set_initial_stdout (); /* initialize memory subsystem (needed for boot) */ k_memory_init (); /*! start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* detect memory faults (qemu do not detect segment violations!) */ arch_register_interrupt_handler ( INT_MEM_FAULT, k_memory_fault, NULL ); arch_register_interrupt_handler ( INT_UNDEF_FAULT, k_memory_fault, NULL ); /* timer subsystem */ k_time_init (); /* devices */ k_devices_init (); /* switch to default 'stdout' for kernel */ k_stdout = k_device_open ( K_STDOUT, O_WRONLY ); kprintf ( "%s\n", system_info ); pi.heap = kmalloc ( PROG_HEAP_SIZE ); pi.heap_size = PROG_HEAP_SIZE; /* enable interrupts */ enable_interrupts (); /* starting program routine */ prog_init ( NULL ); #if ( TURN_OFF == 0 ) kprintf ( "\nSystem halted!\n" ); halt (); #else /* power off (if supported, or just stop if not) */ kprintf ( "Powering off\n\n" ); power_off (); #endif }
/*! * First kernel function (after grub loads it to memory) * \param magic Multiboot magic number * \param addr Address where multiboot structure is saved */ void k_startup ( unsigned long magic, unsigned long addr ) { extern device_t K_INITIAL_STDOUT; extern kdevice_t *k_stdout; /* console for kernel messages */ kdevice_t k_initial_stdout; /* default standard input and output devices for user programs */ extern void *u_stdin, *u_stdout; /* set initial stdout */ k_initial_stdout.dev = K_INITIAL_STDOUT; k_initial_stdout.dev.init ( 0, NULL, &k_initial_stdout.dev ); k_stdout = &k_initial_stdout; /* initialize memory subsystem (needed for boot) */ k_memory_init ( magic, addr ); /*! start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* timer subsystem */ k_time_init (); /* devices */ k_devices_init (); /* switch to default 'stdout' for kernel */ k_stdout = k_device_open ( K_STDOUT ); u_stdin = k_device_open ( U_STDIN ); u_stdout = k_device_open ( U_STDOUT ); kprint ( "%s\n", system_info ); enable_interrupts (); /* start shell */ shell ( NULL ); kprint ( "\nSystem halted!\n" ); halt(); }
/*! * First kernel function (after grub loads it to memory) * \param magic Multiboot magic number * \param addr Address where multiboot structure is saved */ void k_startup ( unsigned long magic, unsigned long addr ) { extern console_t INITIAL_STDOUT; /* initial stdout */ extern console_t STDOUT; /* default stdout for kernel */ extern console_t STDOUT_PROG; /* default stdout for programs */ /* set initial stdout */ k_stdout = &INITIAL_STDOUT; k_stdout->init ( NULL ); /* start with regular initialization */ /* interrupts */ arch_init_interrupts (); /* switch to default 'stdout' for kernel */ //extern console_t dev_null; //k_stdout = &dev_null; k_stdout = &STDOUT; k_stdout->init( NULL ); /* initialize 'stdout' for programs */ u_stdout = &STDOUT_PROG; u_stdout->init ( NULL ); kprint ( "%s\n", system_info ); enable_interrupts (); /* "programs" - select programs to run */ //početni program kprint ( "\nStarting program: hello_world\n\n" ); hello_world (); //pozvana 3 vanjska prekida kprint ( "\nStarting interrupt tests\n\n" ); test_interrupts (); kprint ( "System halted!" ); halt(); }