svn commit: r252482 - head/sbin/devd

Alan Somers asomers at FreeBSD.org
Mon Jul 1 21:33:05 UTC 2013


Author: asomers
Date: Mon Jul  1 21:33:05 2013
New Revision: 252482
URL: http://svnweb.freebsd.org/changeset/base/252482

Log:
  Add a SIGINFO handler to devd.  It will send useful statistics to syslog or
  stderr as appropriate.  Currently, the only statistic printed is the number of
  events received.
  
  Reviewed by:	eadler
  Approved by:	gibbs (co-mentor)

Modified:
  head/sbin/devd/devd.cc

Modified: head/sbin/devd/devd.cc
==============================================================================
--- head/sbin/devd/devd.cc	Mon Jul  1 21:20:17 2013	(r252481)
+++ head/sbin/devd/devd.cc	Mon Jul  1 21:33:05 2013	(r252482)
@@ -117,6 +117,8 @@ static struct pidfh *pfh;
 
 int dflag;
 int nflag;
+static unsigned total_events = 0;
+static volatile sig_atomic_t got_siginfo = 0;
 static volatile sig_atomic_t romeo_must_die = 0;
 
 static const char *configfile = CF;
@@ -965,6 +967,11 @@ event_loop(void)
 			tv.tv_usec = 0;
 		}
 		rv = select(max_fd, &fds, NULL, NULL, &tv);
+		if (got_siginfo) {
+			devdlog(LOG_INFO, "Events received so far=%ld\n",
+			    total_events);
+			got_siginfo = 0;
+		}
 		if (rv == -1) {
 			if (errno == EINTR)
 				continue;
@@ -974,6 +981,7 @@ event_loop(void)
 		if (FD_ISSET(fd, &fds)) {
 			rv = read(fd, buffer, sizeof(buffer) - 1);
 			if (rv > 0) {
+				total_events++;
 				if (rv == sizeof(buffer) - 1) {
 					devdlog(LOG_WARNING, "Warning: "
 					    "available event data exceeded "
@@ -1091,6 +1099,16 @@ gensighand(int)
 }
 
 /*
+ * SIGINFO handler.  Will print useful statistics to the syslog or stderr
+ * as appropriate
+ */
+static void
+siginfohand(int)
+{
+	got_siginfo = 1;
+}
+
+/*
  * Local logging function.  Prints to syslog if we're daemonized; syslog
  * otherwise.
  */
@@ -1169,6 +1187,7 @@ main(int argc, char **argv)
 	signal(SIGHUP, gensighand);
 	signal(SIGINT, gensighand);
 	signal(SIGTERM, gensighand);
+	signal(SIGINFO, siginfohand);
 	event_loop();
 	return (0);
 }


More information about the svn-src-all mailing list