+/*
+ * Happens on thread runs with ctrl-c, ignore our own SIGQUIT
+ */
+static void sig_quit(int sig)
+{
+}
+
+static void sig_int(int sig)
+{
+ if (threads) {
+ log_info("\nfio: terminating on signal %d\n", sig);
+ fflush(stdout);
+ terminate_threads(TERMINATE_ALL);
+ }
+}
+
+static void posix_timer_teardown(void)
+{
+ timer_delete(ival_timer);
+}
+
+static void posix_timer_setup(void)
+{
+ struct sigevent evt;
+
+ memset(&evt, 0, sizeof(evt));
+ evt.sigev_notify = SIGEV_THREAD;
+ evt.sigev_notify_function = ival_fn;
+
+ if (timer_create(FIO_TIMER_CLOCK, &evt, &ival_timer) < 0)
+ perror("timer_create");
+
+}
+
+static void set_sig_handlers(void)
+{
+ struct sigaction act;
+
+ memset(&act, 0, sizeof(act));
+ act.sa_handler = sig_int;
+ act.sa_flags = SA_RESTART;
+ sigaction(SIGINT, &act, NULL);
+
+ memset(&act, 0, sizeof(act));
+ act.sa_handler = sig_quit;
+ act.sa_flags = SA_RESTART;
+ sigaction(SIGTERM, &act, NULL);
+}
+