diff options
Diffstat (limited to 'ui/daemon')
| -rw-r--r-- | ui/daemon/links.json | 1 | ||||
| -rw-r--r-- | ui/daemon/ui.c | 54 |
2 files changed, 55 insertions, 0 deletions
diff --git a/ui/daemon/links.json b/ui/daemon/links.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/ui/daemon/links.json @@ -0,0 +1 @@ +[] diff --git a/ui/daemon/ui.c b/ui/daemon/ui.c new file mode 100644 index 0000000..1cdc55b --- /dev/null +++ b/ui/daemon/ui.c @@ -0,0 +1,54 @@ +// file : ui/daemon/ui.c +// project : Salis-VM +// author : Paul Oliver <contact@pauloliver.dev> + +#include <signal.h> +#include <stdbool.h> +#include <stdint.h> +#include <threads.h> +#include <zlib.h> + +#include "arch_spec.h" +#include "arch_inst.h" +#include "compress.h" +#include "logger.h" +#include "salis.h" +#include "timer.h" + +static bool g_running = true; + +static void quit(int signo) { + log_attention("Signal %d received, will stop simulator soon", signo); + salis_signal_stop_no_check(); + g_running = false; +} + +int main(void) { + log_info("Initializing daemon UI"); + log_info("Installing signal handlers"); + signal(SIGINT, quit); + signal(SIGTERM, quit); + +#if defined(COMMAND_NEW) + salis_init(); +#endif + +#if defined(COMMAND_LOAD) + salis_load(); +#endif + + struct TimerSPS timer_sps; + + while (g_running) { + timer_sps_reset(&timer_sps); + salis_start(); + sleep(1); + salis_signal_stop_no_check(); + salis_wait(); + timer_sps_measure(&timer_sps); + log_info("Running simulation @%#018lx steps/s", (uint64_t)timer_sps.steps_per_sec); + } + + salis_save_and_free(); + return 0; +} |
