/** * call signal handlers, * restore user context */ void native_irq_handler(void) { int sig; DEBUG("\n\n\t\tnative_irq_handler\n\n"); while (_native_sigpend > 0) { sig = _native_popsig(); _native_sigpend--; if (native_irq_handlers[sig].func != NULL) { DEBUG("calling interrupt handler for %i\n", sig); native_irq_handlers[sig].func(); } else if (sig == SIGUSR1) { DEBUG("ignoring SIGUSR1\n"); } else { errx(EXIT_FAILURE, "XXX: no handler for signal %i\nXXX: this should not have happened!\n", sig); } } DEBUG("native_irq_handler(): return\n"); cpu_switch_context_exit(); }
void sched_task_exit(void) { DEBUG("sched_task_exit(): ending task %s...\n", active_thread->name); dINT(); sched_threads[active_thread->pid] = NULL; num_tasks--; sched_set_status((tcb_t*)active_thread, STATUS_STOPPED); active_thread = NULL; cpu_switch_context_exit(); }
NORETURN void sched_task_exit(void) { DEBUG("sched_task_exit: ending thread %" PRIkernel_pid "...\n", sched_active_thread->pid); (void) disableIRQ(); sched_threads[sched_active_pid] = NULL; sched_num_threads--; sched_set_status((thread_t *)sched_active_thread, STATUS_STOPPED); sched_active_thread = NULL; cpu_switch_context_exit(); }
void kernel_init(void) { (void) disableIRQ(); thread_create(idle_stack, sizeof(idle_stack), THREAD_PRIORITY_IDLE, CREATE_WOUT_YIELD | CREATE_STACKTEST, idle_thread, NULL, idle_name); thread_create(main_stack, sizeof(main_stack), THREAD_PRIORITY_MAIN, CREATE_WOUT_YIELD | CREATE_STACKTEST, main_trampoline, NULL, main_name); cpu_switch_context_exit(); }
void kernel_init(void) { (void) disableIRQ(); printf("kernel_init(): This is RIOT! (Version: %s)\n", RIOT_VERSION); hwtimer_init(); if (thread_create(idle_stack, sizeof(idle_stack), PRIORITY_IDLE, CREATE_WOUT_YIELD | CREATE_STACKTEST, idle_thread, NULL, idle_name) < 0) { printf("kernel_init(): error creating idle task.\n"); } if (thread_create(main_stack, sizeof(main_stack), PRIORITY_MAIN, CREATE_WOUT_YIELD | CREATE_STACKTEST, main_trampoline, NULL, main_name) < 0) { printf("kernel_init(): error creating main task.\n"); } printf("kernel_init(): jumping into first task...\n"); cpu_switch_context_exit(); }
void kernel_init(void) { dINT(); printf("kernel_init(): This is RIOT! (Version: %s)\n", VERSION); sched_init(); if (thread_create(idle_stack, sizeof(idle_stack), PRIORITY_IDLE, CREATE_WOUT_YIELD | CREATE_STACKTEST, idle_thread, idle_name) < 0) { printf("kernel_init(): error creating idle task.\n"); } if (thread_create(main_stack, sizeof(main_stack), PRIORITY_MAIN, CREATE_WOUT_YIELD | CREATE_STACKTEST, MAIN_FUNC, main_name) < 0) { printf("kernel_init(): error creating main task.\n"); } printf("kernel_init(): jumping into first task...\n"); cpu_switch_context_exit(); }
void kernel_init(void) { dINT(); printf("kernel_init(): This is RIOT! (Version: %s)\n", VERSION); hwtimer_init(); if (thread_create(idle_stack, sizeof(idle_stack), PRIORITY_IDLE, CREATE_WOUT_YIELD | CREATE_STACKTEST, idle_thread, idle_name) < 0) { printf("kernel_init(): error creating idle task.\n"); } if (thread_create(main_stack, sizeof(main_stack), PRIORITY_MAIN, CREATE_WOUT_YIELD | CREATE_STACKTEST, MAIN_FUNC, main_name) < 0) { printf("kernel_init(): error creating main task.\n"); } #ifdef MODULE_CONFIG DEBUG("kernel_init(): loading config\n"); config_load(); #endif printf("kernel_init(): jumping into first task...\n"); cpu_switch_context_exit(); }