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-alpha/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 #ifndef _ALPHA_IOCTL_H
    2 #define _ALPHA_IOCTL_H
    3 
    4 /*
    5  * The original linux ioctl numbering scheme was just a general
    6  * "anything goes" setup, where more or less random numbers were
    7  * assigned.  Sorry, I was clueless when I started out on this.
    8  *
    9  * On the alpha, we'll try to clean it up a bit, using a more sane
   10  * ioctl numbering, and also trying to be compatible with OSF/1 in
   11  * the process. I'd like to clean it up for the i386 as well, but
   12  * it's so painful recognizing both the new and the old numbers..
   13  */
   14 
   15 #define _IOC_NRBITS     8
   16 #define _IOC_TYPEBITS   8
   17 #define _IOC_SIZEBITS   13
   18 #define _IOC_DIRBITS    3
   19 
   20 #define _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)
   21 #define _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
   22 #define _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
   23 #define _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
   24 
   25 #define _IOC_NRSHIFT    0
   26 #define _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
   27 #define _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
   28 #define _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
   29 
   30 /*
   31  * Direction bits _IOC_NONE could be 0, but OSF/1 gives it a bit.
   32  * And this turns out useful to catch old ioctl numbers in header
   33  * files for us.
   34  */
   35 #define _IOC_NONE       1U
   36 #define _IOC_READ       2U
   37 #define _IOC_WRITE      4U
   38 
   39 #define _IOC(dir,type,nr,size)                  \
   40         ((unsigned int)                         \
   41          (((dir)  << _IOC_DIRSHIFT) |           \
   42           ((type) << _IOC_TYPESHIFT) |          \
   43           ((nr)   << _IOC_NRSHIFT) |            \
   44           ((size) << _IOC_SIZESHIFT)))
   45 
   46 /* used to create numbers */
   47 #define _IO(type,nr)            _IOC(_IOC_NONE,(type),(nr),0)
   48 #define _IOR(type,nr,size)      _IOC(_IOC_READ,(type),(nr),sizeof(size))
   49 #define _IOW(type,nr,size)      _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
   50 #define _IOWR(type,nr,size)     _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
   51 
   52 /* used to decode them.. */
   53 #define _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
   54 #define _IOC_TYPE(nr)           (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
   55 #define _IOC_NR(nr)             (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
   56 #define _IOC_SIZE(nr)           (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
   57 
   58 /* ...and for the drivers/sound files... */
   59 
   60 #define IOC_IN          (_IOC_WRITE << _IOC_DIRSHIFT)
   61 #define IOC_OUT         (_IOC_READ << _IOC_DIRSHIFT)
   62 #define IOC_INOUT       ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
   63 #define IOCSIZE_MASK    (_IOC_SIZEMASK << _IOC_SIZESHIFT)
   64 #define IOCSIZE_SHIFT   (_IOC_SIZESHIFT)
   65 
   66 #endif /* _ALPHA_IOCTL_H */

Cache object: 8321e9385e0cf3352f065f34ec61ecbd


[ 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.