Module Name:    src
Committed By:   apb
Date:           Fri Oct 25 08:51:55 UTC 2013

Modified Files:
        src/sys/sys: cdefs.h

Log Message:
Add __diagused and __debugused.  These are for marking variables that
are used only in diagnotic or debug code, but unused when NDEBUG is
defined, or DIAGNOSTIC is not defined, or DEBUG is not defined.


To generate a diff of this commit:
cvs rdiff -u -r1.114 -r1.115 src/sys/sys/cdefs.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/sys/cdefs.h
diff -u src/sys/sys/cdefs.h:1.114 src/sys/sys/cdefs.h:1.115
--- src/sys/sys/cdefs.h:1.114	Fri Oct 25 08:47:30 2013
+++ src/sys/sys/cdefs.h	Fri Oct 25 08:51:55 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: cdefs.h,v 1.114 2013/10/25 08:47:30 apb Exp $	*/
+/*	$NetBSD: cdefs.h,v 1.115 2013/10/25 08:51:55 apb Exp $	*/
 
 /*
  * Copyright (c) 1991, 1993
@@ -271,6 +271,44 @@
 #define	__used		__unused
 #endif
 
+/*
+ * __diagused: Note that variable is used in diagnostic code, but may be
+ * unused in non-diagnostic code.
+ *
+ * In the kernel, variables that are used when DIAGNOSTIC is defined,
+ * but unused when DIAGNOSTIC is not defined, may be declared with
+ * __diagused.  In userland, variables that are used when NDEBUG is not
+ * defined, but unused when NDEBUG is defined, may be declared with
+ * __diagused.
+ *
+ * Variables used only in assert(3) or KASSERT(9) macros are likely
+ * candidates for being declared with __diagused.
+ */
+#if (defined(_KERNEL) && defined(DIAGNOSTIC)) \
+ || (!defined(_KERNEL) && !defined(NDEBUG))
+#define	__diagused	/* empty */
+#else
+#define	__diagused	__unused
+#endif
+
+/*
+ * __debugused: Note that variable is used in debug code, but may be
+ * unused in non-debug code.
+ *
+ * In either the kernel or userland, variables that are used when DEBUG
+ * is defined, but unused when DEBUG is not defined, may be declared with
+ * __debugused.
+ *
+ * In the kernel, variables used only in KDASSERT(9) macros are likely
+ * candidates for being declared with __debugused.  There is no
+ * established convention for the use of DEBUG in userland code.
+ */
+#if defined(DEBUG)
+#define	__debugused	/* empty */
+#else
+#define	__debugused	__unused
+#endif
+
 #if __GNUC_PREREQ__(3, 1)
 #define	__noprofile	__attribute__((__no_instrument_function__))
 #else

Reply via email to