changeset 2880:f2718224c9e9 HEAD

Add signal counters to USR1 and USR2 signals too.
author Timo Sirainen <tss@iki.fi>
date Fri, 12 Nov 2004 16:35:39 +0200
parents aa93c7216722
children bd3f5358de8b
files src/lib/lib-signals.c src/lib/lib-signals.h
diffstat 2 files changed, 27 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib/lib-signals.c	Fri Nov 12 00:24:08 2004 +0200
+++ b/src/lib/lib-signals.c	Fri Nov 12 16:35:39 2004 +0200
@@ -8,17 +8,28 @@
 
 int lib_signal_kill;
 unsigned int lib_signal_hup_count;
+unsigned int lib_signal_usr1_count, lib_signal_usr2_count;
 
 static void (*quit_handler) (int);
 
-static void sig_hup(int signo __attr_unused__)
+static void sig_counter(int signo)
 {
 #ifndef HAVE_SIGACTION
 	/* some systems may have changed the signal handler to default one */
-        signal(SIGHUP, sig_hup);
+        signal(signo, sig_counter);
 #endif
 
-        lib_signal_hup_count++;
+	switch (signo) {
+	case SIGHUP:
+		lib_signal_hup_count++;
+		break;
+	case SIGUSR1:
+		lib_signal_usr1_count++;
+		break;
+	case SIGUSR2:
+		lib_signal_usr2_count++;
+		break;
+	}
 }
 
 static void sig_quit(int signo)
@@ -49,13 +60,23 @@
 	if (sigemptyset(&act.sa_mask) < 0)
 		i_fatal("sigemptyset(): %m");
 	act.sa_flags = 0;
-	act.sa_handler = sig_hup;
+	act.sa_handler = sig_counter;
 	while (sigaction(SIGHUP, &act, NULL) < 0) {
 		if (errno != EINTR)
 			i_fatal("sigaction(): %m");
 	}
+	while (sigaction(SIGUSR1, &act, NULL) < 0) {
+		if (errno != EINTR)
+			i_fatal("sigaction(): %m");
+	}
+	while (sigaction(SIGUSR2, &act, NULL) < 0) {
+		if (errno != EINTR)
+			i_fatal("sigaction(): %m");
+	}
 #else
-        signal(SIGHUP, sig_hup);
+        signal(SIGHUP, sig_counter);
+        signal(SIGUSR1, sig_counter);
+        signal(SIGUSR2, sig_counter);
 #endif
 
 	/* these signals should be called only once, so it's safe to use
--- a/src/lib/lib-signals.h	Fri Nov 12 00:24:08 2004 +0200
+++ b/src/lib/lib-signals.h	Fri Nov 12 16:35:39 2004 +0200
@@ -3,6 +3,7 @@
 
 extern int lib_signal_kill;
 extern unsigned int lib_signal_hup_count;
+extern unsigned int lib_signal_usr1_count, lib_signal_usr2_count;
 
 void lib_init_signals(void (*sig_quit_handler) (int));