svn commit: r216626 - head/sys/sys

Pawel Jakub Dawidek pjd at FreeBSD.org
Tue Dec 21 21:59:21 UTC 2010


Author: pjd
Date: Tue Dec 21 21:59:21 2010
New Revision: 216626
URL: http://svn.freebsd.org/changeset/base/216626

Log:
  Close body of the VFS_UNLOCK_GIANT() macro into do { } while (0) loop,
  so it can be used in code like this:
  
  	if (cond)
  		VFS_UNLOCK_GIANT(vfslocked);
  	else
  		; /* Do something else. */
  
  Before the change, compiler couldn't decide on its own if else should be
  applied to the 'if (cond)' or to the if statement inside VFS_UNLOCK_GIANT()
  macro.

Modified:
  head/sys/sys/mount.h

Modified: head/sys/sys/mount.h
==============================================================================
--- head/sys/sys/mount.h	Tue Dec 21 21:32:17 2010	(r216625)
+++ head/sys/sys/mount.h	Tue Dec 21 21:59:21 2010	(r216626)
@@ -644,7 +644,11 @@ vfs_statfs_t	__vfs_statfs;
 		_locked = 0;						\
 	_locked;							\
 })
-#define	VFS_UNLOCK_GIANT(locked)	if ((locked)) mtx_unlock(&Giant);
+#define	VFS_UNLOCK_GIANT(locked) do					\
+{									\
+	if ((locked))							\
+		mtx_unlock(&Giant);					\
+} while (0)
 #define	VFS_ASSERT_GIANT(MP) do						\
 {									\
 	struct mount *_mp;						\


More information about the svn-src-all mailing list