#ifndef _ASM_GENERIC_IOCTL_H #define _ASM_GENERIC_IOCTL_H /* ioctl command encoding: 32 bits total, command in lower 16 bits, * size of the parameter structure in the lower 14 bits of the * upper 16 bits. * Encoding the size of the parameter structure in the ioctl request * is useful for catching programs compiled with old versions * and to avoid overwriting user space outside the user buffer area. * The highest 2 bits are reserved for indicating the ``access mode''. * NOTE: This limits the max parameter size to 16kB -1 ! */ /* * The following is for compatibility across the various Linux * platforms. The generic ioctl numbering scheme doesn't really enforce * a type field. De facto, however, the top 8 bits of the lower 16 * bits are indeed used as a type field, so we might just as well make * this explicit here. Please be sure to use the decoding macros * below from now on. */ #define _IOC_NRBITS 8 #define _IOC_TYPEBITS 8 /* * Let any architecture override either of the following before * including this file. */ #ifndef _IOC_SIZEBITS # define _IOC_SIZEBITS 14 #endif #ifndef _IOC_DIRBITS # define _IOC_DIRBITS 2 #endif #define _IOC_NRMASK ((1 << _IOC_NRBITS)-1) #define _IOC_TYPEMASK ((1 << _IOC_TYPEBITS)-1) #define _IOC_SIZEMASK ((1 << _IOC_SIZEBITS)-1) #define _IOC_DIRMASK ((1 << _IOC_DIRBITS)-1) #define _IOC_NRSHIFT 0 #define _IOC_TYPESHIFT (_IOC_NRSHIFT+_IOC_NRBITS) #define _IOC_SIZESHIFT (_IOC_TYPESHIFT+_IOC_TYPEBITS) #define _IOC_DIRSHIFT (_IOC_SIZESHIFT+_IOC_SIZEBITS) /* * Direction bits, which any architecture can choose to override * before including this file. * * NOTE: _IOC_WRITE means userland is writing and kernel is * reading. _IOC_READ means userland is reading and kernel is writing. */ #ifndef _IOC_NONE # define _IOC_NONE 0U #endif #ifndef _IOC_WRITE # define _IOC_WRITE 1U #endif #ifndef _IOC_READ # define _IOC_READ 2U #endif #define _IOC(dir,type,nr,size) \ (((dir) << _IOC_DIRSHIFT) | \ ((type) << _IOC_TYPESHIFT) | \ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) #define _IOC_TYPECHECK(t) (sizeof(t)) /* * Used to create numbers. * * NOTE: _IOW means userland is writing and kernel is reading. _IOR * means userland is reading and kernel is writing. */ #define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) #define _IOR(type,nr,size) _IOC(_IOC_READ,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOW(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),(_IOC_TYPECHECK(size))) #define _IOR_BAD(type,nr,size) _IOC(_IOC_READ,(type),(nr),sizeof(size)) #define _IOW_BAD(type,nr,size) _IOC(_IOC_WRITE,(type),(nr),sizeof(size)) #define _IOWR_BAD(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size)) /* used to decode ioctl numbers.. */ #define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK) #define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK) #define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK) #define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK) /* ...and for the drivers/sound files... */ #define IOC_IN (_IOC_WRITE << _IOC_DIRSHIFT) #define IOC_OUT (_IOC_READ << _IOC_DIRSHIFT) #define IOC_INOUT ((_IOC_WRITE|_IOC_READ) << _IOC_DIRSHIFT) #define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT) #define IOCSIZE_SHIFT (_IOC_SIZESHIFT) #endif /* _ASM_GENERIC_IOCTL_H */
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
auxvec.h | File | 218 B | 0644 |
|
bitsperlong.h | File | 501 B | 0644 |
|
bpf_perf_event.h | File | 238 B | 0644 |
|
errno-base.h | File | 1.51 KB | 0644 |
|
errno.h | File | 5.12 KB | 0644 |
|
fcntl.h | File | 5.23 KB | 0644 |
|
int-l64.h | File | 655 B | 0644 |
|
int-ll64.h | File | 801 B | 0644 |
|
ioctl.h | File | 3.33 KB | 0644 |
|
ioctls.h | File | 3.65 KB | 0644 |
|
ipcbuf.h | File | 936 B | 0644 |
|
kvm_para.h | File | 96 B | 0644 |
|
mman-common.h | File | 3.19 KB | 0644 |
|
mman.h | File | 1017 B | 0644 |
|
msgbuf.h | File | 1.46 KB | 0644 |
|
param.h | File | 290 B | 0644 |
|
poll.h | File | 795 B | 0644 |
|
posix_types.h | File | 2.18 KB | 0644 |
|
resource.h | File | 1.9 KB | 0644 |
|
sembuf.h | File | 1.17 KB | 0644 |
|
setup.h | File | 127 B | 0644 |
|
shmbuf.h | File | 1.66 KB | 0644 |
|
shmparam.h | File | 168 B | 0644 |
|
siginfo.h | File | 9.09 KB | 0644 |
|
signal-defs.h | File | 737 B | 0644 |
|
signal.h | File | 2.53 KB | 0644 |
|
socket.h | File | 1.82 KB | 0644 |
|
sockios.h | File | 376 B | 0644 |
|
stat.h | File | 2.51 KB | 0644 |
|
statfs.h | File | 1.72 KB | 0644 |
|
swab.h | File | 439 B | 0644 |
|
termbits.h | File | 4.54 KB | 0644 |
|
termios.h | File | 1.28 KB | 0644 |
|
types.h | File | 220 B | 0644 |
|
ucontext.h | File | 294 B | 0644 |
|
unistd.h | File | 28.77 KB | 0644 |
|