Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Jan 2011 17:29:34 +0000 (UTC)
From:      Matthew D Fleming <mdf@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r217270 - in stable/8/sys: kern sys
Message-ID:  <201101111729.p0BHTYmH027643@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mdf
Date: Tue Jan 11 17:29:34 2011
New Revision: 217270
URL: http://svn.freebsd.org/changeset/base/217270

Log:
  (Note the previous commit was a MFC of r216616).
  
  MFC r216620:
  
  Initialize fp_location for explicitly managed fail points, and push
  the parentheses around the location for simple fail points into the
  location string.  This makes the print on fail point set more
  consistent between the two versions.
  
  Also fix up fail.h a little for style(9): only use one of sys/param.h
  and sys/types.h, and use the existing __XSTRING() macro instead of
  rolling our own.  Also fix up a few tabs on changed and nearby lines.
  
  Lastly, since KFAIL_POINT_{BEGIN,END} are not meant for use outside
  this file, just eliminate the macros entirely.

Modified:
  stable/8/sys/kern/kern_fail.c
  stable/8/sys/sys/fail.h
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/kern/kern_fail.c
==============================================================================
--- stable/8/sys/kern/kern_fail.c	Tue Jan 11 17:26:36 2011	(r217269)
+++ stable/8/sys/kern/kern_fail.c	Tue Jan 11 17:29:34 2011	(r217270)
@@ -177,6 +177,7 @@ fail_point_init(struct fail_point *fp, c
 		va_end(ap);
 	}
 	fp->fp_name = name;
+	fp->fp_location = "";
 	fp->fp_flags |= FAIL_POINT_DYNAMIC_NAME;
 	fp->fp_sleep_fn = NULL;
 	fp->fp_sleep_arg = NULL;
@@ -372,10 +373,10 @@ fail_point_set(struct fail_point *fp, ch
  end:
 #ifdef IWARNING
 	if (error)
-		IWARNING("Failed to set %s (%s) to %s",
+		IWARNING("Failed to set %s %s to %s",
 		    fp->fp_name, fp->fp_location, buf);
 	else
-		INOTICE("Set %s (%s) to %s",
+		INOTICE("Set %s %s to %s",
 		    fp->fp_name, fp->fp_location, buf);
 #endif /* IWARNING */
 

Modified: stable/8/sys/sys/fail.h
==============================================================================
--- stable/8/sys/sys/fail.h	Tue Jan 11 17:26:36 2011	(r217269)
+++ stable/8/sys/sys/fail.h	Tue Jan 11 17:29:34 2011	(r217270)
@@ -32,10 +32,9 @@
 #ifndef _SYS_FAIL_H_
 #define _SYS_FAIL_H_
 
-#include <sys/types.h>
-
-#include <sys/linker_set.h>
 #include <sys/param.h>
+#include <sys/cdefs.h>
+#include <sys/linker_set.h>
 #include <sys/queue.h>
 #include <sys/sysctl.h>
 
@@ -129,10 +128,8 @@ fail_point_eval(struct fail_point *fp, i
 __END_DECLS
 
 /* Declare a fail_point and its sysctl in a function. */
-#define _FAIL_POINT_NAME(name) _fail_point_##name
-#define _STRINGIFY_HELPER(x) #x
-#define _STRINGIFY(x) _STRINGIFY_HELPER(x)
-#define _FAIL_POINT_LOCATION() __FILE__ ":" _STRINGIFY(__LINE__)
+#define	_FAIL_POINT_NAME(name)	_fail_point_##name
+#define	_FAIL_POINT_LOCATION()	"(" __FILE__ ":" __XSTRING(__LINE__) ")"
 
 /**
  * Instantiate a failpoint which returns "value" from the function when triggered.
@@ -178,53 +175,43 @@ __END_DECLS
 /**
  * Instantiate a failpoint which runs arbitrary code when triggered.
  * @param parent     The parent sysctl under which to locate the sysctl
- * @param name       The name of the failpoint in the sysctl tree (and printouts)
+ * @param name       The name of the failpoint in the sysctl tree
+ *		     (and printouts)
  * @param code       The arbitrary code to run when triggered.  Can reference
- *                   "RETURN_VALUE" if desired to extract the specified user
- *                   return-value when triggered
+ *                   "RETURN_VALUE" if desired to extract the specified
+ *                   user return-value when triggered.  Note that this is
+ *                   implemented with a do-while loop so be careful of
+ *                   break and continue statements.
  */
 #define KFAIL_POINT_CODE(parent, name, code)				\
-	KFAIL_POINT_START(parent, name) {				\
+do {									\
+	int RETURN_VALUE;						\
+	static struct fail_point _FAIL_POINT_NAME(name) = {		\
+		#name,							\
+		_FAIL_POINT_LOCATION(),					\
+		TAILQ_HEAD_INITIALIZER(_FAIL_POINT_NAME(name).fp_entries), \
+		0,							\
+		NULL, NULL,						\
+	};								\
+	SYSCTL_OID(parent, OID_AUTO, name,				\
+	    CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE,		\
+	    &_FAIL_POINT_NAME(name), 0, fail_point_sysctl,		\
+	    "A", "");							\
+									\
+	if (__predict_false(						\
+	    fail_point_eval(&_FAIL_POINT_NAME(name), &RETURN_VALUE))) {	\
+									\
 		code;							\
-	} FAIL_POINT_END
+									\
+	}								\
+} while (0)
+
 
 /**
  * @}
  * (end group failpoint)
  */
 
-/**
- * Internal macro to implement above #defines -- should not be used directly.
- * @ingroup failpoint_private
- */
-#define KFAIL_POINT_START(parent, name)					\
-	do {								\
-		int RETURN_VALUE;					\
-		static struct fail_point _FAIL_POINT_NAME(name) = {	\
-			#name,						\
-			_FAIL_POINT_LOCATION(),				\
-			TAILQ_HEAD_INITIALIZER(				\
-				_FAIL_POINT_NAME(name).fp_entries),	\
-			0,						\
-			NULL, NULL,					\
-		};							\
-		SYSCTL_OID(parent, OID_AUTO, name,			\
-			CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE,	\
-			&_FAIL_POINT_NAME(name), 0, fail_point_sysctl,	\
-			"A", "");					\
-									\
-		if (__predict_false(					\
-		    fail_point_eval(&_FAIL_POINT_NAME(name),		\
-		    &RETURN_VALUE))) {
-
-/**
- * Internal macro to implement above #defines -- should not be used directly.
- * @ingroup failpoint_private
- */
-#define FAIL_POINT_END							\
-		}							\
-	} while (0)
-
 #ifdef _KERNEL
 int fail_point_sysctl(SYSCTL_HANDLER_ARGS);
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201101111729.p0BHTYmH027643>