Files
skele/example/server/main.c
T

56 lines
1.1 KiB
C

#include "clock.h"
#include "skele.h"
#include <stk/stk.h>
#include <stk/stk_log.h>
static uint8_t running = 1;
static void on_signal(void) { running = 0; }
int main(int argc, char *argv[])
{
uint64_t tick_start;
uint64_t elapsed;
uint64_t log_start;
skele_clock_init(on_signal);
if (skele_stk_setup() != SKELE_INIT_SUCCESS)
return 1;
if (skele_init() != SKELE_INIT_SUCCESS) {
skele_stk_teardown();
return 1;
}
log_start = skele_time_ns();
while (running) {
tick_start = skele_time_ns();
stk_poll();
skele_tick();
elapsed = skele_time_ns() - tick_start;
if (elapsed < skele_tick_ns) {
skele_clock_idle_begin();
skele_sleep_ns(skele_tick_ns - elapsed);
skele_clock_idle_end();
}
if (skele_time_ns() - log_start >= 1000000000ULL) {
stk_log(STK_LOG_INFO,
"tps=%.1f work=%.2fms idle=%.2fms total=%.2fms budget=%.2fms",
skele_tps, skele_tick_work_time_ns / 1e6,
skele_tick_idle_time_ns / 1e6,
skele_tick_total_time_ns / 1e6,
skele_tick_ns / 1e6);
log_start = skele_time_ns();
}
}
skele_stk_teardown();
skele_shutdown();
return 0;
}