source: svn/trunk/newcon3bcm2_21bu/toolchain/mipsel-linux-uclibc/include/bits/fcntl.h @ 2

Last change on this file since 2 was 2, checked in by phkim, 11 years ago

1.phkim

  1. revision copy newcon3sk r27
  • Property svn:executable set to *
File size: 6.8 KB
Line 
1/* O_*, F_*, FD_* bit values for Linux.
2   Copyright (C) 1995, 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
3   This file is part of the GNU C Library.
4
5   The GNU C Library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   The GNU C Library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with the GNU C Library; if not, write to the Free
17   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18   02111-1307 USA.  */
19
20#ifndef _FCNTL_H
21# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
22#endif
23
24#include <sys/types.h>
25
26
27/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
28   located on an ext2 file system */
29#define O_ACCMODE       0x0003
30#define O_RDONLY        0x0000
31#define O_WRONLY        0x0001
32#define O_RDWR          0x0002
33#define O_APPEND        0x0008
34#define O_SYNC          0x0010
35#define O_NONBLOCK      0x0080
36#define O_CREAT         0x0100  /* not fcntl */
37#define O_TRUNC         0x0200  /* not fcntl */
38#define O_EXCL          0x0400  /* not fcntl */
39#define O_NOCTTY        0x0800  /* not fcntl */
40#define O_FSYNC         O_SYNC
41#define O_ASYNC         0x1000
42
43#ifdef __USE_LARGEFILE64
44# define O_LARGEFILE    0x2000  /* Allow large file opens.  */
45#endif
46
47#ifdef __USE_GNU
48# define O_NOFOLLOW     0x20000 /* Do not follow links.  */
49# define O_DIRECT       0x8000  /* Direct disk access hint.  */
50# define O_DIRECTORY    0x10000 /* Must be a directory.  */
51# define O_STREAMING    0x4000000/* streaming access */
52#endif
53
54#define O_NDELAY        O_NONBLOCK
55
56/* For now Linux has no synchronisity options for data and read
57   operations.  We define the symbols here but let them do the same as
58   O_SYNC since this is a superset.  */
59#if defined __USE_POSIX199309 || defined __USE_UNIX98
60# define O_DSYNC        O_SYNC  /* Synchronize data.  */
61# define O_RSYNC        O_SYNC  /* Synchronize read operations.  */
62#endif
63
64/* Values for the second argument to `fcntl'.  */
65#define F_DUPFD         0       /* Duplicate file descriptor.  */
66#define F_GETFD         1       /* Get file descriptor flags.  */
67#define F_SETFD         2       /* Set file descriptor flags.  */
68#define F_GETFL         3       /* Get file status flags.  */
69#define F_SETFL         4       /* Set file status flags.  */
70#ifndef __USE_FILE_OFFSET64
71# define F_GETLK        14      /* Get record locking info.  */
72# define F_SETLK        6       /* Set record locking info (non-blocking).  */
73# define F_SETLKW       7       /* Set record locking info (blocking).  */
74#else
75# define F_GETLK        F_GETLK64  /* Get record locking info.  */
76# define F_SETLK        F_SETLK64  /* Set record locking info (non-blocking).*/
77# define F_SETLKW       F_SETLKW64 /* Set record locking info (blocking).  */
78#endif
79
80#define F_GETLK64       33      /* Get record locking info.  */
81#define F_SETLK64       34      /* Set record locking info (non-blocking).  */
82#define F_SETLKW64      35      /* Set record locking info (blocking).  */
83
84#if defined __USE_BSD || defined __USE_XOPEN2K
85# define F_SETOWN       24      /* Get owner of socket (receiver of SIGIO).  */
86# define F_GETOWN       23      /* Set owner of socket (receiver of SIGIO).  */
87#endif
88
89#ifdef __USE_GNU
90# define F_SETSIG       10      /* Set number of signal to be sent.  */
91# define F_GETSIG       11      /* Get number of signal to be sent.  */
92#endif
93
94#ifdef __USE_GNU
95# define F_SETLEASE     1024    /* Set a lease.  */
96# define F_GETLEASE     1025    /* Enquire what lease is active.  */
97# define F_NOTIFY       1026    /* Request notfications on a directory.  */
98#endif
99
100/* for F_[GET|SET]FL */
101#define FD_CLOEXEC      1       /* actually anything with low bit set goes */
102
103/* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
104#define F_RDLCK         0       /* Read lock.  */
105#define F_WRLCK         1       /* Write lock.  */
106#define F_UNLCK         2       /* Remove lock.  */
107
108/* for old implementation of bsd flock () */
109#define F_EXLCK         4       /* or 3 */
110#define F_SHLCK         8       /* or 4 */
111
112#ifdef __USE_BSD
113/* Operations for bsd flock(), also used by the kernel implementation */
114# define LOCK_SH        1       /* shared lock */
115# define LOCK_EX        2       /* exclusive lock */
116# define LOCK_NB        4       /* or'd with one of the above to prevent
117                                   blocking */
118# define LOCK_UN        8       /* remove lock */
119#endif
120
121#ifdef __USE_GNU
122# define LOCK_MAND      32      /* This is a mandatory flock:   */
123# define LOCK_READ      64      /* ... which allows concurrent read operations.  */
124# define LOCK_WRITE     128     /* ... which allows concurrent write operations.  */
125# define LOCK_RW        192     /* ... Which allows concurrent read & write operations.  */
126#endif
127
128#ifdef __USE_GNU
129/* Types of directory notifications that may be requested with F_NOTIFY.  */
130# define DN_ACCESS      0x00000001      /* File accessed.  */
131# define DN_MODIFY      0x00000002      /* File modified.  */
132# define DN_CREATE      0x00000004      /* File created.  */
133# define DN_DELETE      0x00000008      /* File removed.  */
134# define DN_RENAME      0x00000010      /* File renamed.  */
135# define DN_ATTRIB      0x00000020      /* File changed attibutes.  */
136# define DN_MULTISHOT   0x80000000      /* Don't remove notifier.  */
137#endif
138
139typedef struct flock
140  {
141    short int l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
142    short int l_whence; /* Where `l_start' is relative to (like `lseek').  */
143#ifndef __USE_FILE_OFFSET64
144    __off_t l_start;    /* Offset where the lock begins.  */
145    __off_t l_len;      /* Size of the locked area; zero means until EOF.  */
146    long int l_sysid;   /* XXX */
147#else
148    __off64_t l_start;  /* Offset where the lock begins.  */
149    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
150#endif
151    __pid_t l_pid;      /* Process holding the lock.  */
152#ifndef __USE_FILE_OFFSET64
153    long int pad[4];    /* XXX */
154#endif
155} flock_t;
156
157#ifdef __USE_LARGEFILE64
158struct flock64
159  {
160    short int l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
161    short int l_whence; /* Where `l_start' is relative to (like `lseek').  */
162    __off64_t l_start;  /* Offset where the lock begins.  */
163    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
164    __pid_t l_pid;      /* Process holding the lock.  */
165  };
166#endif
167
168
169/* Define some more compatibility macros to be backward compatible with
170   BSD systems which did not managed to hide these kernel macros.  */
171#ifdef  __USE_BSD
172# define FAPPEND        O_APPEND
173# define FFSYNC         O_FSYNC
174# define FASYNC         O_ASYNC
175# define FNONBLOCK      O_NONBLOCK
176# define FNDELAY        O_NDELAY
177#endif /* Use BSD.  */
178
179/* Advise to `posix_fadvise'.  */
180#ifdef __USE_XOPEN2K
181# define POSIX_FADV_NORMAL      0 /* No further special treatment.  */
182# define POSIX_FADV_RANDOM      1 /* Expect random page references.  */
183# define POSIX_FADV_SEQUENTIAL  2 /* Expect sequential page references.  */
184# define POSIX_FADV_WILLNEED    3 /* Will need these pages.  */
185# define POSIX_FADV_DONTNEED    4 /* Don't need these pages.  */
186# define POSIX_FADV_NOREUSE     5 /* Data will be accessed once.  */
187#endif
Note: See TracBrowser for help on using the repository browser.