[git commit] eventfd.h: Use new "bits/" scheme for arch-specific flags

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Fri Jun 7 11:53:13 UTC 2013


commit: http://git.uclibc.org/uClibc/commit/?id=fd355bc1dbcb794ae1abf0fad1459e28d8567ba0
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

As in timerfd.h, eventfd.h needs arch-specific definition files.
alpha, mips and sparc needs separate file, all the other arch
will use common definition.

This problem is already fixed in glibc.

Also sanitize and provide bits for hppa.
Make sure not to install the new bits/eventfd unless eventfd support is
enabled.

Signed-off-by: Hiroaki KAWAI <kawai at stratosphere.co.jp>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 Makefile.in                                        |    1 +
 .../linux/{common/sys => alpha/bits}/eventfd.h     |   30 ++++--------------
 libc/sysdeps/linux/common/{sys => bits}/eventfd.h  |   28 ++++--------------
 libc/sysdeps/linux/common/sys/eventfd.h            |   25 ++++++++-------
 .../linux/{common/sys => hppa/bits}/eventfd.h      |   31 +++++--------------
 .../linux/{common/sys => mips/bits}/eventfd.h      |   28 ++++--------------
 .../linux/{common/sys => sparc/bits}/eventfd.h     |   28 ++++--------------
 7 files changed, 47 insertions(+), 124 deletions(-)

diff --git a/Makefile.in b/Makefile.in
index 3d3ba3d..da865db 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -288,6 +288,7 @@ HEADERS_RM-$(UCLIBC_HAS_XATTR)               += sys/xattr.h
 HEADERS_RM-$(UCLIBC_HAS_XLOCALE)             += xlocale.h
 HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC)          += \
 	sys/cachectl.h \
+	bits/eventfd.h \
 	sys/eventfd.h \
 	sys/fsuid.h \
 	bits/inotify.h \
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/alpha/bits/eventfd.h
similarity index 64%
copy from libc/sysdeps/linux/common/sys/eventfd.h
copy to libc/sysdeps/linux/alpha/bits/eventfd.h
index c46c2a5..b5a7e41 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/alpha/bits/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -16,32 +16,16 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef	_SYS_EVENTFD_H
-#define	_SYS_EVENTFD_H	1
+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
+#endif
 
-#include <stdint.h>
-
-
-/* Type for event counter.  */
-typedef uint64_t eventfd_t;
-
-/* Flags for signalfd.  */
+/* Flags for eventfd.  */
 enum
   {
-    EFD_SEMAPHORE = 1,
+    EFD_SEMAPHORE = 000000001,
 #define EFD_SEMAPHORE EFD_SEMAPHORE
-    EFD_CLOEXEC = 02000000,
+    EFD_CLOEXEC   = 010000000,
 #define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
+    EFD_NONBLOCK  = 000000004
 #define EFD_NONBLOCK EFD_NONBLOCK
   };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel.  Set initial
-   value to COUNT.  */
-extern int eventfd (int __count, int __flags) __THROW;
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/common/bits/eventfd.h
similarity index 66%
copy from libc/sysdeps/linux/common/sys/eventfd.h
copy to libc/sysdeps/linux/common/bits/eventfd.h
index c46c2a5..ef49c61 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/common/bits/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -16,32 +16,16 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef	_SYS_EVENTFD_H
-#define	_SYS_EVENTFD_H	1
+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
+#endif
 
-#include <stdint.h>
-
-
-/* Type for event counter.  */
-typedef uint64_t eventfd_t;
-
-/* Flags for signalfd.  */
+/* Flags for eventfd.  */
 enum
   {
-    EFD_SEMAPHORE = 1,
+    EFD_SEMAPHORE = 00000001,
 #define EFD_SEMAPHORE EFD_SEMAPHORE
     EFD_CLOEXEC = 02000000,
 #define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
+    EFD_NONBLOCK = 00004000
 #define EFD_NONBLOCK EFD_NONBLOCK
   };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel.  Set initial
-   value to COUNT.  */
-extern int eventfd (int __count, int __flags) __THROW;
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/common/sys/eventfd.h
index c46c2a5..1bf785f 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/common/sys/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -20,21 +20,12 @@
 
 #include <stdint.h>
 
+/* Get the platform-dependent flags.  */
+#include <bits/eventfd.h>
 
 /* Type for event counter.  */
 typedef uint64_t eventfd_t;
 
-/* Flags for signalfd.  */
-enum
-  {
-    EFD_SEMAPHORE = 1,
-#define EFD_SEMAPHORE EFD_SEMAPHORE
-    EFD_CLOEXEC = 02000000,
-#define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
-#define EFD_NONBLOCK EFD_NONBLOCK
-  };
-
 
 __BEGIN_DECLS
 
@@ -42,6 +33,16 @@ __BEGIN_DECLS
    value to COUNT.  */
 extern int eventfd (int __count, int __flags) __THROW;
 
+#if 0 /* not (yet) implemented in uClibc */
+
+/* Read event counter and possibly wait for events.  */
+extern int eventfd_read (int __fd, eventfd_t *__value);
+
+/* Increment event counter.  */
+extern int eventfd_write (int __fd, eventfd_t __value);
+
+#endif
+
 __END_DECLS
 
 #endif /* sys/eventfd.h */
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/hppa/bits/eventfd.h
similarity index 62%
copy from libc/sysdeps/linux/common/sys/eventfd.h
copy to libc/sysdeps/linux/hppa/bits/eventfd.h
index c46c2a5..6182c07 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/hppa/bits/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -12,36 +12,21 @@
    Lesser General Public License for more details.
 
    You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
+   License along with the GNU C Library.  If not, see
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef	_SYS_EVENTFD_H
-#define	_SYS_EVENTFD_H	1
-
-#include <stdint.h>
-
-
-/* Type for event counter.  */
-typedef uint64_t eventfd_t;
+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
+#endif
 
 /* Flags for signalfd.  */
 enum
   {
-    EFD_SEMAPHORE = 1,
+    EFD_SEMAPHORE = 000000001,
 #define EFD_SEMAPHORE EFD_SEMAPHORE
-    EFD_CLOEXEC = 02000000,
+    EFD_CLOEXEC   = 010000000,
 #define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
+/* the below value looks suspicious, should be 000200004 for consistency */
+    EFD_NONBLOCK  = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
 #define EFD_NONBLOCK EFD_NONBLOCK
   };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel.  Set initial
-   value to COUNT.  */
-extern int eventfd (int __count, int __flags) __THROW;
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/mips/bits/eventfd.h
similarity index 66%
copy from libc/sysdeps/linux/common/sys/eventfd.h
copy to libc/sysdeps/linux/mips/bits/eventfd.h
index c46c2a5..17b2f46 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/mips/bits/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -16,32 +16,16 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef	_SYS_EVENTFD_H
-#define	_SYS_EVENTFD_H	1
+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
+#endif
 
-#include <stdint.h>
-
-
-/* Type for event counter.  */
-typedef uint64_t eventfd_t;
-
-/* Flags for signalfd.  */
+/* Flags for eventfd.  */
 enum
   {
-    EFD_SEMAPHORE = 1,
+    EFD_SEMAPHORE = 00000001,
 #define EFD_SEMAPHORE EFD_SEMAPHORE
     EFD_CLOEXEC = 02000000,
 #define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
+    EFD_NONBLOCK = 00000200
 #define EFD_NONBLOCK EFD_NONBLOCK
   };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel.  Set initial
-   value to COUNT.  */
-extern int eventfd (int __count, int __flags) __THROW;
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */
diff --git a/libc/sysdeps/linux/common/sys/eventfd.h b/libc/sysdeps/linux/sparc/bits/eventfd.h
similarity index 66%
copy from libc/sysdeps/linux/common/sys/eventfd.h
copy to libc/sysdeps/linux/sparc/bits/eventfd.h
index c46c2a5..bed9f09 100644
--- a/libc/sysdeps/linux/common/sys/eventfd.h
+++ b/libc/sysdeps/linux/sparc/bits/eventfd.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2013 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
@@ -16,32 +16,16 @@
    <http://www.gnu.org/licenses/>.  */
 
 #ifndef	_SYS_EVENTFD_H
-#define	_SYS_EVENTFD_H	1
+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
+#endif
 
-#include <stdint.h>
-
-
-/* Type for event counter.  */
-typedef uint64_t eventfd_t;
-
-/* Flags for signalfd.  */
+/* Flags for eventfd.  */
 enum
   {
     EFD_SEMAPHORE = 1,
 #define EFD_SEMAPHORE EFD_SEMAPHORE
-    EFD_CLOEXEC = 02000000,
+    EFD_CLOEXEC = 0x400000,
 #define EFD_CLOEXEC EFD_CLOEXEC
-    EFD_NONBLOCK = 04000
+    EFD_NONBLOCK = 0x004000
 #define EFD_NONBLOCK EFD_NONBLOCK
   };
-
-
-__BEGIN_DECLS
-
-/* Return file descriptor for generic event channel.  Set initial
-   value to COUNT.  */
-extern int eventfd (int __count, int __flags) __THROW;
-
-__END_DECLS
-
-#endif /* sys/eventfd.h */


More information about the uClibc-cvs mailing list