From: Warner Losh <i...@freebsd.org>

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
---
 newlib/libc/sys/rtems/include/sys/ioccom.h | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/newlib/libc/sys/rtems/include/sys/ioccom.h 
b/newlib/libc/sys/rtems/include/sys/ioccom.h
index a0117245b..adaa30797 100644
--- a/newlib/libc/sys/rtems/include/sys/ioccom.h
+++ b/newlib/libc/sys/rtems/include/sys/ioccom.h
@@ -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$
  */
 
@@ -43,6 +43,11 @@ typedef unsigned long ioctl_command_t;
  * 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 */
@@ -51,11 +56,11 @@ typedef unsigned long ioctl_command_t;
 #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)                                       
\
     ((ioctl_command_t)((ioctl_command_t)(inout) | (((ioctl_command_t)(len) & \
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to