Пример #1
0
int mmu_init(void)
{
	kernel_info("Get system MMU...\n");
	mmu = get_soc_mmu();
	if (!mmu)
		panic("No MMU found in system");

	return 0;
}
Пример #2
0
int register_signal_handler(signal_t sig, int (*handler)(struct signal *signal))
{
	if (!handler || (sig >= MAX_SIGNAL))
		return -EINVAL;
	
	kernel_debug("Register signal hanlder for SIGNAL: %d\n", sig);
	if (signal_table[sig])
		kernel_info("Override handler for %d\n", sig);
	signal_table[sig] = handler;

	return 0;
}
Пример #3
0
void kmain()
{
	irq_disable();
	/* 
	 * A primeira coisa a se fazer é iniciar todo o gerenciador
	 * de memória.
	 */
	mm_init();
	arch_early_init();
	ioremap_init();
	irq_init();
	sched_init();
	timer_init();
	/* 
	 * Neste momento temos o gerenciador de memória e escalonador prontos,
	 * já podemos habilitar as interrupções, que podem ser utilizadas
	 * pelos drivers.
	 */
	irq_enable();

	/* Inicia os drivers da plataforma */
	arch_setup();

	/* Requisita um modo se existir um framebuffer*/
	fb_set_mode();
	/* Inicia o console sobre o framebuffer */
	fb_console_init();
	kernel_info();

#if 1
	irq_disable();
	semaphore_init(&sem, 1);
	create_task("a", 4);
	create_task("b", 5);
	create_task("c", 6);
	create_task("d", 7);
	create_task("b", 8);
	create_task("b", 9);
	irq_enable();
	/* Fica de boas esperando as trocas de contexto */
#endif
	/* Como queremos imprimir para depuração do driver, inicializamos ele agora */
	//bcm2835_emmc_init();
	for (;;) {
		led_blink();
		//printk("-");
	}
}