Update constants and rearrange file.
authorCarlos O'Donell <carlos@systemhalted.org>
Tue, 1 Dec 2009 15:45:41 +0000 (10:45 -0500)
committerCarlos O'Donell <carlos@systemhalted.org>
Mon, 1 Feb 2010 22:54:58 +0000 (17:54 -0500)
Update F_SETOWN_EX and F_GETOWN_EX. Rearrange
the file to match other targets, reducing future
diffs against other targets and making maintenance
easier.

ChangeLog.hppa
sysdeps/unix/sysv/linux/hppa/bits/fcntl.h

index 24a152e..be0a71a 100644 (file)
@@ -1,3 +1,10 @@
+2009-11-29  Carlos O'Donell  <carlos@codesourcery.com>
+
+       * sysdeps/unix/sysv/linux/hppa/bits/fcntl.h:
+       Rearrange file to reduce future maintenance.
+       [__USE_GNU]: Update F_GETOWN_EX, and F_SETOWN_EX.
+       Define f_owner_ex an __pid_type.
+
 2009-11-25  Carlos O'Donell  <carlos@codesourcery.com>
 
        * sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h:
index a0b0e07..a2c6482 100644 (file)
@@ -1,6 +1,6 @@
 /* O_*, F_*, FD_* bit values for Linux/HPPA.
    Copyright (C) 1995,1996,1997,1998,1999,2000,2002,2004
-       Free Software Foundation, Inc.
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -18,7 +18,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
-#ifndef _FCNTL_H
+#ifndef        _FCNTL_H
 # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
 #endif
 
 # include <bits/uio.h>
 #endif
 
+
 /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
    located on an ext2 file system */
-#define O_RDONLY       00000000
-#define O_WRONLY       00000001
-#define O_RDWR         00000002
-#define O_ACCMODE      00000003
-#define O_APPEND       00000010
-#define O_BLKSEEK      00000100 /* HPUX only */
+#define O_ACCMODE         0003
+#define O_RDONLY            00
+#define O_WRONLY            01
+#define O_RDWR              02
 #define O_CREAT                00000400 /* not fcntl */
-#define O_TRUNC                00001000 /* not fcntl */
 #define O_EXCL         00002000 /* not fcntl */
-#define O_ASYNC                00020000
-#define O_SYNC         00100000
+#define O_NOCTTY       00400000 /* not fcntl */
+#define O_TRUNC                00001000 /* not fcntl */
+#define O_APPEND       00000010
 #define O_NONBLOCK     00200004 /* HPUX has separate NDELAY & NONBLOCK */
 #define O_NDELAY       O_NONBLOCK
-#define O_NOCTTY       00400000 /* not fcntl */
-
+#define O_SYNC         00100000
+#define O_FSYNC                 O_SYNC
+#define O_ASYNC                 020000
+#define O_BLKSEEK      00000100 /* HPUX only */
 
 #ifdef __USE_GNU
 # define O_DIRECT      000040000 /* Direct disk access.  */
 # define O_CLOEXEC     010000000 /* Set close_on_exec.  */
 #endif
 
-#ifdef __USE_LARGEFILE64
-# define O_LARGEFILE   00004000
-#endif
-
+/* For now Linux has synchronisity options for data and read operations.
+   We define the symbols here but let them do the same as O_SYNC since
+   this is a superset. */
 #if defined __USE_POSIX199309 || defined __USE_UNIX98
 # define O_DSYNC               01000000 /* HPUX only */
 # define O_RSYNC               02000000 /* HPUX only */
 #endif
 
+#ifdef __USE_LARGEFILE64
+# define O_LARGEFILE   00004000
+#endif
+
 /* Values for the second argument to `fcntl'.  */
 #define F_DUPFD                0       /* Duplicate file descriptor.  */
 #define F_GETFD                1       /* Get file descriptor flags.  */
 #define F_SETFL                4       /* Set file status flags.  */
 #ifndef __USE_FILE_OFFSET64
 # define F_GETLK       5       /* Get record locking info.  */
-# define F_SETLK       6       /* Set record locking info (non-blocking).  */
-# define F_SETLKW      7       /* Set record locking info (blocking).  */
+# define F_SETLK       6       /* Set record locking info (non-blocking).  */
+# define F_SETLKW      7       /* Set record locking info (blocking).  */
 #else
-# define F_GETLK       F_GETLK64 /* Get record locking info.  */
-# define F_SETLK       F_SETLK64 /* Set record locking info (non-blocking). */
+# define F_GETLK       F_GETLK64  /* Get record locking info.  */
+# define F_SETLK       F_SETLK64  /* Set record locking info (non-blocking).*/
 # define F_SETLKW      F_SETLKW64 /* Set record locking info (blocking).  */
 #endif
 #define F_GETLK64      8       /* Get record locking info.  */
 #ifdef __USE_GNU
 # define F_SETSIG      13      /* Set number of signal to be sent.  */
 # define F_GETSIG      14      /* Get number of signal to be sent.  */
-# define F_GETOWN_EX   15
-# define F_SETOWN_EX   16
+# define F_SETOWN_EX   15      /* Get owner (thread receiving SIGIO).  */
+# define F_GETOWN_EX   16      /* Set owner (thread receiving SIGIO).  */
 #endif
 
 #ifdef __USE_GNU
-# define F_SETLEASE     1024    /* Set a lease.  */
-# define F_GETLEASE     1025    /* Enquire what lease is active.  */
-# define F_NOTIFY       1026    /* Request notfications on a directory.  */
+# define F_SETLEASE    1024    /* Set a lease.  */
+# define F_GETLEASE    1025    /* Enquire what lease is active.  */
+# define F_NOTIFY      1026    /* Request notfications on a directory.  */
 # define F_DUPFD_CLOEXEC 1030  /* Duplicate file descriptor with
                                   close-on-exit set.  */
 #endif
 
-/* for F_[GET|SET]FL */
+/* For F_[GET|SET]FD.  */
 #define FD_CLOEXEC     1       /* actually anything with low bit set goes */
 
 /* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
 #define F_WRLCK                2       /* Write lock.  */
 #define F_UNLCK                3       /* Remove lock.  */
 
-/* for old implementation of bsd flock () */
+/* For old implementation of bsd flock().  */
 #define F_EXLCK                4       /* or 3 */
 #define F_SHLCK                8       /* or 4 */
 
 #ifdef __USE_BSD
-/* operations for bsd flock(), also used by the kernel implementation */
+/* Operations for bsd flock(), also used by the kernel implementation. */
 # define LOCK_SH       1       /* shared lock */
 # define LOCK_EX       2       /* exclusive lock */
 # define LOCK_NB       4       /* or'd with one of the above to prevent
 #endif
 
 #ifdef __USE_GNU
+# define LOCK_MAND     32      /* This is a mandatory flock:   */
+# define LOCK_READ     64      /* ... which allows concurrent read operations.  */
+# define LOCK_WRITE    128     /* ... which allows concurrent write operations.  */
+# define LOCK_RW       192     /* ... Which allows concurrent read & write operations.  */
+#endif
+
+#ifdef __USE_GNU
 /* Types of directory notifications that may be requested with F_NOTIFY.  */
-# define DN_ACCESS      0x00000001      /* File accessed.  */
-# define DN_MODIFY      0x00000002      /* File modified.  */
-# define DN_CREATE      0x00000004      /* File created.  */
-# define DN_DELETE      0x00000008      /* File removed.  */
-# define DN_RENAME      0x00000010      /* File renamed.  */
-# define DN_ATTRIB      0x00000020      /* File changed attibutes.  */
-# define DN_MULTISHOT   0x80000000      /* Don't remove notifier.  */
+# define DN_ACCESS     0x00000001      /* File accessed.  */
+# define DN_MODIFY     0x00000002      /* File modified.  */
+# define DN_CREATE     0x00000004      /* File created.  */
+# define DN_DELETE     0x00000008      /* File removed.  */
+# define DN_RENAME     0x00000010      /* File renamed.  */
+# define DN_ATTRIB     0x00000020      /* File changed attibutes.  */
+# define DN_MULTISHOT  0x80000000      /* Don't remove notifier.  */
 #endif
 
 struct flock
   {
-    short int l_type;  /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
+    short int l_type;  /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
     short int l_whence;        /* Where `l_start' is relative to (like `lseek').  */
 #ifndef __USE_FILE_OFFSET64
     __off_t l_start;   /* Offset where the lock begins.  */
@@ -150,7 +161,7 @@ struct flock
 #ifdef __USE_LARGEFILE64
 struct flock64
   {
-    short int l_type;  /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
+    short int l_type;  /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.  */
     short int l_whence;        /* Where `l_start' is relative to (like `lseek').  */
     __off64_t l_start; /* Offset where the lock begins.  */
     __off64_t l_len;   /* Size of the locked area; zero means until EOF.  */
@@ -158,6 +169,24 @@ struct flock64
   };
 #endif
 
+#ifdef __USE_GNU
+/* Owner types.  */
+enum __pid_type
+  {
+    F_OWNER_TID = 0,           /* Kernel thread.  */
+    F_OWNER_PID,               /* Process.  */
+    F_OWNER_PGRP,              /* Process group.  */
+    F_OWNER_GID = F_OWNER_PGRP /* Alternative, obsolete name.  */
+  };
+
+/* Structure to use with F_GETOWN_EX and F_SETOWN_EX.  */
+struct f_owner_ex
+  {
+    enum __pid_type type;      /* Owner type of ID.  */
+    __pid_t pid;               /* ID of owner.  */
+  };
+#endif
+
 /* Define some more compatibility macros to be backward compatible with
    BSD systems which did not managed to hide these kernel macros.  */
 #ifdef __USE_BSD
@@ -172,13 +201,15 @@ struct flock64
 #ifdef __USE_XOPEN2K
 # define POSIX_FADV_NORMAL     0 /* No further special treatment.  */
 # define POSIX_FADV_RANDOM     1 /* Expect random page references.  */
-# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references.  */
+# define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references.  */
 # define POSIX_FADV_WILLNEED   3 /* Will need these pages.  */
 # define POSIX_FADV_DONTNEED   4 /* Don't need these pages.  */
 # define POSIX_FADV_NOREUSE    5 /* Data will be accessed once.  */
 #endif
 
+
 #ifdef __USE_GNU
+/* Flags for SYNC_FILE_RANGE.  */
 # define SYNC_FILE_RANGE_WAIT_BEFORE   1 /* Wait upon writeout of all pages
                                             in the range before performing the
                                             write.  */
@@ -206,16 +237,18 @@ __BEGIN_DECLS
 extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
     __THROW;
 
+
 /* Selective file content synch'ing.  */
-extern int sync_file_range (int __fd, __off64_t __from, __off64_t __to,
+extern int sync_file_range (int __fd, __off64_t __offset, __off64_t __count,
                            unsigned int __flags);
 
+
 /* Splice address range into a pipe.  */
-extern ssize_t vmsplice (int __fdout, const struct iovec *__iov, 
+extern ssize_t vmsplice (int __fdout, const struct iovec *__iov,
                         size_t __count, unsigned int __flags);
 
 /* Splice two files together.  */
-extern ssize_t splice (int __fdin, __off64_t *offin, int __fdout, 
+extern ssize_t splice (int __fdin, __off64_t *__offin, int __fdout,
                       __off64_t *__offout, size_t __len,
                       unsigned int __flags);
 
@@ -241,5 +274,5 @@ extern int fallocate64 (int __fd, int __mode, __off64_t __offset,
 # endif
 
 #endif
-    
+
 __END_DECLS