#include <signal.h>
#include <sys/time.h>

#define UPDATETIME 1000000

static struct sigaction sa;

static __inline void restart_timer(void) {
  sigaction(SIGALRM, &sa, NULL);
}

static void update_tm(int v)
{
	printf("%f calls to vga_setpage() per second\n", ((double)cnt)/ (UPDATETIME*1E-6));
	exit(1);
}

static void lnxconio_init(void)
{
  struct itimerval t;

  sa.sa_handler = update_tm;
  sa.sa_flags   = SA_RESTART;
  sigemptyset(&sa.sa_mask);
  sigaddset(&sa.sa_mask, SIGALRM);
  sigaction(SIGALRM, &sa, NULL);
  t.it_interval.tv_sec  = UPDATETIME / 1000000;
  t.it_interval.tv_usec = UPDATETIME % 1000000;
  t.it_value.tv_sec     = UPDATETIME / 1000000;
  t.it_value.tv_usec    = UPDATETIME % 1000000;
}


