svn commit: r296973 - in head/sys: kern sys

Conrad E. Meyer cem at FreeBSD.org
Thu Mar 17 01:05:55 UTC 2016


Author: cem
Date: Thu Mar 17 01:05:53 2016
New Revision: 296973
URL: https://svnweb.freebsd.org/changeset/base/296973

Log:
  fail(9): Only gather/print stacks if STACK is enabled
  
  This is a follow-up fix to the earlier r296927.
  
  Reported by:	bz
  Sponsored by:	EMC / Isilon Storage Division

Modified:
  head/sys/kern/kern_fail.c
  head/sys/kern/subr_sleepqueue.c
  head/sys/sys/sleepqueue.h

Modified: head/sys/kern/kern_fail.c
==============================================================================
--- head/sys/kern/kern_fail.c	Thu Mar 17 01:02:34 2016	(r296972)
+++ head/sys/kern/kern_fail.c	Thu Mar 17 01:05:53 2016	(r296973)
@@ -52,6 +52,8 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_stack.h"
+
 #include <sys/ctype.h>
 #include <sys/errno.h>
 #include <sys/fail.h>
@@ -708,6 +710,7 @@ fail_point_get(struct fail_point *fp, st
 
 	fp_free(fp_entry_cpy);
 	if (verbose) {
+#ifdef STACK
 		/* Print number of sleeping threads. queue=0 is the argument
 		 * used by msleep when sending our threads to sleep. */
 		sbuf_printf(sb, "\nsleeping_thread_stacks = {\n");
@@ -715,14 +718,17 @@ fail_point_get(struct fail_point *fp, st
 		        &cnt_sleeping);
 
 		sbuf_printf(sb, "},\n");
+#endif
 		sbuf_printf(sb, "sleeping_thread_count = %d,\n",
 		        cnt_sleeping);
 
+#ifdef STACK
 		sbuf_printf(sb, "paused_thread_stacks = {\n");
 		sleepq_sbuf_print_stacks(sb, FP_PAUSE_CHANNEL(fp), 0,
 		        &cnt_sleeping);
 
 		sbuf_printf(sb, "},\n");
+#endif
 		sbuf_printf(sb, "paused_thread_count = %d\n",
 		        cnt_sleeping);
 	}

Modified: head/sys/kern/subr_sleepqueue.c
==============================================================================
--- head/sys/kern/subr_sleepqueue.c	Thu Mar 17 01:02:34 2016	(r296972)
+++ head/sys/kern/subr_sleepqueue.c	Thu Mar 17 01:05:53 2016	(r296973)
@@ -62,6 +62,7 @@ __FBSDID("$FreeBSD$");
 #include "opt_sleepqueue_profiling.h"
 #include "opt_ddb.h"
 #include "opt_sched.h"
+#include "opt_stack.h"
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -1042,6 +1043,7 @@ sleepq_abort(struct thread *td, int intr
  * printed.  Typically, this will equal the number of threads sleeping on the
  * queue, but may be less if sb overflowed before all stacks were printed.
  */
+#ifdef STACK
 int
 sleepq_sbuf_print_stacks(struct sbuf *sb, void *wchan, int queue,
     int *count_stacks_printed)
@@ -1149,6 +1151,7 @@ loop_end:
 
 	return (error);
 }
+#endif
 
 #ifdef SLEEPQUEUE_PROFILING
 #define	SLEEPQ_PROF_LOCATIONS	1024

Modified: head/sys/sys/sleepqueue.h
==============================================================================
--- head/sys/sys/sleepqueue.h	Thu Mar 17 01:02:34 2016	(r296972)
+++ head/sys/sys/sleepqueue.h	Thu Mar 17 01:05:53 2016	(r296973)
@@ -107,9 +107,11 @@ int	sleepq_type(void *wchan);
 void	sleepq_wait(void *wchan, int pri);
 int	sleepq_wait_sig(void *wchan, int pri);
 
-#include <sys/sbuf.h>
+#ifdef STACK
+struct sbuf;
 int sleepq_sbuf_print_stacks(struct sbuf *sb, void *wchan, int queue,
     int *count_stacks_printed);
+#endif
 
 #endif	/* _KERNEL */
 #endif	/* !_SYS_SLEEPQUEUE_H_ */


More information about the svn-src-head mailing list