~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/asm-sparc/ioctl.h

Version: ~ [ linux-6.6-rc1 ] ~ [ linux-6.5.2 ] ~ [ linux-6.4.15 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.52 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.131 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.194 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.256 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.294 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.325 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* $Id: ioctl.h,v 1.6 1999/12/01 23:58:36 davem Exp $ */
  2 #ifndef _SPARC_IOCTL_H
  3 #define _SPARC_IOCTL_H
  4 
  5 /*
  6  * Our DIR and SIZE overlap in order to simulteneously provide
  7  * a non-zero _IOC_NONE (for binary compatibility) and
  8  * 14 bits of size as on i386. Here's the layout:
  9  *
 10  *   0xE0000000   DIR
 11  *   0x80000000     DIR = WRITE
 12  *   0x40000000     DIR = READ
 13  *   0x20000000     DIR = NONE
 14  *   0x3FFF0000   SIZE (overlaps NONE bit)
 15  *   0x0000FF00   TYPE
 16  *   0x000000FF   NR (CMD)
 17  */
 18 
 19 #define _IOC_NRBITS      8
 20 #define _IOC_TYPEBITS    8
 21 #define _IOC_SIZEBITS   13      /* Actually 14, see below. */
 22 #define _IOC_DIRBITS     3
 23 
 24 #define _IOC_NRMASK      ((1 << _IOC_NRBITS)-1)
 25 #define _IOC_TYPEMASK    ((1 << _IOC_TYPEBITS)-1)
 26 #define _IOC_SIZEMASK    ((1 << _IOC_SIZEBITS)-1)
 27 #define _IOC_XSIZEMASK   ((1 << (_IOC_SIZEBITS+1))-1)
 28 #define _IOC_DIRMASK     ((1 << _IOC_DIRBITS)-1)
 29 
 30 #define _IOC_NRSHIFT     0
 31 #define _IOC_TYPESHIFT   (_IOC_NRSHIFT + _IOC_NRBITS)
 32 #define _IOC_SIZESHIFT   (_IOC_TYPESHIFT + _IOC_TYPEBITS)
 33 #define _IOC_DIRSHIFT    (_IOC_SIZESHIFT + _IOC_SIZEBITS)
 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         (((dir)  << _IOC_DIRSHIFT) | \
 41          ((type) << _IOC_TYPESHIFT) | \
 42          ((nr)   << _IOC_NRSHIFT) | \
 43          ((size) << _IOC_SIZESHIFT))
 44 
 45 #define _IO(type,nr)        _IOC(_IOC_NONE,(type),(nr),0)
 46 #define _IOR(type,nr,size)  _IOC(_IOC_READ,(type),(nr),sizeof(size))
 47 #define _IOW(type,nr,size)  _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
 48 #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
 49 
 50 /* Used to decode ioctl numbers in drivers despite the leading underscore... */
 51 #define _IOC_DIR(nr)    \
 52  ( (((((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) & (_IOC_WRITE|_IOC_READ)) != 0)?   \
 53                             (((nr) >> _IOC_DIRSHIFT) & (_IOC_WRITE|_IOC_READ)):  \
 54                             (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) )
 55 #define _IOC_TYPE(nr)       (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
 56 #define _IOC_NR(nr)         (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
 57 #define _IOC_SIZE(nr)   \
 58  ((((((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) & (_IOC_WRITE|_IOC_READ)) == 0)?    \
 59                          0: (((nr) >> _IOC_SIZESHIFT) & _IOC_XSIZEMASK))
 60 
 61 /* ...and for the PCMCIA and sound. */
 62 #define IOC_IN          (_IOC_WRITE << _IOC_DIRSHIFT)
 63 #define IOC_OUT         (_IOC_READ << _IOC_DIRSHIFT)
 64 #define IOC_INOUT       ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT)
 65 #define IOCSIZE_MASK    (_IOC_XSIZEMASK << _IOC_SIZESHIFT)
 66 #define IOCSIZE_SHIFT   (_IOC_SIZESHIFT)
 67 
 68 #endif /* !(_SPARC_IOCTL_H) */
 69 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp