/*
* structs
*/
+struct vectors * gvecs; /* global copy of vecs for use in sig handlers */
+
struct event_thread {
struct dm_task *dmt;
pthread_t thread;
return;
}
condlog(2, "%s: stop event checker thread", wp->mapname);
- pthread_kill((pthread_t)wp->thread, SIGHUP);
+ pthread_kill((pthread_t)wp->thread, SIGUSR1);
}
static void
sigemptyset(&set);
sigaddset(&set, SIGHUP);
+ sigaddset(&set, SIGUSR1);
pthread_sigmask(SIG_UNBLOCK, &set, &old);
return old;
}
{
condlog(3, "SIGHUP received");
+ lock(gvecs->lock);
+ reconfigure(gvecs);
+ unlock(gvecs->lock);
+
#ifdef _DEBUG_
dbg_free_final(NULL);
#endif
}
static void
+sigusr1 (int sig)
+{
+ condlog(3, "SIGUSR1 received");
+}
+
+static void
signal_init(void)
{
signal_set(SIGHUP, sighup);
+ signal_set(SIGUSR1, sigusr1);
signal_set(SIGINT, sigend);
signal_set(SIGTERM, sigend);
signal_set(SIGKILL, sigend);
signal_init();
setscheduler();
set_oom_adj(-17);
- vecs = init_vecs();
+ vecs = gvecs = init_vecs();
if (!vecs)
exit(1);