Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Oct 2020 22:00:35 +0000 (UTC)
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r367189 - head/sys/sys
Message-ID:  <202010302200.09UM0ZiA050978@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: imp
Date: Fri Oct 30 22:00:35 2020
New Revision: 367189
URL: https://svnweb.freebsd.org/changeset/base/367189

Log:
  Integrate 4.4BSD-Lite2 changes to IOC_* definitions
  
  Bring in the long-overdue 4.4BSD-Lite2 rev 8.3 by cgd of
  sys/ioccom.h. This uses UL suffix for the IOC_* constants so they
  don't sign extend. Also bring in the handy diagram from NetBSD's
  version of this file. This alters the 4.4BSD-Lite2 code slightly
  in a way that's semantically the same but more compact.
  
  This should stop the warnings from Chrome for bogus sign extension.
  
  Reviewed by: kib@, jhb@
  Differential Revision: https://reviews.freebsd.org/D26423

Modified:
  head/sys/sys/ioccom.h

Modified: head/sys/sys/ioccom.h
==============================================================================
--- head/sys/sys/ioccom.h	Fri Oct 30 21:13:05 2020	(r367188)
+++ head/sys/sys/ioccom.h	Fri Oct 30 22:00:35 2020	(r367189)
@@ -28,7 +28,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	@(#)ioccom.h	8.2 (Berkeley) 3/28/94
+ *	@(#)ioccom.h	8.3 (Berkeley) 1/9/95
  * $FreeBSD$
  */
 
@@ -39,6 +39,11 @@
  * Ioctl's have the command encoded in the lower word, and the size of
  * any in or out parameters in the upper word.  The high 3 bits of the
  * upper word are used to encode the in/out status of the parameter.
+ *
+ *	 31 29 28                     16 15            8 7             0
+ *	+---------------------------------------------------------------+
+ *	| I/O | Parameter Length        | Command Group | Command       |
+ *	+---------------------------------------------------------------+
  */
 #define	IOCPARM_SHIFT	13		/* number of bits for ioctl size */
 #define	IOCPARM_MASK	((1 << IOCPARM_SHIFT) - 1) /* parameter length mask */
@@ -47,11 +52,12 @@
 #define	IOCGROUP(x)	(((x) >> 8) & 0xff)
 
 #define	IOCPARM_MAX	(1 << IOCPARM_SHIFT) /* max size of ioctl */
-#define	IOC_VOID	0x20000000	/* no parameters */
-#define	IOC_OUT		0x40000000	/* copy out parameters */
-#define	IOC_IN		0x80000000	/* copy in parameters */
-#define	IOC_INOUT	(IOC_IN|IOC_OUT)
-#define	IOC_DIRMASK	(IOC_VOID|IOC_OUT|IOC_IN)
+
+#define	IOC_VOID	0x20000000UL	/* no parameters */
+#define	IOC_OUT		0x40000000UL	/* copy out parameters */
+#define	IOC_IN		0x80000000UL	/* copy in parameters */
+#define	IOC_INOUT	(IOC_IN|IOC_OUT)/* copy parameters in and out */
+#define	IOC_DIRMASK	(IOC_VOID|IOC_OUT|IOC_IN)/* mask for IN/OUT/VOID */
 
 #define	_IOC(inout,group,num,len)	((unsigned long) \
 	((inout) | (((len) & IOCPARM_MASK) << 16) | ((group) << 8) | (num)))



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