~ubuntu-branches/ubuntu/utopic/eglibc/utopic

« back to all changes in this revision

Viewing changes to .pc/any/submitted-bits-fcntl_h-at.diff/sysdeps/unix/sysv/linux/x86/bits/fcntl.h

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-10-26 05:14:58 UTC
  • mfrom: (1.5.1) (4.4.22 experimental)
  • Revision ID: package-import@ubuntu.com-20121026051458-oryotr4i03ob5pab
Tags: 2.16-0ubuntu1
* Merge with unreleased 2.16 in Debian experimental, remaining changes:
  - Drop the Breaks line from libc6, which refers to a Debian transition
  - Remove the libc6 recommends on libc6-i686, which we don't build
  - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel
  - Ship update-locale and validlocale in /usr/sbin in libc-bin
  - Don't build locales or locales-all in Ubuntu, we rely on langpacks
  - Heavily mangle the way we do service restarting on major upgrades
  - Use different MIN_KERNEL_SUPPORTED versions than Debian, due to
    buildd needs.  This should be universally bumped to 3.2.0 once all
    our buildds (including the PPA guests) are running precise kernels
  - Build i386 variants as -march=i686, build amd64 with -O3, and build
    ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize
  - Re-enable unsubmitted-ldconfig-cache-abi.diff and rebuild the cache
    on upgrades from previous versions that used a different constant
  - debian/patches/any/local-CVE-2012-3406.diff: switch to malloc when
    array grows too large to handle via alloca extension (CVE-2012-3406)
  - Build generic i386/i686 flavour with -mno-tls-direct-seg-refs
* Changes added/dropped with this merge while reducing our delta:
  - Stop building glibc docs from the eglibc source, and instead make
    the glibc-docs stub have a hard dependency on glibc-doc-reference
  - Remove outdated conflicts against ancient versions of ia32-libs
  - Drop the tzdata dependency from libc6, it's in required and minimal
  - Use gcc-4.7/g++-4.7 by default on all our supported architectures
  - Save our historical changelog as changelog.ubuntu in the source
  - Drop nscd's libaudit build-dep for now, as libaudit is in universe
  - Drop the unnecessary Breaks from libc6 to locales and locales-all
  - Ship xen's ld.so.conf.d snippet as /etc/ld.so.conf.d/libc6-xen.conf
* Disable hard failures on the test suite for the first upload to raring

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* O_*, F_*, FD_* bit values for Linux/x86-64.
 
2
   Copyright (C) 2001-2012 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, see
 
17
   <http://www.gnu.org/licenses/>.  */
 
18
 
 
19
#ifndef _FCNTL_H
 
20
# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
 
21
#endif
 
22
 
 
23
#include <sys/types.h>
 
24
#ifdef __USE_GNU
 
25
# include <bits/uio.h>
 
26
#endif
 
27
 
 
28
 
 
29
/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
 
30
   located on a few file systems.  */
 
31
#define O_ACCMODE          0003
 
32
#define O_RDONLY             00
 
33
#define O_WRONLY             01
 
34
#define O_RDWR               02
 
35
#define O_CREAT            0100 /* not fcntl */
 
36
#define O_EXCL             0200 /* not fcntl */
 
37
#define O_NOCTTY           0400 /* not fcntl */
 
38
#define O_TRUNC           01000 /* not fcntl */
 
39
#define O_APPEND          02000
 
40
#define O_NONBLOCK        04000
 
41
#define O_NDELAY        O_NONBLOCK
 
42
#define O_SYNC         04010000
 
43
#define O_FSYNC          O_SYNC
 
44
#define O_ASYNC          020000
 
45
 
 
46
#ifdef __USE_XOPEN2K8
 
47
# define O_DIRECTORY    0200000 /* Must be a directory.  */
 
48
# define O_NOFOLLOW     0400000 /* Do not follow links.  */
 
49
# define O_CLOEXEC     02000000 /* Set close_on_exec.  */
 
50
#endif
 
51
#ifdef __USE_GNU
 
52
# define O_DIRECT        040000 /* Direct disk access.  */
 
53
# define O_NOATIME     01000000 /* Do not set atime.  */
 
54
# define O_PATH       010000000 /* Resolve pathname but do not open file.  */
 
55
#endif
 
56
 
 
57
/* For now Linux has synchronisity options for data and read operations.
 
58
   We define the symbols here but let them do the same as O_SYNC since
 
59
   this is a superset.  */
 
60
#if defined __USE_POSIX199309 || defined __USE_UNIX98
 
61
# define O_DSYNC        010000  /* Synchronize data.  */
 
62
# define O_RSYNC        O_SYNC  /* Synchronize read operations.  */
 
63
#endif
 
64
 
 
65
#ifdef __USE_LARGEFILE64
 
66
# ifdef __x86_64__
 
67
#  define O_LARGEFILE   0
 
68
# else
 
69
#  define O_LARGEFILE   0100000
 
70
# endif
 
71
#endif
 
72
 
 
73
/* Values for the second argument to `fcntl'.  */
 
74
#define F_DUPFD         0       /* Duplicate file descriptor.  */
 
75
#define F_GETFD         1       /* Get file descriptor flags.  */
 
76
#define F_SETFD         2       /* Set file descriptor flags.  */
 
77
#define F_GETFL         3       /* Get file status flags.  */
 
78
#define F_SETFL         4       /* Set file status flags.  */
 
79
#ifdef __x86_64__
 
80
# define F_GETLK        5       /* Get record locking info.  */
 
81
# define F_SETLK        6       /* Set record locking info (non-blocking).  */
 
82
# define F_SETLKW       7       /* Set record locking info (blocking).  */
 
83
/* Not necessary, we always have 64-bit offsets.  */
 
84
# define F_GETLK64      5       /* Get record locking info.  */
 
85
# define F_SETLK64      6       /* Set record locking info (non-blocking).  */
 
86
# define F_SETLKW64     7       /* Set record locking info (blocking).  */
 
87
#else
 
88
# ifndef __USE_FILE_OFFSET64
 
89
#  define F_GETLK       5       /* Get record locking info.  */
 
90
#  define F_SETLK       6       /* Set record locking info (non-blocking).  */
 
91
#  define F_SETLKW      7       /* Set record locking info (blocking).  */
 
92
# else
 
93
#  define F_GETLK       F_GETLK64  /* Get record locking info.  */
 
94
#  define F_SETLK       F_SETLK64  /* Set record locking info (non-blocking).*/
 
95
#  define F_SETLKW      F_SETLKW64 /* Set record locking info (blocking).  */
 
96
# endif
 
97
# define F_GETLK64      12      /* Get record locking info.  */
 
98
# define F_SETLK64      13      /* Set record locking info (non-blocking).  */
 
99
# define F_SETLKW64     14      /* Set record locking info (blocking).  */
 
100
#endif
 
101
 
 
102
#if defined __USE_BSD || defined __USE_UNIX98 || defined __USE_XOPEN2K8
 
103
# define F_SETOWN       8       /* Get owner (process receiving SIGIO).  */
 
104
# define F_GETOWN       9       /* Set owner (process receiving SIGIO).  */
 
105
#endif
 
106
 
 
107
#ifdef __USE_GNU
 
108
# define F_SETSIG       10      /* Set number of signal to be sent.  */
 
109
# define F_GETSIG       11      /* Get number of signal to be sent.  */
 
110
# define F_SETOWN_EX    15      /* Get owner (thread receiving SIGIO).  */
 
111
# define F_GETOWN_EX    16      /* Set owner (thread receiving SIGIO).  */
 
112
#endif
 
113
 
 
114
#ifdef __USE_GNU
 
115
# define F_SETLEASE     1024    /* Set a lease.  */
 
116
# define F_GETLEASE     1025    /* Enquire what lease is active.  */
 
117
# define F_NOTIFY       1026    /* Request notfications on a directory.  */
 
118
# define F_SETPIPE_SZ   1031    /* Set pipe page size array.  */
 
119
# define F_GETPIPE_SZ   1032    /* Set pipe page size array.  */
 
120
#endif
 
121
#ifdef __USE_XOPEN2K8
 
122
# define F_DUPFD_CLOEXEC 1030   /* Duplicate file descriptor with
 
123
                                   close-on-exit set.  */
 
124
#endif
 
125
 
 
126
/* For F_[GET|SET]FD.  */
 
127
#define FD_CLOEXEC      1       /* actually anything with low bit set goes */
 
128
 
 
129
/* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
 
130
#define F_RDLCK         0       /* Read lock.  */
 
131
#define F_WRLCK         1       /* Write lock.  */
 
132
#define F_UNLCK         2       /* Remove lock.  */
 
133
 
 
134
/* For old implementation of bsd flock().  */
 
135
#define F_EXLCK         4       /* or 3 */
 
136
#define F_SHLCK         8       /* or 4 */
 
137
 
 
138
#ifdef __USE_BSD
 
139
/* Operations for bsd flock(), also used by the kernel implementation.  */
 
140
# define LOCK_SH        1       /* shared lock */
 
141
# define LOCK_EX        2       /* exclusive lock */
 
142
# define LOCK_NB        4       /* or'd with one of the above to prevent
 
143
                                   blocking */
 
144
# define LOCK_UN        8       /* remove lock */
 
145
#endif
 
146
 
 
147
#ifdef __USE_GNU
 
148
# define LOCK_MAND      32      /* This is a mandatory flock:   */
 
149
# define LOCK_READ      64      /* ... which allows concurrent read operations.  */
 
150
# define LOCK_WRITE     128     /* ... which allows concurrent write operations.  */
 
151
# define LOCK_RW        192     /* ... Which allows concurrent read & write operations.  */
 
152
#endif
 
153
 
 
154
#ifdef __USE_GNU
 
155
/* Types of directory notifications that may be requested with F_NOTIFY.  */
 
156
# define DN_ACCESS      0x00000001      /* File accessed.  */
 
157
# define DN_MODIFY      0x00000002      /* File modified.  */
 
158
# define DN_CREATE      0x00000004      /* File created.  */
 
159
# define DN_DELETE      0x00000008      /* File removed.  */
 
160
# define DN_RENAME      0x00000010      /* File renamed.  */
 
161
# define DN_ATTRIB      0x00000020      /* File changed attibutes.  */
 
162
# define DN_MULTISHOT   0x80000000      /* Don't remove notifier.  */
 
163
#endif
 
164
 
 
165
struct flock
 
166
  {
 
167
    short int l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
 
168
    short int l_whence; /* Where `l_start' is relative to (like `lseek').  */
 
169
#ifndef __USE_FILE_OFFSET64
 
170
    __off_t l_start;    /* Offset where the lock begins.  */
 
171
    __off_t l_len;      /* Size of the locked area; zero means until EOF.  */
 
172
#else
 
173
    __off64_t l_start;  /* Offset where the lock begins.  */
 
174
    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
 
175
#endif
 
176
    __pid_t l_pid;      /* Process holding the lock.  */
 
177
  };
 
178
 
 
179
#ifdef __USE_LARGEFILE64
 
180
struct flock64
 
181
  {
 
182
    short int l_type;   /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
 
183
    short int l_whence; /* Where `l_start' is relative to (like `lseek').  */
 
184
    __off64_t l_start;  /* Offset where the lock begins.  */
 
185
    __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
 
186
    __pid_t l_pid;      /* Process holding the lock.  */
 
187
  };
 
188
#endif
 
189
 
 
190
#ifdef __USE_GNU
 
191
/* Owner types.  */
 
192
enum __pid_type
 
193
  {
 
194
    F_OWNER_TID = 0,            /* Kernel thread.  */
 
195
    F_OWNER_PID,                /* Process.  */
 
196
    F_OWNER_PGRP,               /* Process group.  */
 
197
    F_OWNER_GID = F_OWNER_PGRP  /* Alternative, obsolete name.  */
 
198
  };
 
199
 
 
200
/* Structure to use with F_GETOWN_EX and F_SETOWN_EX.  */
 
201
struct f_owner_ex
 
202
  {
 
203
    enum __pid_type type;       /* Owner type of ID.  */
 
204
    __pid_t pid;                /* ID of owner.  */
 
205
  };
 
206
#endif
 
207
 
 
208
/* Define some more compatibility macros to be backward compatible with
 
209
   BSD systems which did not managed to hide these kernel macros.  */
 
210
#ifdef  __USE_BSD
 
211
# define FAPPEND        O_APPEND
 
212
# define FFSYNC         O_FSYNC
 
213
# define FASYNC         O_ASYNC
 
214
# define FNONBLOCK      O_NONBLOCK
 
215
# define FNDELAY        O_NDELAY
 
216
#endif /* Use BSD.  */
 
217
 
 
218
/* Advise to `posix_fadvise'.  */
 
219
#ifdef __USE_XOPEN2K
 
220
# define POSIX_FADV_NORMAL      0 /* No further special treatment.  */
 
221
# define POSIX_FADV_RANDOM      1 /* Expect random page references.  */
 
222
# define POSIX_FADV_SEQUENTIAL  2 /* Expect sequential page references.  */
 
223
# define POSIX_FADV_WILLNEED    3 /* Will need these pages.  */
 
224
# define POSIX_FADV_DONTNEED    4 /* Don't need these pages.  */
 
225
# define POSIX_FADV_NOREUSE     5 /* Data will be accessed once.  */
 
226
#endif
 
227
 
 
228
 
 
229
#ifdef __USE_GNU
 
230
/* Flags for SYNC_FILE_RANGE.  */
 
231
# define SYNC_FILE_RANGE_WAIT_BEFORE    1 /* Wait upon writeout of all pages
 
232
                                             in the range before performing the
 
233
                                             write.  */
 
234
# define SYNC_FILE_RANGE_WRITE          2 /* Initiate writeout of all those
 
235
                                             dirty pages in the range which are
 
236
                                             not presently under writeback.  */
 
237
# define SYNC_FILE_RANGE_WAIT_AFTER     4 /* Wait upon writeout of all pages in
 
238
                                             the range after performing the
 
239
                                             write.  */
 
240
 
 
241
/* Flags for SPLICE and VMSPLICE.  */
 
242
# define SPLICE_F_MOVE          1       /* Move pages instead of copying.  */
 
243
# define SPLICE_F_NONBLOCK      2       /* Don't block on the pipe splicing
 
244
                                           (but we may still block on the fd
 
245
                                           we splice from/to).  */
 
246
# define SPLICE_F_MORE          4       /* Expect more data.  */
 
247
# define SPLICE_F_GIFT          8       /* Pages passed in are a gift.  */
 
248
 
 
249
 
 
250
/* File handle structure.  */
 
251
struct file_handle
 
252
{
 
253
  unsigned int handle_bytes;
 
254
  int handle_type;
 
255
  /* File identifier.  */
 
256
  unsigned char f_handle[0];
 
257
};
 
258
 
 
259
/* Maximum handle size (for now).  */
 
260
# define MAX_HANDLE_SZ  128
 
261
#endif
 
262
 
 
263
__BEGIN_DECLS
 
264
 
 
265
#ifdef __USE_GNU
 
266
 
 
267
/* Provide kernel hint to read ahead.  */
 
268
extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
 
269
    __THROW;
 
270
 
 
271
 
 
272
/* Selective file content synch'ing.
 
273
 
 
274
   This function is a possible cancellation point and therefore not
 
275
   marked with __THROW.  */
 
276
extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
 
277
                            unsigned int __flags);
 
278
 
 
279
 
 
280
/* Splice address range into a pipe.
 
281
 
 
282
   This function is a possible cancellation point and therefore not
 
283
   marked with __THROW.  */
 
284
extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
 
285
                         size_t __count, unsigned int __flags);
 
286
 
 
287
/* Splice two files together.
 
288
 
 
289
   This function is a possible cancellation point and therefore not
 
290
   marked with __THROW.  */
 
291
extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
 
292
                       __off64_t *__offout, size_t __len,
 
293
                       unsigned int __flags);
 
294
 
 
295
/* In-kernel implementation of tee for pipe buffers.
 
296
 
 
297
   This function is a possible cancellation point and therefore not
 
298
   marked with __THROW.  */
 
299
extern ssize_t tee (int __fdin, int __fdout, size_t __len,
 
300
                    unsigned int __flags);
 
301
 
 
302
/* Reserve storage for the data of the file associated with FD.
 
303
 
 
304
   This function is a possible cancellation point and therefore not
 
305
   marked with __THROW.  */
 
306
# ifndef __USE_FILE_OFFSET64
 
307
extern int fallocate (int __fd, int __mode, __off_t __offset, __off_t __len);
 
308
# else
 
309
#  ifdef __REDIRECT
 
310
extern int __REDIRECT (fallocate, (int __fd, int __mode, __off64_t __offset,
 
311
                                   __off64_t __len),
 
312
                       fallocate64);
 
313
#  else
 
314
#   define fallocate fallocate64
 
315
#  endif
 
316
# endif
 
317
# ifdef __USE_LARGEFILE64
 
318
extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
 
319
                        __off64_t __len);
 
320
# endif
 
321
 
 
322
 
 
323
/* Map file name to file handle.  */
 
324
extern int name_to_handle_at (int __dfd, const char *__name,
 
325
                              struct file_handle *__handle, int *__mnt_id,
 
326
                              int __flags) __THROW;
 
327
 
 
328
/* Open file using the file handle.
 
329
 
 
330
   This function is a possible cancellation point and therefore not
 
331
   marked with __THROW.  */
 
332
extern int open_by_handle_at (int __mountdirfd, struct file_handle *__handle,
 
333
                              int __flags);
 
334
 
 
335
#endif  /* use GNU */
 
336
 
 
337
__END_DECLS