The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/include/asm-mips64/ioctl.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * This file is subject to the terms and conditions of the GNU General Public
    3  * License.  See the file "COPYING" in the main directory of this archive
    4  * for more details.
    5  *
    6  * Copyright (C) 1995, 1996, 1999, 2001 by Ralf Baechle
    7  */
    8 #ifndef _ASM_IOCTL_H
    9 #define _ASM_IOCTL_H
   10 
   11 /*
   12  * The original linux ioctl numbering scheme was just a general
   13  * "anything goes" setup, where more or less random numbers were
   14  * assigned.  Sorry, I was clueless when I started out on this.
   15  *
   16  * On the alpha, we'll try to clean it up a bit, using a more sane
   17  * ioctl numbering, and also trying to be compatible with OSF/1 in
   18  * the process. I'd like to clean it up for the i386 as well, but
   19  * it's so painful recognizing both the new and the old numbers..
   20  *
   21  * The same applies for for the MIPS ABI; in fact even the macros
   22  * from Linux/Alpha fit almost perfectly.
   23  */
   24 
   25 #define _IOC_NRBITS     8
   26 #define _IOC_TYPEBITS   8
   27 #define _IOC_SIZEBITS   13
   28 #define _IOC_DIRBITS    3
   29 
   30 #define _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)
   31 #define _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
   32 #define _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
   33 #define _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
   34 
   35 #define _IOC_NRSHIFT    0
   36 #define _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
   37 #define _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
   38 #define _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
   39 
   40 /*
   41  * We to additionally limit parameters to a maximum 255 bytes.
   42  */
   43 #define _IOC_SLMASK     0xff
   44 
   45 /*
   46  * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit.
   47  * And this turns out useful to catch old ioctl numbers in header
   48  * files for us.
   49  */
   50 #define _IOC_NONE       1U
   51 #define _IOC_READ       2U
   52 #define _IOC_WRITE      4U
   53 
   54 /*
   55  * The following are included for compatibility
   56  */
   57 #define _IOC_VOID       0x20000000
   58 #define _IOC_OUT        0x40000000
   59 #define _IOC_IN         0x80000000
   60 #define _IOC_INOUT      (IOC_IN|IOC_OUT)
   61 
   62 #define _IOC(dir,type,nr,size) \
   63         (((dir)  << _IOC_DIRSHIFT) | \
   64          ((type) << _IOC_TYPESHIFT) | \
   65          ((nr)   << _IOC_NRSHIFT) | \
   66          ((size) << _IOC_SIZESHIFT))
   67 
   68 /* used to create numbers */
   69 #define _IO(type,nr)            _IOC(_IOC_NONE,(type),(nr),0)
   70 #define _IOR(type,nr,size)      _IOC(_IOC_READ,(type),(nr),sizeof(size))
   71 #define _IOW(type,nr,size)      _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
   72 #define _IOWR(type,nr,size)     _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
   73 
   74 /* used to decode them.. */
   75 #define _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
   76 #define _IOC_TYPE(nr)           (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
   77 #define _IOC_NR(nr)             (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
   78 #define _IOC_SIZE(nr)           (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
   79 
   80 /* ...and for the drivers/sound files... */
   81 
   82 #define IOC_IN          (_IOC_WRITE << _IOC_DIRSHIFT)
   83 #define IOC_OUT         (_IOC_READ << _IOC_DIRSHIFT)
   84 #define IOC_INOUT       ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
   85 #define IOCSIZE_MASK    (_IOC_SIZEMASK << _IOC_SIZESHIFT)
   86 #define IOCSIZE_SHIFT   (_IOC_SIZESHIFT)
   87 
   88 #endif /* _ASM_IOCTL_H */

Cache object: 1ae2aa5a6fd8e1d8a54d9793000853a4


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.