Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Dec 2010 21:59:21 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r216626 - head/sys/sys
Message-ID:  <201012212159.oBLLxLKA076603@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;						\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201012212159.oBLLxLKA076603>