Module Name:    src
Committed By:   pooka
Date:           Tue Sep 29 11:51:02 UTC 2009

Modified Files:
        src/sys/kern: vnode_if.sh

Log Message:
Add a switch on whether to create VNODE_LOCKDEBUG checks or not.
Since VNODE_LOCKDEBUG has never been generally useful, default to
off.  However, the checks can still be generated by flipping the
switch for the isolated cases where this form of dynamic analysis
is useful and the person using it knows what she is doing.


To generate a diff of this commit:
cvs rdiff -u -r1.51 -r1.52 src/sys/kern/vnode_if.sh

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

Modified files:

Index: src/sys/kern/vnode_if.sh
diff -u src/sys/kern/vnode_if.sh:1.51 src/sys/kern/vnode_if.sh:1.52
--- src/sys/kern/vnode_if.sh:1.51	Wed Nov 19 14:10:49 2008
+++ src/sys/kern/vnode_if.sh	Tue Sep 29 11:51:02 2009
@@ -29,7 +29,7 @@
  * SUCH DAMAGE.
  */
 "
-SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.51 2008/11/19 14:10:49 pooka Exp $'
+SCRIPT_ID='$NetBSD: vnode_if.sh,v 1.52 2009/09/29 11:51:02 pooka Exp $'
 
 # Script to produce VFS front-end sugar.
 #
@@ -52,6 +52,9 @@
 out_h=../sys/vnode_if.h
 out_rumph=../rump/include/rump/rumpvnode_if.h
 
+# generate VNODE_LOCKDEBUG checks (not fully functional)
+lockdebug=0
+
 # Awk program (must support nawk extensions)
 # Use "awk" at Berkeley, "nawk" or "gawk" elsewhere.
 awk=${AWK:-awk}
@@ -196,10 +199,12 @@
 echo ''
 echo "#ifndef _${SYS}VNODE_IF_H_"
 echo "#define _${SYS}VNODE_IF_H_"
-echo ''
-echo '#ifdef _KERNEL_OPT'
-echo '#include "opt_vnode_lockdebug.h"'
-echo '#endif /* _KERNEL_OPT */'
+if [ ${lockdebug} -ne 0 ] ; then
+	echo ''
+	echo '#ifdef _KERNEL_OPT'
+	echo '#include "opt_vnode_lockdebug.h"'
+	echo '#endif /* _KERNEL_OPT */'
+fi
 echo "
 extern const struct vnodeop_desc ${rump}vop_default_desc;
 "
@@ -279,11 +284,10 @@
 echo -n "$copyright"
 echo "
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, \"\$NetBSD\$\");
-"
+__KERNEL_RCSID(0, \"\$NetBSD\$\");"
+
+[ ${lockdebug} -ne 0 ] && echo && echo '#include "opt_vnode_lockdebug.h"'
 
-echo '
-#include "opt_vnode_lockdebug.h"'
 echo '
 #include <sys/param.h>
 #include <sys/mount.h>
@@ -306,7 +310,7 @@
 '
 
 # Body stuff
-sed -e "$sed_prep" $src | $awk -v rump=${rump} '
+sed -e "$sed_prep" $src | $awk -v rump=${rump} -v lockdebug=${lockdebug} '
 function do_offset(typematch) {
 	for (i=0; i<argc; i++) {
 		if (argtype[i] == typematch) {
@@ -376,16 +380,18 @@
 	}
 	printf(")\n");
 	printf("{\n\tint error;\n\tbool mpsafe;\n\tstruct %s_args a;\n", name);
-	printf("#ifdef VNODE_LOCKDEBUG\n");
-	for (i=0; i<argc; i++) {
-		if (lockstate[i] != -1)
-			printf("\tint islocked_%s;\n", argname[i]);
+	if (lockdebug) {
+		printf("#ifdef VNODE_LOCKDEBUG\n");
+		for (i=0; i<argc; i++) {
+			if (lockstate[i] != -1)
+				printf("\tint islocked_%s;\n", argname[i]);
+		}
+		printf("#endif\n");
 	}
-	printf("#endif\n");
 	printf("\ta.a_desc = VDESC(%s);\n", name);
 	for (i=0; i<argc; i++) {
 		printf("\ta.a_%s = %s;\n", argname[i], argname[i]);
-		if (lockstate[i] != -1) {
+		if (lockdebug && lockstate[i] != -1) {
 			printf("#ifdef VNODE_LOCKDEBUG\n");
 			printf("\tislocked_%s = (%s->v_vflag & VV_LOCKSWORK) ? (VOP_ISLOCKED(%s) == LK_EXCLUSIVE) : %d;\n",
 			    argname[i], argname[i], argname[i], lockstate[i]);

Reply via email to