int main(void) { int result; dprintf(0, "\nSOS Starting...\n"); _sos_init(&_sos_ipc_ep_cap, &_sos_interrupt_ep_cap); /* Initialise the network hardware */ network_init(badge_irq_ep(_sos_interrupt_ep_cap, IRQ_BADGE_NETWORK)); /* Initialize timer driver */ result = start_timer(badge_irq_ep(_sos_interrupt_ep_cap, IRQ_BADGE_TIMER)); conditional_panic(result != CLOCK_R_OK, "Failed to initialize timer\n"); /* Init file system */ _filesystem_init(); //frametable_test(TEST_1 | TEST_2); /* Start the user application */ //start_first_process(TTY_NAME, _sos_ipc_ep_cap); starting_first_process = true; proc_list_init(); proc_create(TTY_NAME, strlen(TTY_NAME), _sos_ipc_ep_cap, first_process_created, NULL); dprintf(0, "\nSOS entering syscall loop\n"); syscall_loop(_sos_ipc_ep_cap); return 0; }
void scheduler_init(void) { next_proc_id = 0; registry = hash_make(); named_processes = hash_make(); proc_queue_init(&queues.high_prio); proc_queue_init(&queues.normal_prio); proc_queue_init(&queues.low_prio); wait_list_init(&queues.on_timed_receive); proc_list_init(&queues.on_infinite_receive); //runtime = 0; scheduler_runtime_start(); last_event_fired_ns = monotonic_clock(); avg_event_gap_ns = MANUAL_POLLING_THRESHOLD; expect_event_in_ns = MANUAL_POLLING_THRESHOLD; memset(purgatory, 0, sizeof(purgatory)); num_purged = 0; }