[PATCH 1/1] Add eventfd support.
Carmelo AMOROSO
carmelo.amoroso at st.com
Mon Oct 31 06:03:04 UTC 2011
On 24/10/2011 19.07, jc at eclis.ch wrote:
> From: Jean-Christian de Rivaz <jc at 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 <jc at 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 <jc at 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
More information about the uClibc
mailing list