Loading...
Searching...
No Matches
Go to the documentation of this file. 1#ifndef __LINUX_IOCTL_H__
2#define __LINUX_IOCTL_H__
32#define _IOC_TYPEBITS 8
33#define _IOC_SIZEBITS 14
37#define _IOC_TYPESHIFT (_IOC_NRSHIFT + _IOC_NRBITS)
38#define _IOC_SIZESHIFT (_IOC_TYPESHIFT + _IOC_TYPEBITS)
39#define _IOC_DIRSHIFT (_IOC_SIZESHIFT + _IOC_SIZEBITS)
45#define _IOC(dir, type, nr, size) \
46 (((dir) << _IOC_DIRSHIFT) | \
47 ((type) << _IOC_TYPESHIFT) | \
48 ((nr) << _IOC_NRSHIFT) | \
49 ((size) << _IOC_SIZESHIFT))
51#define _IO(type, nr) _IOC(_IOC_NONE, (type), (nr), 0)
52#define _IOR(type, nr, size) _IOC(_IOC_READ, (type), (nr), sizeof(size))
53#define _IOW(type, nr, size) _IOC(_IOC_WRITE, (type), (nr), sizeof(size))
54#define _IOWR(type, nr, size) _IOC(_IOC_READ | _IOC_WRITE, (type), (nr), sizeof(size))
56#define _IOC_DIR(nr) (((nr) >> _IOC_DIRSHIFT) & ((1 << _IOC_DIRBITS) - 1))
57#define _IOC_TYPE(nr) (((nr) >> _IOC_TYPESHIFT) & ((1 << _IOC_TYPEBITS) - 1))
58#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & ((1 << _IOC_NRBITS) - 1))
59#define _IOC_SIZE(nr) (((nr) >> _IOC_SIZESHIFT) & ((1 << _IOC_SIZEBITS) - 1))