5 Copyright © 1995-2001, The AROS Development Team. All rights reserved.
8 Desc: ANSI-C header file fcntl.h
12 #include <sys/_types.h>
13 #include <sys/cdefs.h>
20 #ifndef __AROS_PID_T_DECLARED
21 #define __AROS_PID_T_DECLARED
22 typedef __pid_t pid_t
;
25 #ifndef __AROS_MODE_T_DECLARED
26 #define __AROS_MODE_T_DECLARED
27 typedef __mode_t mode_t
;
30 #ifndef __AROS_OFF_T_DECLARED
31 #define __AROS_OFF_T_DECLARED
32 typedef __off_t off_t
;
38 #define O_ACCMODE 0x0003
39 #define O_RDONLY 0x0001
40 #define O_WRONLY 0x0002
41 #define O_RDWR (O_RDONLY | O_WRONLY)
43 /* The GNU system specifies these */
44 #define O_READ O_RDONLY
45 #define O_WRITE O_WRONLY
47 /* This is not included in the result of modes & O_ACCMODE */
51 #define O_NOCTTY 0 /* We ignore this one */
52 #define O_CREAT 0x0040
54 #define O_SHLOCK 0 /* files are always opened in shared mode,
55 if not otherwise specified */
56 #define O_EXLOCK 0x0100
57 #define O_TRUNC 0x0200
60 #define O_APPEND 0x0400
61 #define O_NONBLOCK 0x0800
62 #define O_NDELAY O_NONBLOCK /* Alias */
64 #define O_FSYNC O_SYNC /* Alias */
65 #define O_ASYNC 0x2000
66 #define O_DSYNC 0x4000 /* Different from O_SYNC */
67 #define O_RSYNC 0x8000 /* Read sync */
69 /* Values for the second argument to `fcntl'. */
70 #define F_DUPFD 0 /* Duplicate file descriptor. */
71 #define F_GETFD 1 /* Get file descriptor flags. */
72 #define F_SETFD 2 /* Set file descriptor flags. */
73 #define F_GETFL 3 /* Get file status flags. */
74 #define F_SETFL 4 /* Set file status flags. */
75 #define F_GETLK 5 /* Get record locking info. */
76 #define F_SETLK 6 /* Set record locking info (non-blocking). */
77 #define F_SETLKW 7 /* Set record locking info (blocking). */
80 #define F_GETLK64 5 /* Get record locking info. */
81 #define F_SETLK64 6 /* Set record locking info (non-blocking). */
82 #define F_SETLKW64 7 /* Set record locking info (blocking). */
84 # define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
85 # define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
87 # define F_SETSIG 10 /* Set number of signal to be sent. */
88 # define F_GETSIG 11 /* Get number of signal to be sent. */
90 /* For F_[GET|SET]FD. */
91 #define FD_CLOEXEC 1 /* actually anything with low bit set goes */
93 /* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
94 #define F_RDLCK 0 /* Read lock. */
95 #define F_WRLCK 1 /* Write lock. */
96 #define F_UNLCK 2 /* Remove lock. */
98 /* for old implementation of bsd flock () */
99 #define F_EXLCK 4 /* or 3 */
100 #define F_SHLCK 8 /* or 4 */
103 /* operations for bsd flock(), also used by the kernel implementation */
104 # define LOCK_SH 1 /* shared lock */
105 # define LOCK_EX 2 /* exclusive lock */
106 # define LOCK_NB 4 /* or'd with one of the above to prevent
108 # define LOCK_UN 8 /* remove lock */
111 #if __POSIX_VERSION >= 200112
112 #define POSIX_FADV_NORMAL 1
113 #define POSIX_FADV_SEQUENTIAL 2
114 #define POSIX_FADV_RANDOM 3
115 #define POSIX_FADV_WILLNEED 4
116 #define POSIX_FADV_DONTNEED 5
117 #define POSIX_FADV_NOREUSE 6
122 short l_type
; /* type of lock F_RDLCK, F_WRLCK, F_UNLCK */
123 short l_whence
; /* flag for starting offset */
124 off_t l_start
; /* starting offset */
125 off_t l_len
; /* size, if 0 then until EOF */
126 pid_t l_pid
; /* pid of process holding the lock. */
132 int fcntl (int fd
, int cmd
, ...);
133 int open (const char * filename
, int flags
, ...);
134 int creat (const char * filename
, int mode
);
136 #if __POSIX_VERSION >= 200112
137 /* NOTIMPL int posix_fadvise(int fd, off_t offset, size_t len, int advice); */
138 /* NOTIMPL int posix_fallocate(int fd, off_t offset, size_t len); */
143 #endif /* _FCNTL_H_ */