lkml.org 
[lkml]   [2009]   [Feb]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[patch 2/2] timerfd extend clockid support
The following patch extends timerfd clockid support to cover the ones 
supported by timer_create().
It exports the invalid_clockid() function outside posix-timers.c to allow
timerfd to properly check input parameters.
Andrew, this is (eventually) .30 material, and do not take the patch
until you have Thomas sign off.
Thomas, timerfd uses core hrtimer functions for its tasks. By extending
the clockid support, I assume that the clockids other than CLOCK_MONOTONIC
and CLOCK_REALTIME, behaves the same from a hrtimer caller POV. Right?



Signed-off-by: Davide Libenzi <davidel@xmailserver.org>


- Davide


---
fs/timerfd.c | 3 +--
include/linux/posix-timers.h | 1 +
kernel/posix-timers.c | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)

Index: linux-2.6.mod/fs/timerfd.c
===================================================================
--- linux-2.6.mod.orig/fs/timerfd.c 2009-02-08 15:02:06.000000000 -0800
+++ linux-2.6.mod/fs/timerfd.c 2009-02-08 15:03:43.000000000 -0800
@@ -187,8 +187,7 @@ SYSCALL_DEFINE2(timerfd_create, int, clo
BUILD_BUG_ON(TFD_NONBLOCK != O_NONBLOCK);

if ((flags & ~TFD_CREATE_FLAGS) ||
- (clockid != CLOCK_MONOTONIC &&
- clockid != CLOCK_REALTIME))
+ invalid_clockid(clockid))
return -EINVAL;

ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
Index: linux-2.6.mod/include/linux/posix-timers.h
===================================================================
--- linux-2.6.mod.orig/include/linux/posix-timers.h 2009-02-08 15:02:06.000000000 -0800
+++ linux-2.6.mod/include/linux/posix-timers.h 2009-02-08 15:02:53.000000000 -0800
@@ -84,6 +84,7 @@ struct k_clock {
struct itimerspec * cur_setting);
};

+int invalid_clockid(const clockid_t which_clock);
void register_posix_clock(const clockid_t clock_id, struct k_clock *new_clock);

/* error handlers for timer_create, nanosleep and settime */
Index: linux-2.6.mod/kernel/posix-timers.c
===================================================================
--- linux-2.6.mod.orig/kernel/posix-timers.c 2009-02-08 15:02:06.000000000 -0800
+++ linux-2.6.mod/kernel/posix-timers.c 2009-02-08 15:02:53.000000000 -0800
@@ -205,7 +205,7 @@ static int no_timer_create(struct k_itim
/*
* Return nonzero if we know a priori this clockid_t value is bogus.
*/
-static inline int invalid_clockid(const clockid_t which_clock)
+int invalid_clockid(const clockid_t which_clock)
{
if (which_clock < 0) /* CPU clock, posix_cpu_* will check it */
return 0;

\
 
 \ /
  Last update: 2009-02-09 00:27    [W:0.057 / U:0.476 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site