~ubuntu-branches/ubuntu/trusty/eglibc/trusty

« back to all changes in this revision

Viewing changes to ports/sysdeps/unix/sysv/linux/arm/bits/fcntl.h

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2013-01-10 18:39:35 UTC
  • mfrom: (1.5.2) (4.4.24 experimental)
  • Revision ID: package-import@ubuntu.com-20130110183935-afsgfxkmg7wk5eaj
Tags: 2.17-0ubuntu1
* Merge with Debian, bringing in a new upstream and many small fixes:
  - patches/any/cvs-malloc-deadlock.diff: Dropped, merged upstream.
  - patches/ubuntu/lddebug-scopes.diff: Rebase for upstream changes.
  - patches/ubuntu/local-CVE-2012-3406.diff: Rebased against upstream.
  - patches/ubuntu/no-asm-mtune-i686.diff: Fixed in recent binutils.
* This upstream merge fixes a nasty hang in pulseaudio (LP: #1085342)
* Bump MIN_KERNEL_SUPPORTED to 2.6.32 on ARM, now that we no longer
  have to support shonky 2.6.31 kernels on imx51 babbage builders.
* Drop patches/ubuntu/local-disable-nscd-host-caching.diff, as these
  issues were apparently resolved upstream a while ago (LP: #613662)
* Fix the compiled-in bug URL to point to launchpad.net, not Debian.

Show diffs side-by-side

added added

removed removed

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