svn commit: r258858 - head/sys/sys
Attilio Rao
attilio at FreeBSD.org
Mon Dec 2 22:34:48 UTC 2013
Author: attilio
Date: Mon Dec 2 22:34:47 2013
New Revision: 258858
URL: http://svnweb.freebsd.org/changeset/base/258858
Log:
Right now LOCK_DEBUG is enabled if KTR is on.
This is to support LOCK_LOG_* functionality effectively in debugging
environments but it is overkill because really LOCK_DEBUG should be on
only if (KTR_COMPILE & KTR_LOCK) is true.
Fix this by applying the correct logic.
In this process, move the KTR classes to its own header to reduce
namespace pollution.
Sponsored by: EMC / Isilon storage division
Reviewed by: jhb
Added:
head/sys/sys/ktr_class.h (contents, props changed)
Modified:
head/sys/sys/ktr.h
head/sys/sys/lock.h
Modified: head/sys/sys/ktr.h
==============================================================================
--- head/sys/sys/ktr.h Mon Dec 2 22:00:15 2013 (r258857)
+++ head/sys/sys/ktr.h Mon Dec 2 22:34:47 2013 (r258858)
@@ -36,56 +36,7 @@
#ifndef _SYS_KTR_H_
#define _SYS_KTR_H_
-/*
- * Trace classes
- *
- * Two of the trace classes (KTR_DEV and KTR_SUBSYS) are special in that
- * they are really placeholders so that indvidual drivers and subsystems
- * can map their internal tracing to the general class when they wish to
- * have tracing enabled and map it to 0 when they don't.
- */
-#define KTR_GEN 0x00000001 /* General (TR) */
-#define KTR_NET 0x00000002 /* Network */
-#define KTR_DEV 0x00000004 /* Device driver */
-#define KTR_LOCK 0x00000008 /* MP locking */
-#define KTR_SMP 0x00000010 /* MP general */
-#define KTR_SUBSYS 0x00000020 /* Subsystem. */
-#define KTR_PMAP 0x00000040 /* Pmap tracing */
-#define KTR_MALLOC 0x00000080 /* Malloc tracing */
-#define KTR_TRAP 0x00000100 /* Trap processing */
-#define KTR_INTR 0x00000200 /* Interrupt tracing */
-#define KTR_SIG 0x00000400 /* Signal processing */
-#define KTR_SPARE2 0x00000800 /* XXX Used by cxgb */
-#define KTR_PROC 0x00001000 /* Process scheduling */
-#define KTR_SYSC 0x00002000 /* System call */
-#define KTR_INIT 0x00004000 /* System initialization */
-#define KTR_SPARE3 0x00008000 /* XXX Used by cxgb */
-#define KTR_SPARE4 0x00010000 /* XXX Used by cxgb */
-#define KTR_EVH 0x00020000 /* Eventhandler */
-#define KTR_VFS 0x00040000 /* VFS events */
-#define KTR_VOP 0x00080000 /* Auto-generated vop events */
-#define KTR_VM 0x00100000 /* The virtual memory system */
-#define KTR_INET 0x00200000 /* IPv4 stack */
-#define KTR_RUNQ 0x00400000 /* Run queue */
-#define KTR_CONTENTION 0x00800000 /* Lock contention */
-#define KTR_UMA 0x01000000 /* UMA slab allocator */
-#define KTR_CALLOUT 0x02000000 /* Callouts and timeouts */
-#define KTR_GEOM 0x04000000 /* GEOM I/O events */
-#define KTR_BUSDMA 0x08000000 /* busdma(9) events */
-#define KTR_INET6 0x10000000 /* IPv6 stack */
-#define KTR_SCHED 0x20000000 /* Machine parsed sched info. */
-#define KTR_BUF 0x40000000 /* Buffer cache */
-#define KTR_ALL 0x7fffffff
-
-/* Trace classes to compile in */
-#ifdef KTR
-#ifndef KTR_COMPILE
-#define KTR_COMPILE (KTR_ALL)
-#endif
-#else /* !KTR */
-#undef KTR_COMPILE
-#define KTR_COMPILE 0
-#endif /* KTR */
+#include <sys/ktr_class.h>
/*
* Version number for ktr_entry struct. Increment this when you break binary
Added: head/sys/sys/ktr_class.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/sys/sys/ktr_class.h Mon Dec 2 22:34:47 2013 (r258858)
@@ -0,0 +1,86 @@
+/*-
+ * Copyright (c) 1996 Berkeley Software Design, Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Berkeley Software Design Inc's name may not be used to endorse or
+ * promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BERKELEY SOFTWARE DESIGN INC ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL BERKELEY SOFTWARE DESIGN INC BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * from BSDI $Id: ktr.h,v 1.10.2.7 2000/03/16 21:44:42 cp Exp $
+ * $FreeBSD$
+ */
+
+#ifndef _SYS_KTR_CLASS_H_
+#define _SYS_KTR_CLASS_H_
+
+/*
+ * KTR trace classes
+ *
+ * Two of the trace classes (KTR_DEV and KTR_SUBSYS) are special in that
+ * they are really placeholders so that indvidual drivers and subsystems
+ * can map their internal tracing to the general class when they wish to
+ * have tracing enabled and map it to 0 when they don't.
+ */
+#define KTR_GEN 0x00000001 /* General (TR) */
+#define KTR_NET 0x00000002 /* Network */
+#define KTR_DEV 0x00000004 /* Device driver */
+#define KTR_LOCK 0x00000008 /* MP locking */
+#define KTR_SMP 0x00000010 /* MP general */
+#define KTR_SUBSYS 0x00000020 /* Subsystem. */
+#define KTR_PMAP 0x00000040 /* Pmap tracing */
+#define KTR_MALLOC 0x00000080 /* Malloc tracing */
+#define KTR_TRAP 0x00000100 /* Trap processing */
+#define KTR_INTR 0x00000200 /* Interrupt tracing */
+#define KTR_SIG 0x00000400 /* Signal processing */
+#define KTR_SPARE2 0x00000800 /* XXX Used by cxgb */
+#define KTR_PROC 0x00001000 /* Process scheduling */
+#define KTR_SYSC 0x00002000 /* System call */
+#define KTR_INIT 0x00004000 /* System initialization */
+#define KTR_SPARE3 0x00008000 /* XXX Used by cxgb */
+#define KTR_SPARE4 0x00010000 /* XXX Used by cxgb */
+#define KTR_EVH 0x00020000 /* Eventhandler */
+#define KTR_VFS 0x00040000 /* VFS events */
+#define KTR_VOP 0x00080000 /* Auto-generated vop events */
+#define KTR_VM 0x00100000 /* The virtual memory system */
+#define KTR_INET 0x00200000 /* IPv4 stack */
+#define KTR_RUNQ 0x00400000 /* Run queue */
+#define KTR_CONTENTION 0x00800000 /* Lock contention */
+#define KTR_UMA 0x01000000 /* UMA slab allocator */
+#define KTR_CALLOUT 0x02000000 /* Callouts and timeouts */
+#define KTR_GEOM 0x04000000 /* GEOM I/O events */
+#define KTR_BUSDMA 0x08000000 /* busdma(9) events */
+#define KTR_INET6 0x10000000 /* IPv6 stack */
+#define KTR_SCHED 0x20000000 /* Machine parsed sched info. */
+#define KTR_BUF 0x40000000 /* Buffer cache */
+#define KTR_ALL 0x7fffffff
+
+/* KTR trace classes to compile in */
+#ifdef KTR
+#ifndef KTR_COMPILE
+#define KTR_COMPILE (KTR_ALL)
+#endif
+#else /* !KTR */
+#undef KTR_COMPILE
+#define KTR_COMPILE 0
+#endif /* KTR */
+
+#endif /* !_SYS_KTR_CLASS_H_ */
Modified: head/sys/sys/lock.h
==============================================================================
--- head/sys/sys/lock.h Mon Dec 2 22:00:15 2013 (r258857)
+++ head/sys/sys/lock.h Mon Dec 2 22:34:47 2013 (r258858)
@@ -34,6 +34,7 @@
#include <sys/queue.h>
#include <sys/_lock.h>
+#include <sys/ktr_class.h>
struct lock_list_entry;
struct thread;
@@ -123,7 +124,7 @@ struct lock_class {
* calling conventions for this debugging code in modules so that modules can
* work with both debug and non-debug kernels.
*/
-#if defined(KLD_MODULE) || defined(WITNESS) || defined(INVARIANTS) || defined(INVARIANT_SUPPORT) || defined(KTR) || defined(LOCK_PROFILING)
+#if defined(KLD_MODULE) || defined(WITNESS) || defined(INVARIANTS) || defined(INVARIANT_SUPPORT) || defined(LOCK_PROFILING) || (defined(KTR) && (KTR_COMPILE & KTR_LOCK))
#define LOCK_DEBUG 1
#else
#define LOCK_DEBUG 0
More information about the svn-src-head
mailing list