Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Dec 2010 16:29:58 +0000 (UTC)
From:      Matthew D Fleming <mdf@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r216616 - in head/sys: kern sys
Message-ID:  <201012211629.oBLGTwh4069669@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mdf
Date: Tue Dec 21 16:29:58 2010
New Revision: 216616
URL: http://svn.freebsd.org/changeset/base/216616

Log:
  Move the fail_point_entry definition from fail.h to kern_fail.c, which
  allows putting the enumeration constants of fail point types with the
  text string that matches them.
  
  MFC after:	1 week

Modified:
  head/sys/kern/kern_fail.c
  head/sys/sys/fail.h

Modified: head/sys/kern/kern_fail.c
==============================================================================
--- head/sys/kern/kern_fail.c	Tue Dec 21 13:45:29 2010	(r216615)
+++ head/sys/kern/kern_fail.c	Tue Dec 21 16:29:58 2010	(r216616)
@@ -76,6 +76,43 @@ MTX_SYSINIT(g_fp_mtx, &g_fp_mtx, "fail p
 #define FP_LOCK()	mtx_lock(&g_fp_mtx)
 #define FP_UNLOCK()	mtx_unlock(&g_fp_mtx)
 
+/**
+ * Failpoint types.
+ * Don't change these without changing fail_type_strings in fail.c.
+ * @ingroup failpoint_private
+ */
+enum fail_point_t {
+	FAIL_POINT_OFF,		/**< don't fail */
+	FAIL_POINT_PANIC,	/**< panic */
+	FAIL_POINT_RETURN,	/**< return an errorcode */
+	FAIL_POINT_BREAK,	/**< break into the debugger */
+	FAIL_POINT_PRINT,	/**< print a message */
+	FAIL_POINT_SLEEP,	/**< sleep for some msecs */
+	FAIL_POINT_INVALID,	/**< placeholder */
+};
+
+static const char *fail_type_strings[] = {
+	"off",
+	"panic",
+	"return",
+	"break",
+	"print",
+	"sleep",
+};
+
+/**
+ * Internal structure tracking a single term of a complete failpoint.
+ * @ingroup failpoint_private
+ */
+struct fail_point_entry {
+	enum fail_point_t fe_type;	/**< type of entry */
+	int		fe_arg;		/**< argument to type (e.g. return value) */
+	int		fe_prob;	/**< likelihood of firing in millionths */
+	int		fe_count;	/**< number of times to fire, 0 means always */
+
+	TAILQ_ENTRY(fail_point_entry) fe_entries; /**< next entry in fail point */
+};
+
 static inline void
 fail_point_sleep(struct fail_point *fp, struct fail_point_entry *ent,
     int msecs, enum fail_point_return_code *pret)
@@ -102,15 +139,6 @@ enum {
 	PROB_DIGITS = 6,        /* number of zero's in above number */
 };
 
-static const char *fail_type_strings[] = {
-	"off",
-	"panic",
-	"return",
-	"break",
-	"print",
-	"sleep",
-};
-
 static char *parse_fail_point(struct fail_point_entries *, char *);
 static char *parse_term(struct fail_point_entries *, char *);
 static char *parse_number(int *out_units, int *out_decimal, char *);

Modified: head/sys/sys/fail.h
==============================================================================
--- head/sys/sys/fail.h	Tue Dec 21 13:45:29 2010	(r216615)
+++ head/sys/sys/fail.h	Tue Dec 21 16:29:58 2010	(r216616)
@@ -39,22 +39,6 @@
 #include <sys/queue.h>
 #include <sys/sysctl.h>
 
-
-/**
- * Failpoint types.
- * Don't change these without changing fail_type_strings in fail.c.
- * @ingroup failpoint_private
- */
-enum fail_point_t {
-	FAIL_POINT_OFF,		/**< don't fail */
-	FAIL_POINT_PANIC,	/**< panic */
-	FAIL_POINT_RETURN,	/**< return an errorcode */
-	FAIL_POINT_BREAK,	/**< break into the debugger */
-	FAIL_POINT_PRINT,	/**< print a message */
-	FAIL_POINT_SLEEP,	/**< sleep for some msecs */
-	FAIL_POINT_INVALID,	/**< placeholder */
-};
-
 /**
  * Failpoint return codes, used internally.
  * @ingroup failpoint_private
@@ -65,6 +49,7 @@ enum fail_point_return_code {
 	FAIL_POINT_RC_QUEUED,		/**< sleep_fn will be called */
 };
 
+struct fail_point_entry;
 TAILQ_HEAD(fail_point_entries, fail_point_entry);
 /**
  * Internal failpoint structure, tracking all the current details of the
@@ -84,18 +69,7 @@ struct fail_point {
 
 #define	FAIL_POINT_DYNAMIC_NAME	0x01	/**< Must free name on destroy */
 
-/**
- * Internal structure tracking a single term of a complete failpoint.
- * @ingroup failpoint_private
- */
-struct fail_point_entry {
-	enum fail_point_t fe_type;	/**< type of entry */
-	int		fe_arg;		/**< argument to type (e.g. return value) */
-	int		fe_prob;	/**< likelihood of firing in millionths */
-	int		fe_count;	/**< number of times to fire, 0 means always */
-
-	TAILQ_ENTRY(fail_point_entry) fe_entries; /**< next entry in fail point */
-};
+__BEGIN_DECLS
 
 /* Private failpoint eval function -- use fail_point_eval() instead. */
 enum fail_point_return_code fail_point_eval_nontrivial(struct fail_point *,
@@ -152,6 +126,8 @@ fail_point_eval(struct fail_point *fp, i
 	return (fail_point_eval_nontrivial(fp, ret));
 }
 
+__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
@@ -233,7 +209,7 @@ fail_point_eval(struct fail_point *fp, i
 			NULL, NULL,					\
 		};							\
 		SYSCTL_OID(parent, OID_AUTO, name,			\
-			CTLTYPE_STRING | CTLFLAG_RW,			\
+			CTLTYPE_STRING | CTLFLAG_RW | CTLFLAG_MPSAFE,	\
 			&_FAIL_POINT_NAME(name), 0, fail_point_sysctl,	\
 			"A", "");					\
 									\
@@ -254,7 +230,7 @@ int fail_point_sysctl(SYSCTL_HANDLER_ARG
 
 /* The fail point sysctl tree. */
 SYSCTL_DECL(_debug_fail_point);
+#define	DEBUG_FP	_debug_fail_point
 #endif
-#define DEBUG_FP _debug_fail_point
 
 #endif /* _SYS_FAIL_H_ */



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