#include #include #include #include #include "consts.h" #include "errcatch.h" #include "hypervisor.h" #include "io.h" #include "modes.h" #include "sercomm.h" #include "orangutan_shim.h" void w2_hypervisor_main() { time_reset(); w2_sercomm_main(); unsigned long sercomm_time = get_ms(); w2_errcatch_main(); unsigned long errcatch_time = get_ms() - sercomm_time; w2_io_main(); unsigned long io_time = get_ms() - errcatch_time; w2_modes_main(); unsigned long mode_time = get_ms() - io_time; char* message = malloc(80); sprintf(message, "sercomm: %lums ", sercomm_time); serial_send(message, 80); sprintf(message, "errcatch: %lums ", errcatch_time); serial_send(message, 80); sprintf(message, "io: %lums ", io_time); serial_send(message, 80); sprintf(message, "mode: %lums ", mode_time); serial_send(message, 80); sprintf(message, " "); serial_send(message, 80); free(message); usleep(100e3); if (mode_time > W2_MAX_MODULE_CYCLE_MS) w2_errcatch_throw(W2_ERR_CYCLE_EXPIRED); }