All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit] uclibc: add patch to fix arch specific eventfd defs
@ 2014-06-09  9:26 Thomas Petazzoni
  0 siblings, 0 replies; only message in thread
From: Thomas Petazzoni @ 2014-06-09  9:26 UTC (permalink / raw)
  To: buildroot

commit: http://git.buildroot.net/buildroot/commit/?id=d712a018dddbccf6f80e1ecfc3e08385d36bfebc
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Add uClibc 0.9.33.2 patch to fix arch specific eventfd definitions,
particularly EFD_NONBLOCK. The definition in sys/eventfd.h was 04000
(0x800), however MIPS uses 0200 (0x80). This resulted in QEMU built for
MIPS hanging at various points until input is received due to a blocking
poll of stdin.

The patch is a backport of uClibc commit fd355bc1dbcb (eventfd.h: Use
new "bits/" scheme for arch-specific flags). The only conflict was minor
in Makefile.in.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ...se-new-bits-scheme-for-arch-specific-flag.patch |  284 ++++++++++++++++++++
 1 files changed, 284 insertions(+), 0 deletions(-)

diff --git a/package/uclibc/0.9.33.2/uclibc-0055-Use-new-bits-scheme-for-arch-specific-flag.patch b/package/uclibc/0.9.33.2/uclibc-0055-Use-new-bits-scheme-for-arch-specific-flag.patch
new file mode 100644
index 0000000..3d966ff
--- /dev/null
+++ b/package/uclibc/0.9.33.2/uclibc-0055-Use-new-bits-scheme-for-arch-specific-flag.patch
@@ -0,0 +1,284 @@
+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
+

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2014-06-09  9:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-09  9:26 [Buildroot] [git commit] uclibc: add patch to fix arch specific eventfd defs Thomas Petazzoni

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.