posix-timers: Add timer_rearm() callback
authorThomas Gleixner <tglx@linutronix.de>
Tue, 30 May 2017 21:15:45 +0000 (23:15 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Sun, 4 Jun 2017 13:40:25 +0000 (15:40 +0200)
Add a timer_rearm() callback which is used to make the rescheduling of
posix interval timers independent of the underlying clock implementation.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: John Stultz <john.stultz@linaro.org>
Link: http://lkml.kernel.org/r/20170530211656.732632167@linutronix.de
kernel/time/posix-timers.h

index ad2dbd2..02ffd1b 100644 (file)
@@ -1,21 +1,24 @@
 #define TIMER_RETRY 1
 
 struct k_clock {
-       int (*clock_getres) (const clockid_t which_clock, struct timespec64 *tp);
-       int (*clock_set) (const clockid_t which_clock,
-                         const struct timespec64 *tp);
-       int (*clock_get) (const clockid_t which_clock, struct timespec64 *tp);
-       int (*clock_adj) (const clockid_t which_clock, struct timex *tx);
-       int (*timer_create) (struct k_itimer *timer);
-       int (*nsleep) (const clockid_t which_clock, int flags,
-                      struct timespec64 *, struct timespec __user *);
-       long (*nsleep_restart) (struct restart_block *restart_block);
-       int (*timer_set) (struct k_itimer *timr, int flags,
-                         struct itimerspec64 *new_setting,
-                         struct itimerspec64 *old_setting);
-       int (*timer_del) (struct k_itimer *timr);
-       void (*timer_get) (struct k_itimer *timr,
-                          struct itimerspec64 *cur_setting);
+       int     (*clock_getres)(const clockid_t which_clock,
+                               struct timespec64 *tp);
+       int     (*clock_set)(const clockid_t which_clock,
+                            const struct timespec64 *tp);
+       int     (*clock_get)(const clockid_t which_clock,
+                            struct timespec64 *tp);
+       int     (*clock_adj)(const clockid_t which_clock, struct timex *tx);
+       int     (*timer_create)(struct k_itimer *timer);
+       int     (*nsleep)(const clockid_t which_clock, int flags,
+                         struct timespec64 *, struct timespec __user *);
+       long    (*nsleep_restart)(struct restart_block *restart_block);
+       int     (*timer_set)(struct k_itimer *timr, int flags,
+                            struct itimerspec64 *new_setting,
+                            struct itimerspec64 *old_setting);
+       int     (*timer_del)(struct k_itimer *timr);
+       void    (*timer_get)(struct k_itimer *timr,
+                            struct itimerspec64 *cur_setting);
+       void    (*timer_rearm)(struct k_itimer *timr);
 };
 
 extern const struct k_clock clock_posix_cpu;