void Universe::evolute() { prepare_multithreading(); update_agent_parallel(); if (CONFIG::diffusion) update_environment_p(); CONFIG::time += CONFIG::timestep; }
/** * * @brief Initialize kernel * * This routine is invoked when the system is ready to run C code. The * processor must be running in 32-bit mode, and the BSS must have been * cleared/zeroed. * * @return Does not return */ FUNC_NORETURN void _Cstart(void) { #ifdef CONFIG_ARCH_HAS_CUSTOM_SWAP_TO_MAIN void *dummy_thread = NULL; #else /* floating point is NOT used during kernel init */ char __stack dummy_stack[_K_THREAD_NO_FLOAT_SIZEOF]; void *dummy_thread = dummy_stack; #endif /* * Initialize kernel data structures. This step includes * initializing the interrupt subsystem, which must be performed * before the hardware initialization phase. */ prepare_multithreading(dummy_thread); /* perform basic hardware initialization */ _sys_device_do_config_level(_SYS_INIT_LEVEL_PRE_KERNEL_1); _sys_device_do_config_level(_SYS_INIT_LEVEL_PRE_KERNEL_2); /* initialize stack canaries */ #ifdef CONFIG_STACK_CANARIES __stack_chk_guard = (void *)sys_rand32_get(); #endif /* display boot banner */ PRINT_BOOT_BANNER(); switch_to_main_thread(); /* * Compiler can't tell that the above routines won't return and issues * a warning unless we explicitly tell it that control never gets this * far. */ CODE_UNREACHABLE; }