diff options
Diffstat (limited to 'libc/sysdeps/linux')
| -rw-r--r-- | libc/sysdeps/linux/common/Makefile.in | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/sys/timerfd.h | 60 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/timerfd.c | 32 | 
3 files changed, 93 insertions, 1 deletions
| diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in index fbb57298e..788571e3f 100644 --- a/libc/sysdeps/linux/common/Makefile.in +++ b/libc/sysdeps/linux/common/Makefile.in @@ -31,7 +31,7 @@ CSRC := $(filter-out capget.c capset.c inotify.c ioperm.c iopl.c madvise.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 uselib.c vhangup.c,$(CSRC)) +	sync_file_range.c sysctl.c sysinfo.c timerfd.c uselib.c vhangup.c,$(CSRC))  endif  ifneq ($(UCLIBC_BSD_SPECIFIC),y) diff --git a/libc/sysdeps/linux/common/sys/timerfd.h b/libc/sysdeps/linux/common/sys/timerfd.h new file mode 100644 index 000000000..c1bb06f5f --- /dev/null +++ b/libc/sysdeps/linux/common/sys/timerfd.h @@ -0,0 +1,60 @@ +/* Copyright (C) 2008 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_TIMERFD_H +#define	_SYS_TIMERFD_H	1 + +#include <time.h> + + +/* Bits to be set in the FLAGS parameter of `timerfd_create'.  */ +enum +  { +    TFD_CLOEXEC = 02000000, +#define TFD_CLOEXEC TFD_CLOEXEC +    TFD_NONBLOCK = 04000 +#define TFD_NONBLOCK TFD_NONBLOCK +  }; + + +/* Bits to be set in the FLAGS parameter of `timerfd_settime'.  */ +enum +  { +    TFD_TIMER_ABSTIME = 1 << 0 +#define TFD_TIMER_ABSTIME TFD_TIMER_ABSTIME +  }; + + +__BEGIN_DECLS + +/* Return file descriptor for new interval timer source.  */ +extern int timerfd_create (clockid_t __clock_id, int __flags) __THROW; + +/* Set next expiration time of interval timer source UFD to UTMR.  If +   FLAGS has the TFD_TIMER_ABSTIME flag set the timeout value is +   absolute.  Optionally return the old expiration time in OTMR.  */ +extern int timerfd_settime (int __ufd, int __flags, +			    __const struct itimerspec *__utmr, +			    struct itimerspec *__otmr) __THROW; + +/* Return the next expiration time of UFD.  */ +extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW; + +__END_DECLS + +#endif /* sys/timerfd.h */ diff --git a/libc/sysdeps/linux/common/timerfd.c b/libc/sysdeps/linux/common/timerfd.c new file mode 100644 index 000000000..233204480 --- /dev/null +++ b/libc/sysdeps/linux/common/timerfd.c @@ -0,0 +1,32 @@ +/* vi: set sw=4 ts=4: */ +/* + * timerfd_create() / timerfd_settime() / timerfd_gettime() for uClibc + * + * Copyright (C) 2009 Stephan Raue <stephan@openelec.tv> + * + * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. + */ + +#include <sys/syscall.h> +#include <sys/timerfd.h> + +/* + * timerfd_create() + */ +#ifdef __NR_timerfd_create +_syscall2(int, timerfd_create, int, clockid, int, flags) +#endif + +/* + * timerfd_settime() + */ +#ifdef __NR_timerfd_settime +_syscall4(int,timerfd_settime, int, ufd, int, flags, const struct itimerspec *, utmr, struct itimerspec *, otmr) +#endif + +/* + * timerfd_gettime() + */ +#ifdef __NR_timerfd_gettime +_syscall2(int, timerfd_gettime, int, ufd, struct itimerspec *, otmr) +#endif | 
