mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	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:
		
							parent
							
								
									70def60b04
								
							
						
					
					
						commit
						70be73e153
					
				@ -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
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user