int mmu_init(void) { kernel_info("Get system MMU...\n"); mmu = get_soc_mmu(); if (!mmu) panic("No MMU found in system"); return 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; }
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("-"); } }