Module Name:    src
Committed By:   riastradh
Date:           Tue Apr 11 06:47:25 UTC 2017

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

Log Message:
New diagnostic functions vn_locked, vn_anylocked.

For use only within KASSERT.

vn_locked asserts exclusive lock, as most operations require.
vn_anylocked asserts exclusive or shared lock.

No effect unless VV_LOCKSWORK.  This will reduce the visual cost of
sprinkling lock ownership assertions throughout kern/vfs_*.


To generate a diff of this commit:
cvs rdiff -u -r1.275 -r1.276 src/sys/sys/vnode.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/vnode.h
diff -u src/sys/sys/vnode.h:1.275 src/sys/sys/vnode.h:1.276
--- src/sys/sys/vnode.h:1.275	Thu Mar 30 09:16:53 2017
+++ src/sys/sys/vnode.h	Tue Apr 11 06:47:25 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vnode.h,v 1.275 2017/03/30 09:16:53 hannken Exp $	*/
+/*	$NetBSD: vnode.h,v 1.276 2017/04/11 06:47:25 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -554,6 +554,23 @@ int	vn_extattr_rm(struct vnode *, int, i
 void	vn_ra_allocctx(struct vnode *);
 int	vn_fifo_bypass(void *);
 
+#ifdef DIAGNOSTIC
+static inline bool
+vn_locked(struct vnode *_vp)
+{
+
+	return (_vp->v_vflag & VV_LOCKSWORK) == 0 ||
+	    VOP_ISLOCKED(_vp) == LK_EXCLUSIVE;
+}
+
+static inline bool
+vn_anylocked(struct vnode *_vp)
+{
+
+	return (_vp->v_vflag & VV_LOCKSWORK) == 0 || VOP_ISLOCKED(_vp);
+}
+#endif
+
 /* initialise global vnode management */
 void	vntblinit(void);
 

Reply via email to