uClibc: Backport uClibc master git commit fd355bc1dbcb794ae1abf0fad1459e28d8567ba0 (eventfd.h: Use new "bits/" scheme for arch-specific flags)
This patch adds missing architecture-specific headers for use with eventfd(2). Fixes #16679. Signed-off-by: Luis Dallos <ld@nkvd.ignorelist.com> SVN-Revision: 42916
This commit is contained in:
		@@ -0,0 +1,269 @@
 | 
				
			|||||||
 | 
					From fd355bc1dbcb794ae1abf0fad1459e28d8567ba0 Mon Sep 17 00:00:00 2001
 | 
				
			||||||
 | 
					From: Hiroaki KAWAI <kawai@stratosphere.co.jp>
 | 
				
			||||||
 | 
					Date: Fri, 19 Apr 2013 01:09:35 +0000
 | 
				
			||||||
 | 
					Subject: eventfd.h: Use new "bits/" scheme for arch-specific flags
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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@stratosphere.co.jp>
 | 
				
			||||||
 | 
					Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					diff --git a/Makefile.in b/Makefile.in
 | 
				
			||||||
 | 
					index 3d3ba3d..da865db 100644
 | 
				
			||||||
 | 
					--- a/Makefile.in
 | 
				
			||||||
 | 
					+++ b/Makefile.in
 | 
				
			||||||
 | 
					@@ -272,6 +272,7 @@ HEADERS_RM-$(UCLIBC_HAS_XATTR)               += sys/xattr.h
 | 
				
			||||||
 | 
					 HEADERS_RM-$(UCLIBC_HAS_XLOCALE)             += xlocale.h
 | 
				
			||||||
 | 
					 HEADERS_RM-$(UCLIBC_LINUX_SPECIFIC)          += sys/eventfd.h sys/fsuid.h \
 | 
				
			||||||
 | 
					 	bits/inotify.h \
 | 
				
			||||||
 | 
					+	bits/eventfd.h \
 | 
				
			||||||
 | 
					 	sys/inotify.h \
 | 
				
			||||||
 | 
					 	sys/kdaemon.h \
 | 
				
			||||||
 | 
					 	sys/perm.h \
 | 
				
			||||||
 | 
					diff --git a/libc/sysdeps/linux/alpha/bits/eventfd.h b/libc/sysdeps/linux/alpha/bits/eventfd.h
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					index 0000000..b5a7e41
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/libc/sysdeps/linux/alpha/bits/eventfd.h
 | 
				
			||||||
 | 
					@@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					+/* 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
 | 
				
			||||||
 | 
					+   modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
 | 
					+   License as published by the Free Software Foundation; either
 | 
				
			||||||
 | 
					+   version 2.1 of the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+   The GNU C Library is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
				
			||||||
 | 
					+   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
 | 
				
			||||||
 | 
					+   <http://www.gnu.org/licenses/>.  */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#ifndef	_SYS_EVENTFD_H
 | 
				
			||||||
 | 
					+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+/* Flags for eventfd.  */
 | 
				
			||||||
 | 
					+enum
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    EFD_SEMAPHORE = 000000001,
 | 
				
			||||||
 | 
					+#define EFD_SEMAPHORE EFD_SEMAPHORE
 | 
				
			||||||
 | 
					+    EFD_CLOEXEC   = 010000000,
 | 
				
			||||||
 | 
					+#define EFD_CLOEXEC EFD_CLOEXEC
 | 
				
			||||||
 | 
					+    EFD_NONBLOCK  = 000000004
 | 
				
			||||||
 | 
					+#define EFD_NONBLOCK EFD_NONBLOCK
 | 
				
			||||||
 | 
					+  };
 | 
				
			||||||
 | 
					diff --git a/libc/sysdeps/linux/common/bits/eventfd.h b/libc/sysdeps/linux/common/bits/eventfd.h
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					index 0000000..ef49c61
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/libc/sysdeps/linux/common/bits/eventfd.h
 | 
				
			||||||
 | 
					@@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					+/* 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
 | 
				
			||||||
 | 
					+   modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
 | 
					+   License as published by the Free Software Foundation; either
 | 
				
			||||||
 | 
					+   version 2.1 of the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+   The GNU C Library is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
				
			||||||
 | 
					+   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
 | 
				
			||||||
 | 
					+   <http://www.gnu.org/licenses/>.  */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#ifndef	_SYS_EVENTFD_H
 | 
				
			||||||
 | 
					+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+/* Flags for eventfd.  */
 | 
				
			||||||
 | 
					+enum
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    EFD_SEMAPHORE = 00000001,
 | 
				
			||||||
 | 
					+#define EFD_SEMAPHORE EFD_SEMAPHORE
 | 
				
			||||||
 | 
					+    EFD_CLOEXEC = 02000000,
 | 
				
			||||||
 | 
					+#define EFD_CLOEXEC EFD_CLOEXEC
 | 
				
			||||||
 | 
					+    EFD_NONBLOCK = 00004000
 | 
				
			||||||
 | 
					+#define EFD_NONBLOCK EFD_NONBLOCK
 | 
				
			||||||
 | 
					+  };
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
 | 
					@@ -21,21 +21,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
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
 | 
					@@ -43,6 +34,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/hppa/bits/eventfd.h b/libc/sysdeps/linux/hppa/bits/eventfd.h
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					index 0000000..6182c07
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/libc/sysdeps/linux/hppa/bits/eventfd.h
 | 
				
			||||||
 | 
					@@ -0,0 +1,32 @@
 | 
				
			||||||
 | 
					+/* 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
 | 
				
			||||||
 | 
					+   modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
 | 
					+   License as published by the Free Software Foundation; either
 | 
				
			||||||
 | 
					+   version 2.1 of the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+   The GNU C Library is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
				
			||||||
 | 
					+   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
 | 
				
			||||||
 | 
					+   <http://www.gnu.org/licenses/>.  */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#ifndef	_SYS_EVENTFD_H
 | 
				
			||||||
 | 
					+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+/* Flags for signalfd.  */
 | 
				
			||||||
 | 
					+enum
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    EFD_SEMAPHORE = 000000001,
 | 
				
			||||||
 | 
					+#define EFD_SEMAPHORE EFD_SEMAPHORE
 | 
				
			||||||
 | 
					+    EFD_CLOEXEC   = 010000000,
 | 
				
			||||||
 | 
					+#define EFD_CLOEXEC EFD_CLOEXEC
 | 
				
			||||||
 | 
					+/* the below value looks suspicious, should be 000200004 for consistency */
 | 
				
			||||||
 | 
					+    EFD_NONBLOCK  = 00200004 /* HPUX has separate NDELAY & NONBLOCK */
 | 
				
			||||||
 | 
					+#define EFD_NONBLOCK EFD_NONBLOCK
 | 
				
			||||||
 | 
					+  };
 | 
				
			||||||
 | 
					diff --git a/libc/sysdeps/linux/mips/bits/eventfd.h b/libc/sysdeps/linux/mips/bits/eventfd.h
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					index 0000000..17b2f46
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/libc/sysdeps/linux/mips/bits/eventfd.h
 | 
				
			||||||
 | 
					@@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					+/* 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
 | 
				
			||||||
 | 
					+   modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
 | 
					+   License as published by the Free Software Foundation; either
 | 
				
			||||||
 | 
					+   version 2.1 of the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+   The GNU C Library is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
				
			||||||
 | 
					+   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
 | 
				
			||||||
 | 
					+   <http://www.gnu.org/licenses/>.  */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#ifndef	_SYS_EVENTFD_H
 | 
				
			||||||
 | 
					+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+/* Flags for eventfd.  */
 | 
				
			||||||
 | 
					+enum
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    EFD_SEMAPHORE = 00000001,
 | 
				
			||||||
 | 
					+#define EFD_SEMAPHORE EFD_SEMAPHORE
 | 
				
			||||||
 | 
					+    EFD_CLOEXEC = 02000000,
 | 
				
			||||||
 | 
					+#define EFD_CLOEXEC EFD_CLOEXEC
 | 
				
			||||||
 | 
					+    EFD_NONBLOCK = 00000200
 | 
				
			||||||
 | 
					+#define EFD_NONBLOCK EFD_NONBLOCK
 | 
				
			||||||
 | 
					+  };
 | 
				
			||||||
 | 
					diff --git a/libc/sysdeps/linux/sparc/bits/eventfd.h b/libc/sysdeps/linux/sparc/bits/eventfd.h
 | 
				
			||||||
 | 
					new file mode 100644
 | 
				
			||||||
 | 
					index 0000000..bed9f09
 | 
				
			||||||
 | 
					--- /dev/null
 | 
				
			||||||
 | 
					+++ b/libc/sysdeps/linux/sparc/bits/eventfd.h
 | 
				
			||||||
 | 
					@@ -0,0 +1,31 @@
 | 
				
			||||||
 | 
					+/* 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
 | 
				
			||||||
 | 
					+   modify it under the terms of the GNU Lesser General Public
 | 
				
			||||||
 | 
					+   License as published by the Free Software Foundation; either
 | 
				
			||||||
 | 
					+   version 2.1 of the License, or (at your option) any later version.
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+   The GNU C Library is distributed in the hope that it will be useful,
 | 
				
			||||||
 | 
					+   but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
				
			||||||
 | 
					+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
				
			||||||
 | 
					+   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
 | 
				
			||||||
 | 
					+   <http://www.gnu.org/licenses/>.  */
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+#ifndef	_SYS_EVENTFD_H
 | 
				
			||||||
 | 
					+# error "Never use <bits/eventfd.h> directly; include <sys/eventfd.h> instead."
 | 
				
			||||||
 | 
					+#endif
 | 
				
			||||||
 | 
					+
 | 
				
			||||||
 | 
					+/* Flags for eventfd.  */
 | 
				
			||||||
 | 
					+enum
 | 
				
			||||||
 | 
					+  {
 | 
				
			||||||
 | 
					+    EFD_SEMAPHORE = 1,
 | 
				
			||||||
 | 
					+#define EFD_SEMAPHORE EFD_SEMAPHORE
 | 
				
			||||||
 | 
					+    EFD_CLOEXEC = 0x400000,
 | 
				
			||||||
 | 
					+#define EFD_CLOEXEC EFD_CLOEXEC
 | 
				
			||||||
 | 
					+    EFD_NONBLOCK = 0x004000
 | 
				
			||||||
 | 
					+#define EFD_NONBLOCK EFD_NONBLOCK
 | 
				
			||||||
 | 
					+  };
 | 
				
			||||||
 | 
					--
 | 
				
			||||||
 | 
					cgit v0.9.1
 | 
				
			||||||
		Reference in New Issue
	
	Block a user