Example #1
0
/*!
 * 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();
}
Example #3
0
/*!
 * 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
}
Example #4
0
/*!
 * 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();
}