Dr Andrew Scott G7VAV

My photo
 
June 2025
Mo Tu We Th Fr Sa Su
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 1 2 3 4 5 6


fcntl.h
001: #ifndef _ASM_GENERIC_FCNTL_H
002: #define _ASM_GENERIC_FCNTL_H
003: 
004: #include <linux/types.h>
005: 
006: /*
007:  * FMODE_EXEC is 0x20
008:  * FMODE_NONOTIFY is 0x1000000
009:  * These cannot be used by userspace O_* until internal and external open
010:  * flags are split.
011:  * -Eric Paris
012:  */
013: 
014: /*
015:  * When introducing new O_* bits, please check its uniqueness in fcntl_init().
016:  */
017: 
018: #define O_ACCMODE       00000003
019: #define O_RDONLY        00000000
020: #define O_WRONLY        00000001
021: #define O_RDWR          00000002
022: #ifndef O_CREAT
023: #define O_CREAT         00000100        /* not fcntl */
024: #endif
025: #ifndef O_EXCL
026: #define O_EXCL          00000200        /* not fcntl */
027: #endif
028: #ifndef O_NOCTTY
029: #define O_NOCTTY        00000400        /* not fcntl */
030: #endif
031: #ifndef O_TRUNC
032: #define O_TRUNC         00001000        /* not fcntl */
033: #endif
034: #ifndef O_APPEND
035: #define O_APPEND        00002000
036: #endif
037: #ifndef O_NONBLOCK
038: #define O_NONBLOCK      00004000
039: #endif
040: #ifndef O_DSYNC
041: #define O_DSYNC         00010000        /* used to be O_SYNC, see below */
042: #endif
043: #ifndef FASYNC
044: #define FASYNC          00020000        /* fcntl, for BSD compatibility */
045: #endif
046: #ifndef O_DIRECT
047: #define O_DIRECT        00040000        /* direct disk access hint */
048: #endif
049: #ifndef O_LARGEFILE
050: #define O_LARGEFILE     00100000
051: #endif
052: #ifndef O_DIRECTORY
053: #define O_DIRECTORY     00200000        /* must be a directory */
054: #endif
055: #ifndef O_NOFOLLOW
056: #define O_NOFOLLOW      00400000        /* don't follow links */
057: #endif
058: #ifndef O_NOATIME
059: #define O_NOATIME       01000000
060: #endif
061: #ifndef O_CLOEXEC
062: #define O_CLOEXEC       02000000        /* set close_on_exec */
063: #endif
064: 
065: /*
066:  * Before Linux 2.6.33 only O_DSYNC semantics were implemented, but using
067:  * the O_SYNC flag.  We continue to use the existing numerical value
068:  * for O_DSYNC semantics now, but using the correct symbolic name for it.
069:  * This new value is used to request true Posix O_SYNC semantics.  It is
070:  * defined in this strange way to make sure applications compiled against
071:  * new headers get at least O_DSYNC semantics on older kernels.
072:  *
073:  * This has the nice side-effect that we can simply test for O_DSYNC
074:  * wherever we do not care if O_DSYNC or O_SYNC is used.
075:  *
076:  * Note: __O_SYNC must never be used directly.
077:  */
078: #ifndef O_SYNC
079: #define __O_SYNC        04000000
080: #define O_SYNC          (__O_SYNC|O_DSYNC)
081: #endif
082: 
083: #ifndef O_PATH
084: #define O_PATH          010000000
085: #endif
086: 
087: #ifndef O_NDELAY
088: #define O_NDELAY        O_NONBLOCK
089: #endif
090: 
091: #define F_DUPFD         0       /* dup */
092: #define F_GETFD         1       /* get close_on_exec */
093: #define F_SETFD         2       /* set/clear close_on_exec */
094: #define F_GETFL         3       /* get file->f_flags */
095: #define F_SETFL         4       /* set file->f_flags */
096: #ifndef F_GETLK
097: #define F_GETLK         5
098: #define F_SETLK         6
099: #define F_SETLKW        7
100: #endif
101: #ifndef F_SETOWN
102: #define F_SETOWN        8       /* for sockets. */
103: #define F_GETOWN        9       /* for sockets. */
104: #endif
105: #ifndef F_SETSIG
106: #define F_SETSIG        10      /* for sockets. */
107: #define F_GETSIG        11      /* for sockets. */
108: #endif
109: 
110: #ifndef CONFIG_64BIT
111: #ifndef F_GETLK64
112: #define F_GETLK64       12      /*  using 'struct flock64' */
113: #define F_SETLK64       13
114: #define F_SETLKW64      14
115: #endif
116: #endif
117: 
118: #ifndef F_SETOWN_EX
119: #define F_SETOWN_EX     15
120: #define F_GETOWN_EX     16
121: #endif
122: 
123: #define F_OWNER_TID     0
124: #define F_OWNER_PID     1
125: #define F_OWNER_PGRP    2
126: 
127: struct f_owner_ex {
128:         int     type;
129:         __kernel_pid_t  pid;
130: };
131: 
132: /* for F_[GET|SET]FL */
133: #define FD_CLOEXEC      1       /* actually anything with low bit set goes */
134: 
135: /* for posix fcntl() and lockf() */
136: #ifndef F_RDLCK
137: #define F_RDLCK         0
138: #define F_WRLCK         1
139: #define F_UNLCK         2
140: #endif
141: 
142: /* for old implementation of bsd flock () */
143: #ifndef F_EXLCK
144: #define F_EXLCK         4       /* or 3 */
145: #define F_SHLCK         8       /* or 4 */
146: #endif
147: 
148: /* operations for bsd flock(), also used by the kernel implementation */
149: #define LOCK_SH         1       /* shared lock */
150: #define LOCK_EX         2       /* exclusive lock */
151: #define LOCK_NB         4       /* or'd with one of the above to prevent
152:                                    blocking */
153: #define LOCK_UN         8       /* remove lock */
154: 
155: #define LOCK_MAND       32      /* This is a mandatory flock ... */
156: #define LOCK_READ       64      /* which allows concurrent read operations */
157: #define LOCK_WRITE      128     /* which allows concurrent write operations */
158: #define LOCK_RW         192     /* which allows concurrent read & write ops */
159: 
160: #define F_LINUX_SPECIFIC_BASE   1024
161: 
162: #ifndef HAVE_ARCH_STRUCT_FLOCK
163: #ifndef __ARCH_FLOCK_PAD
164: #define __ARCH_FLOCK_PAD
165: #endif
166: 
167: struct flock {
168:         short   l_type;
169:         short   l_whence;
170:         __kernel_off_t  l_start;
171:         __kernel_off_t  l_len;
172:         __kernel_pid_t  l_pid;
173:         __ARCH_FLOCK_PAD
174: };
175: #endif
176: 
177: #ifndef CONFIG_64BIT
178: 
179: #ifndef HAVE_ARCH_STRUCT_FLOCK64
180: #ifndef __ARCH_FLOCK64_PAD
181: #define __ARCH_FLOCK64_PAD
182: #endif
183: 
184: struct flock64 {
185:         short  l_type;
186:         short  l_whence;
187:         __kernel_loff_t l_start;
188:         __kernel_loff_t l_len;
189:         __kernel_pid_t  l_pid;
190:         __ARCH_FLOCK64_PAD
191: };
192: #endif
193: #endif /* !CONFIG_64BIT */
194: 
195: #endif /* _ASM_GENERIC_FCNTL_H */
196: 


for client (none)
© Andrew Scott 2006 - 2025,
All Rights Reserved
http://www.andrew-scott.uk/
Andrew Scott
http://www.andrew-scott.co.uk/