source: trunk/minix/include/fcntl.h@ 20

Last change on this file since 20 was 9, checked in by Mattia Monga, 14 years ago

Minix 3.1.2a

File size: 3.0 KB
Line 
1/* The <fcntl.h> header is needed by the open() and fcntl() system calls,
2 * which have a variety of parameters and flags. They are described here.
3 * The formats of the calls to each of these are:
4 *
5 * open(path, oflag [,mode]) open a file
6 * fcntl(fd, cmd [,arg]) get or set file attributes
7 *
8 */
9
10#ifndef _FCNTL_H
11#define _FCNTL_H
12
13#ifndef _TYPES_H
14#include <sys/types.h>
15#endif
16
17/* These values are used for cmd in fcntl(). POSIX Table 6-1. */
18#define F_DUPFD 0 /* duplicate file descriptor */
19#define F_GETFD 1 /* get file descriptor flags */
20#define F_SETFD 2 /* set file descriptor flags */
21#define F_GETFL 3 /* get file status flags */
22#define F_SETFL 4 /* set file status flags */
23#define F_GETLK 5 /* get record locking information */
24#define F_SETLK 6 /* set record locking information */
25#define F_SETLKW 7 /* set record locking info; wait if blocked */
26#define F_FREESP 8 /* free a section of a regular file */
27
28/* File descriptor flags used for fcntl(). POSIX Table 6-2. */
29#define FD_CLOEXEC 1 /* close on exec flag for third arg of fcntl */
30
31/* L_type values for record locking with fcntl(). POSIX Table 6-3. */
32#define F_RDLCK 1 /* shared or read lock */
33#define F_WRLCK 2 /* exclusive or write lock */
34#define F_UNLCK 3 /* unlock */
35
36/* Oflag values for open(). POSIX Table 6-4. */
37#define O_CREAT 00100 /* creat file if it doesn't exist */
38#define O_EXCL 00200 /* exclusive use flag */
39#define O_NOCTTY 00400 /* do not assign a controlling terminal */
40#define O_TRUNC 01000 /* truncate flag */
41
42/* File status flags for open() and fcntl(). POSIX Table 6-5. */
43#define O_APPEND 02000 /* set append mode */
44#define O_NONBLOCK 04000 /* no delay */
45
46/* File access modes for open() and fcntl(). POSIX Table 6-6. */
47#define O_RDONLY 0 /* open(name, O_RDONLY) opens read only */
48#define O_WRONLY 1 /* open(name, O_WRONLY) opens write only */
49#define O_RDWR 2 /* open(name, O_RDWR) opens read/write */
50
51/* Mask for use with file access modes. POSIX Table 6-7. */
52#define O_ACCMODE 03 /* mask for file access modes */
53
54/* Struct used for locking. POSIX Table 6-8. */
55struct flock {
56 short l_type; /* type: F_RDLCK, F_WRLCK, or F_UNLCK */
57 short l_whence; /* flag for starting offset */
58 off_t l_start; /* relative offset in bytes */
59 off_t l_len; /* size; if 0, then until EOF */
60 pid_t l_pid; /* process id of the locks' owner */
61};
62
63/* Function Prototypes. */
64_PROTOTYPE( int creat, (const char *_path, _mnx_Mode_t _mode) );
65_PROTOTYPE( int fcntl, (int _filedes, int _cmd, ...) );
66_PROTOTYPE( int open, (const char *_path, int _oflag, ...) );
67
68/* For locking files. */
69#define LOCK_SH F_RDLCK /* Shared lock */
70#define LOCK_EX F_WRLCK /* Exclusive lock */
71#define LOCK_NB 0x0080 /* Do not block when locking */
72#define LOCK_UN F_UNLCK /* Unlock */
73
74_PROTOTYPE( int flock, (int fd, int mode) );
75
76#endif /* _FCNTL_H */
Note: See TracBrowser for help on using the repository browser.