mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	
		
			
				
	
	
		
			249 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			249 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
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>
 | 
						|
---
 | 
						|
--- a/Makefile.in
 | 
						|
+++ b/Makefile.in
 | 
						|
@@ -272,6 +272,7 @@ HEADERS_RM-$(UCLIBC_HAS_XATTR)          
 | 
						|
 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 \
 | 
						|
--- /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
 | 
						|
+  };
 | 
						|
--- /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
 | 
						|
+  };
 | 
						|
--- 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 */
 | 
						|
--- /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
 | 
						|
+  };
 | 
						|
--- /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
 | 
						|
+  };
 | 
						|
--- /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
 | 
						|
+  };
 |