svn commit: r306576 - stable/11/cddl/contrib/opensolaris/cmd/dtrace

Mark Johnston markj at FreeBSD.org
Sun Oct 2 01:22:40 UTC 2016


Author: markj
Date: Sun Oct  2 01:22:38 2016
New Revision: 306576
URL: https://svnweb.freebsd.org/changeset/base/306576

Log:
  MFC r304431:
  Add a SIGINFO handler for dtrace(1).

Modified:
  stable/11/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c
==============================================================================
--- stable/11/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c	Sun Oct  2 01:21:02 2016	(r306575)
+++ stable/11/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c	Sun Oct  2 01:22:38 2016	(r306576)
@@ -93,6 +93,9 @@ static int g_flowindent;
 static int g_intr;
 static int g_impatient;
 static int g_newline;
+#ifdef __FreeBSD__
+static int g_siginfo;
+#endif
 static int g_total;
 static int g_cflags;
 static int g_oflags;
@@ -1260,6 +1263,16 @@ intr(int signo)
 		g_impatient = 1;
 }
 
+#ifdef __FreeBSD__
+static void
+siginfo(int signo __unused)
+{
+
+	g_siginfo++;
+	g_newline = 1;
+}
+#endif
+
 static void
 installsighands(void)
 {
@@ -1275,12 +1288,16 @@ installsighands(void)
 	if (sigaction(SIGTERM, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN)
 		(void) sigaction(SIGTERM, &act, NULL);
 
-#ifndef illumos
+#ifdef __FreeBSD__
 	if (sigaction(SIGPIPE, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN)
 		(void) sigaction(SIGPIPE, &act, NULL);
 
 	if (sigaction(SIGUSR1, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN)
 		(void) sigaction(SIGUSR1, &act, NULL);
+
+	act.sa_handler = siginfo;
+	if (sigaction(SIGINFO, NULL, &oact) == 0 && oact.sa_handler != SIG_IGN)
+		(void) sigaction(SIGINFO, &act, NULL);
 #endif
 }
 
@@ -1944,6 +1961,13 @@ main(int argc, char *argv[])
 		if (!g_intr && !done)
 			dtrace_sleep(g_dtp);
 
+#ifdef __FreeBSD__
+		if (g_siginfo) {
+			(void)dtrace_aggregate_print(g_dtp, g_ofp, NULL);
+			g_siginfo = 0;
+		}
+#endif
+
 		if (g_newline) {
 			/*
 			 * Output a newline just to make the output look


More information about the svn-src-all mailing list