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 <t...@linutronix.de>
---
 include/linux/posix-timers.h |   36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

--- a/include/linux/posix-timers.h
+++ b/include/linux/posix-timers.h
@@ -101,23 +101,27 @@ struct k_itimer {
        } it;
 };
 
-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);
 #define TIMER_RETRY 1
-       void (*timer_get) (struct k_itimer *timr,
-                          struct itimerspec64 *cur_setting);
+
+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);
+       void    (*timer_rearm)(struct k_itimer *timr);
 };
 
 void run_posix_cpu_timers(struct task_struct *task);


Reply via email to