/* This file is part of Fennix Kernel. Fennix Kernel is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Fennix Kernel is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Fennix Kernel. If not, see . */ #ifndef __FENNIX_KERNEL_FILESYSTEM_IOCTL_H__ #define __FENNIX_KERNEL_FILESYSTEM_IOCTL_H__ #include #include #include #define _IOC_NRBITS 8 #define _IOC_TYPEBITS 8 #define _IOC_SIZEBITS 14 #define _IOC_DIRBITS 2 #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) #define _IOC(dir, type, nr, size) \ (((dir) << _IOC_DIRSHIFT) | \ ((type) << _IOC_TYPESHIFT) | \ ((nr) << _IOC_NRSHIFT) | \ ((size) << _IOC_SIZESHIFT)) #define _IOC_NONE 0U #define _IOC_WRITE 1U #define _IOC_READ 2U #define _IOC_TYPECHECK(t) (sizeof(t)) #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)) #define TIOCGPTN _IOR('T', 0x30, unsigned int) #define TIOCSPTLCK _IOW('T', 0x31, int) #endif // !__FENNIX_KERNEL_FILESYSTEM_IOCTL_H__