| From c1a78badec59b1ebd303ace8257ca86fa1e14acb Mon Sep 17 00:00:00 2001 |
| From: Hiroaki KAWAI <kawai@stratosphere.co.jp> |
| Date: Fri, 19 Apr 2013 10:09:35 +0900 |
| Subject: [PATCH-0.9.33] 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> |
| --- |
| Makefile.in | 1 + |
| libc/sysdeps/linux/alpha/bits/eventfd.h | 31 +++++++++++++++++++++++++++++++ |
| libc/sysdeps/linux/common/bits/eventfd.h | 31 +++++++++++++++++++++++++++++++ |
| libc/sysdeps/linux/common/sys/eventfd.h | 25 +++++++++++++------------ |
| libc/sysdeps/linux/hppa/bits/eventfd.h | 32 ++++++++++++++++++++++++++++++++ |
| libc/sysdeps/linux/mips/bits/eventfd.h | 31 +++++++++++++++++++++++++++++++ |
| libc/sysdeps/linux/sparc/bits/eventfd.h | 31 +++++++++++++++++++++++++++++++ |
| 7 files changed, 170 insertions(+), 12 deletions(-) |
| create mode 100644 libc/sysdeps/linux/alpha/bits/eventfd.h |
| create mode 100644 libc/sysdeps/linux/common/bits/eventfd.h |
| create mode 100644 libc/sysdeps/linux/hppa/bits/eventfd.h |
| create mode 100644 libc/sysdeps/linux/mips/bits/eventfd.h |
| create mode 100644 libc/sysdeps/linux/sparc/bits/eventfd.h |
| |
| diff --git a/Makefile.in b/Makefile.in |
| index 9ba590d..633358f 100644 |
| --- a/Makefile.in |
| +++ b/Makefile.in |
| @@ -271,6 +271,7 @@ HEADERS_RM-$(UCLIBC_HAS_WORDEXP) += wordexp.h |
| 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/eventfd.h \ |
| bits/inotify.h \ |
| sys/inotify.h \ |
| sys/kdaemon.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 311f803..8686355 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 |
| + }; |
| -- |
| 1.8.1.2 |
| |