On 24/10/2011 19.07, j...@eclis.ch wrote: > From: Jean-Christian de Rivaz <j...@eclis.ch> > > Hello, > > I whould like to share this simple patch that add the eventfd call to > uClibc. Please review so it can be accepted to be merged. > > Jean-Christian > > Signed-off-by: Jean-Christian de Rivaz <j...@eclis.ch> > --- > libc/sysdeps/linux/common/Makefile.in | 3 +- > libc/sysdeps/linux/common/eventfd.c | 18 +++++++++++ > libc/sysdeps/linux/common/sys/eventfd.h | 48 > +++++++++++++++++++++++++++++++ > 3 files changed, 68 insertions(+), 1 deletions(-) > create mode 100644 libc/sysdeps/linux/common/eventfd.c > create mode 100644 libc/sysdeps/linux/common/sys/eventfd.h > > diff --git a/libc/sysdeps/linux/common/Makefile.in > b/libc/sysdeps/linux/common/Makefile.in > index 8f936ff..63f3f6f 100644 > --- a/libc/sysdeps/linux/common/Makefile.in > +++ b/libc/sysdeps/linux/common/Makefile.in > @@ -24,7 +24,8 @@ CSRC-$(UCLIBC_LINUX_SPECIFIC) += capget.c capset.c > inotify.c ioperm.c iopl.c \ > remap_file_pages.c sched_getaffinity.c sched_setaffinity.c \ > sendfile64.c sendfile.c setfsgid.c setfsuid.c setresuid.c \ > splice.c vmsplice.c tee.c signalfd.c swapoff.c swapon.c \ > - sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c > + sync_file_range.c sysctl.c sysinfo.c eventfd.c timerfd.c uselib.c \ > + vhangup.c > # NPTL needs these internally: madvise.c > CSRC-$(findstring y,$(UCLIBC_LINUX_SPECIFIC)$(UCLIBC_HAS_THREADS_NATIVE)) += > madvise.c > ifeq ($(UCLIBC_HAS_THREADS_NATIVE),y) > diff --git a/libc/sysdeps/linux/common/eventfd.c > b/libc/sysdeps/linux/common/eventfd.c > new file mode 100644 > index 0000000..cc3f3f0 > --- /dev/null > +++ b/libc/sysdeps/linux/common/eventfd.c > @@ -0,0 +1,18 @@ > +/* vi: set sw=4 ts=4: */ > +/* > + * eventfd() for uClibc > + * > + * Copyright (C) 2011 Jean-Christian de Rivaz <j...@eclis.ch> > + * > + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. > + */ > + > +#include <sys/syscall.h> > +#include <sys/eventfd.h> > + > +/* > + * eventfd() > + */ > +#ifdef __NR_eventfd > +_syscall2(int, eventfd, int, count, int, flags) > +#endif > diff --git a/libc/sysdeps/linux/common/sys/eventfd.h > b/libc/sysdeps/linux/common/sys/eventfd.h > new file mode 100644 > index 0000000..311f803 > --- /dev/null > +++ b/libc/sysdeps/linux/common/sys/eventfd.h > @@ -0,0 +1,48 @@ > +/* Copyright (C) 2007, 2008, 2009 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, write to the Free > + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA > + 02111-1307 USA. */ > + > +#ifndef _SYS_EVENTFD_H > +#define _SYS_EVENTFD_H 1 > + > +#include <stdint.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 > + > +/* Return file descriptor for generic event channel. Set initial > + value to COUNT. */ > +extern int eventfd (int __count, int __flags) __THROW; > + > +__END_DECLS > + > +#endif /* sys/eventfd.h */
Looks fine, even if it could take into account the availability of eventfd2 syscall to implement the wrapper. Applied, thanks. Carmelo _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc