Davide Libenzi
4d672e7ac7
timerfd: new timerfd API
...
This is the new timerfd API as it is implemented by the following patch:
int timerfd_create(int clockid, int flags);
int timerfd_settime(int ufd, int flags,
const struct itimerspec *utmr,
struct itimerspec *otmr);
int timerfd_gettime(int ufd, struct itimerspec *otmr);
The timerfd_create() API creates an un-programmed timerfd fd. The "clockid"
parameter can be either CLOCK_MONOTONIC or CLOCK_REALTIME.
The timerfd_settime() API give new settings by the timerfd fd, by optionally
retrieving the previous expiration time (in case the "otmr" parameter is not
NULL).
The time value specified in "utmr" is absolute, if the TFD_TIMER_ABSTIME bit
is set in the "flags" parameter. Otherwise it's a relative time.
The timerfd_gettime() API returns the next expiration time of the timer, or
{0, 0} if the timerfd has not been set yet.
Like the previous timerfd API implementation, read(2) and poll(2) are
supported (with the same interface). Here's a simple test program I used to
exercise the new timerfd APIs:
http://www.xmailserver.org/timerfd-test2.c
[akpm@linux-foundation.org: coding-style cleanups]
[akpm@linux-foundation.org: fix ia64 build]
[akpm@linux-foundation.org: fix m68k build]
[akpm@linux-foundation.org: fix mips build]
[akpm@linux-foundation.org: fix alpha, arm, blackfin, cris, m68k, s390, sparc and sparc64 builds]
[heiko.carstens@de.ibm.com: fix s390]
[akpm@linux-foundation.org: fix powerpc build]
[akpm@linux-foundation.org: fix sparc64 more]
Signed-off-by: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Davide Libenzi <davidel@xmailserver.org>
Cc: Michael Kerrisk <mtk-manpages@gmx.net>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Michael Kerrisk <mtk.manpages@gmail.com>
Cc: Davide Libenzi <davidel@xmailserver.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2008-02-05 09:44:07 -08:00
..
irq
genirq: stackdump after the "Trying to free already-free IRQ" message
2008-01-30 13:33:24 +01:00
power
Hibernation: Invoke suspend notifications after console switch
2008-02-01 18:30:59 -05:00
time
tick-sched: add more debug information
2008-02-01 17:45:14 +01:00
.gitignore
acct.c
acct: real_parent ppid
2008-01-07 14:55:37 -08:00
audit.c
[AUDIT] ratelimit printk messages audit
2008-02-01 14:25:04 -05:00
audit.h
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
audit_tree.c
[PATCH] audit: watching subtrees
2007-10-21 02:37:45 -04:00
auditfilter.c
[AUDIT] make audit=0 really stop audit messages
2008-02-01 14:24:33 -05:00
auditsc.c
[AUDIT] create context if auditing was ever enabled
2008-02-01 14:24:45 -05:00
backtracetest.c
x86: add a simple backtrace test module
2008-01-30 13:33:08 +01:00
capability.c
Uninline find_pid etc set of functions
2007-10-19 11:53:41 -07:00
cgroup.c
Improve cgroup printks
2007-11-14 18:45:37 -08:00
cgroup_debug.c
Task Control Groups: simple task cgroup debug info subsystem
2007-10-19 11:53:36 -07:00
compat.c
Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/tglx/linux-2.6-hrt
2007-10-18 15:12:41 -07:00
configs.c
cpu.c
cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()
2008-01-25 21:08:02 +01:00
cpuset.c
cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()
2008-01-25 21:08:02 +01:00
delayacct.c
Add scaled time to taskstats based process accounting
2007-10-18 14:37:28 -07:00
dma.c
exec_domain.c
whitespace fixes: execution domains
2007-10-18 14:37:26 -07:00
exit.c
exec: rework the group exit and fix the race with kill
2008-02-05 09:44:07 -08:00
extable.c
module: Don't report discarded init pages as kernel text.
2008-01-29 17:13:18 +11:00
fork.c
clone: prepare to recycle CLONE_STOPPED
2008-02-05 09:44:07 -08:00
futex.c
futex: Add bitset conditional wait/wakeup functionality
2008-02-01 17:45:14 +01:00
futex_compat.c
futex: Add bitset conditional wait/wakeup functionality
2008-02-01 17:45:14 +01:00
hrtimer.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
itimer.c
whitespace fixes: interval timers
2007-10-18 14:37:26 -07:00
kallsyms.c
module: make module_address_lookup safe
2008-01-29 17:13:23 +11:00
Kconfig.hz
sched: high-res preemption tick
2008-01-25 21:08:29 +01:00
Kconfig.preempt
sched: remove the !PREEMPT_BKL code
2008-01-25 21:08:33 +01:00
kexec.c
vmcoreinfo: add the array length of "free_list" for filtering free pages
2008-01-08 16:10:36 -08:00
kfifo.c
kmod.c
Fix unbalanced helper_lock in kernel/kmod.c
2008-01-17 15:38:59 -08:00
kprobes.c
x86: kprobes: add kprobes smoke tests that run on boot
2008-01-30 13:32:53 +01:00
ksysfs.c
Kobject: convert remaining kobject_unregister() to kobject_put()
2008-01-24 20:40:40 -08:00
kthread.c
sched: fix, always create kernel threads with normal priority
2008-01-25 21:08:33 +01:00
latency.c
latencytop.c
sched: latencytop support
2008-01-25 21:08:34 +01:00
lockdep.c
softlockup: automatically detect hung TASK_UNINTERRUPTIBLE tasks
2008-01-25 21:08:02 +01:00
lockdep_internals.h
lockdep_proc.c
Makefile
kobject: Always build in kernel/ksysfs.o.
2008-02-02 15:14:46 -08:00
marker.c
Linux Kernel Markers: fix marker mutex not taken upon module load
2007-11-14 18:45:40 -08:00
module.c
x86/non-x86: percpu, node ids, apic ids x86.git fixup
2008-01-30 13:33:32 +01:00
mutex-debug.c
mutex-debug.h
mutex.c
Add mutex_lock_killable
2007-12-06 17:37:59 -05:00
mutex.h
notifier.c
Add kernel/notifier.c
2007-10-19 11:53:34 -07:00
ns_cgroup.c
cgroups: implement namespace tracking subsystem
2007-10-19 11:53:37 -07:00
nsproxy.c
pid namespaces: allow cloning of new namespace
2007-10-19 11:53:39 -07:00
panic.c
debug: add the end-of-trace marker and the module list to
2008-01-30 13:32:50 +01:00
params.c
module: fix the module name length in param_sysfs_builtin
2008-01-29 17:13:24 +11:00
pid.c
pidns: Place under CONFIG_EXPERIMENTAL
2007-11-14 18:45:43 -08:00
posix-cpu-timers.c
sched: rt-watchdog: fix .rlim_max = RLIM_INFINITY
2008-01-25 21:08:32 +01:00
posix-timers.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
printk.c
debug: turn ignore_loglevel into an early param
2008-01-31 22:45:23 +01:00
profile.c
debug: clean up kernel/profile.c
2008-01-25 21:08:33 +01:00
ptrace.c
Merge branch 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc
2008-02-01 11:45:47 +11:00
rcuclassic.c
Preempt-RCU: implementation
2008-01-25 21:08:24 +01:00
rcupdate.c
Preempt-RCU: fix rcu_barrier for preemptive environment.
2008-01-25 21:08:24 +01:00
rcupreempt.c
Preempt-RCU: CPU Hotplug handling
2008-01-25 21:08:25 +01:00
rcupreempt_trace.c
Preempt-RCU: implementation
2008-01-25 21:08:24 +01:00
rcutorture.c
cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()
2008-01-25 21:08:02 +01:00
relay.c
vm audit: add VM_DONTEXPAND to mmap for drivers that need it
2008-02-04 07:55:38 -08:00
resource.c
Add IORESOUCE_BUSY flag for System RAM
2007-11-14 18:45:39 -08:00
rtmutex-debug.c
Use helpers to obtain task pid in printks
2007-10-19 11:53:43 -07:00
rtmutex-debug.h
rtmutex-tester.c
Driver core: change sysdev classes to use dynamic kobject names
2008-01-24 20:40:40 -08:00
rtmutex.c
Use helpers to obtain task pid in printks
2007-10-19 11:53:43 -07:00
rtmutex.h
rtmutex_common.h
rwsem.c
sched: mark rwsem functions as __sched for wchan/profiling
2007-12-18 15:21:13 +01:00
sched.c
Merge branch 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc
2008-02-01 11:45:47 +11:00
sched_debug.c
sched: keep total / count stats in addition to the max for
2008-01-25 21:08:35 +01:00
sched_fair.c
sched: let +nice tasks have smaller impact
2008-01-31 22:45:22 +01:00
sched_idletask.c
sched: high-res preemption tick
2008-01-25 21:08:29 +01:00
sched_rt.c
sched: fix goto retry in pick_next_task_rt()
2008-01-25 21:08:34 +01:00
sched_stats.h
sched: clean up kernel/sched_stat.h
2007-11-28 15:52:56 +01:00
seccomp.c
signal.c
exec: rework the group exit and fix the race with kill
2008-02-05 09:44:07 -08:00
softirq.c
time: track accurate idle time with tick_sched.idle_sleeptime
2008-01-30 13:30:04 +01:00
softlockup.c
debug: softlockup looping fix
2008-02-02 14:27:45 +11:00
spinlock.c
spinlock: lockbreak cleanup
2008-01-30 13:31:20 +01:00
srcu.c
stacktrace.c
stop_machine.c
cpu-hotplug: replace lock_cpu_hotplug() with get_online_cpus()
2008-01-25 21:08:02 +01:00
sys.c
x86: ignore the sys_getcpu() tcache parameter
2007-11-17 16:27:00 +01:00
sys_ni.c
timerfd: new timerfd API
2008-02-05 09:44:07 -08:00
sysctl.c
[AUDIT] break large execve argument logging into smaller messages
2008-02-01 14:23:55 -05:00
sysctl_check.c
sysctl: Infrastructure for per namespace sysctls
2008-01-28 14:55:17 -08:00
taskstats.c
kernel/taskstats.c: fix bogus nlmsg_free()
2007-11-14 18:45:44 -08:00
test_kprobes.c
x86: kprobes: add kprobes smoke tests that run on boot
2008-01-30 13:32:53 +01:00
time.c
timekeeping: update xtime_cache when time(zone) changes
2008-02-01 17:45:13 +01:00
timer.c
Merge branch 'task_killable' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc
2008-02-01 11:45:47 +11:00
tsacct.c
Add scaled time to taskstats based process accounting
2007-10-18 14:37:28 -07:00
uid16.c
user.c
uids: merge multiple error paths in alloc_uid() into one
2008-01-25 21:08:26 +01:00
user_namespace.c
utsname.c
utsname_sysctl.c
Isolate the UTS namespace's domainname and hostname back
2007-11-29 09:24:53 -08:00
wait.c
wait: Use TASK_NORMAL
2007-12-06 17:34:36 -05:00
workqueue.c
cpu-hotplug: replace per-subsystem mutexes with get_online_cpus()
2008-01-25 21:08:02 +01:00