posix-clocks: Rename the clock_get() callback to clock_get_timespec()

The upcoming support for time namespaces requires to have access to:

 - The time in a task's time namespace for sys_clock_gettime()
 - The time in the root name space for common_timer_get()

That adds a valid reason to finally implement a separate callback which
returns the time in ktime_t format, rather than in (struct timespec).

Rename the clock_get() callback to clock_get_timespec() as a preparation
for introducing clock_get_ktime().

Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Co-developed-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Andrei Vagin <avagin@gmail.com>
Signed-off-by: Dmitry Safonov <dima@arista.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/r/20191112012724.250792-6-dima@arista.com
This commit is contained in:
Andrei Vagin 2019-11-12 01:26:54 +00:00 committed by Thomas Gleixner
parent af993f58d6
commit 819a95fe3a
5 changed files with 35 additions and 35 deletions

View File

@ -657,7 +657,7 @@ static int alarm_clock_getres(const clockid_t which_clock, struct timespec64 *tp
} }
/** /**
* alarm_clock_get - posix clock_get interface * alarm_clock_get - posix clock_get_timespec interface
* @which_clock: clockid * @which_clock: clockid
* @tp: timespec to fill. * @tp: timespec to fill.
* *
@ -837,7 +837,7 @@ static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
const struct k_clock alarm_clock = { const struct k_clock alarm_clock = {
.clock_getres = alarm_clock_getres, .clock_getres = alarm_clock_getres,
.clock_get = alarm_clock_get, .clock_get_timespec = alarm_clock_get,
.timer_create = alarm_timer_create, .timer_create = alarm_timer_create,
.timer_set = common_timer_set, .timer_set = common_timer_set,
.timer_del = common_timer_del, .timer_del = common_timer_del,

View File

@ -310,8 +310,8 @@ static int pc_clock_settime(clockid_t id, const struct timespec64 *ts)
} }
const struct k_clock clock_posix_dynamic = { const struct k_clock clock_posix_dynamic = {
.clock_getres = pc_clock_getres, .clock_getres = pc_clock_getres,
.clock_set = pc_clock_settime, .clock_set = pc_clock_settime,
.clock_get = pc_clock_gettime, .clock_get_timespec = pc_clock_gettime,
.clock_adj = pc_clock_adjtime, .clock_adj = pc_clock_adjtime,
}; };

View File

@ -1391,26 +1391,26 @@ static int thread_cpu_timer_create(struct k_itimer *timer)
} }
const struct k_clock clock_posix_cpu = { const struct k_clock clock_posix_cpu = {
.clock_getres = posix_cpu_clock_getres, .clock_getres = posix_cpu_clock_getres,
.clock_set = posix_cpu_clock_set, .clock_set = posix_cpu_clock_set,
.clock_get = posix_cpu_clock_get, .clock_get_timespec = posix_cpu_clock_get,
.timer_create = posix_cpu_timer_create, .timer_create = posix_cpu_timer_create,
.nsleep = posix_cpu_nsleep, .nsleep = posix_cpu_nsleep,
.timer_set = posix_cpu_timer_set, .timer_set = posix_cpu_timer_set,
.timer_del = posix_cpu_timer_del, .timer_del = posix_cpu_timer_del,
.timer_get = posix_cpu_timer_get, .timer_get = posix_cpu_timer_get,
.timer_rearm = posix_cpu_timer_rearm, .timer_rearm = posix_cpu_timer_rearm,
}; };
const struct k_clock clock_process = { const struct k_clock clock_process = {
.clock_getres = process_cpu_clock_getres, .clock_getres = process_cpu_clock_getres,
.clock_get = process_cpu_clock_get, .clock_get_timespec = process_cpu_clock_get,
.timer_create = process_cpu_timer_create, .timer_create = process_cpu_timer_create,
.nsleep = process_cpu_nsleep, .nsleep = process_cpu_nsleep,
}; };
const struct k_clock clock_thread = { const struct k_clock clock_thread = {
.clock_getres = thread_cpu_clock_getres, .clock_getres = thread_cpu_clock_getres,
.clock_get = thread_cpu_clock_get, .clock_get_timespec = thread_cpu_clock_get,
.timer_create = thread_cpu_timer_create, .timer_create = thread_cpu_timer_create,
}; };

View File

@ -667,7 +667,7 @@ void common_timer_get(struct k_itimer *timr, struct itimerspec64 *cur_setting)
* The timespec64 based conversion is suboptimal, but it's not * The timespec64 based conversion is suboptimal, but it's not
* worth to implement yet another callback. * worth to implement yet another callback.
*/ */
kc->clock_get(timr->it_clock, &ts64); kc->clock_get_timespec(timr->it_clock, &ts64);
now = timespec64_to_ktime(ts64); now = timespec64_to_ktime(ts64);
/* /*
@ -781,7 +781,7 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires,
* Posix magic: Relative CLOCK_REALTIME timers are not affected by * Posix magic: Relative CLOCK_REALTIME timers are not affected by
* clock modifications, so they become CLOCK_MONOTONIC based under the * clock modifications, so they become CLOCK_MONOTONIC based under the
* hood. See hrtimer_init(). Update timr->kclock, so the generic * hood. See hrtimer_init(). Update timr->kclock, so the generic
* functions which use timr->kclock->clock_get() work. * functions which use timr->kclock->clock_get_timespec() work.
* *
* Note: it_clock stays unmodified, because the next timer_set() might * Note: it_clock stays unmodified, because the next timer_set() might
* use ABSTIME, so it needs to switch back. * use ABSTIME, so it needs to switch back.
@ -1067,7 +1067,7 @@ SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,
if (!kc) if (!kc)
return -EINVAL; return -EINVAL;
error = kc->clock_get(which_clock, &kernel_tp); error = kc->clock_get_timespec(which_clock, &kernel_tp);
if (!error && put_timespec64(&kernel_tp, tp)) if (!error && put_timespec64(&kernel_tp, tp))
error = -EFAULT; error = -EFAULT;
@ -1149,7 +1149,7 @@ SYSCALL_DEFINE2(clock_gettime32, clockid_t, which_clock,
if (!kc) if (!kc)
return -EINVAL; return -EINVAL;
err = kc->clock_get(which_clock, &ts); err = kc->clock_get_timespec(which_clock, &ts);
if (!err && put_old_timespec32(&ts, tp)) if (!err && put_old_timespec32(&ts, tp))
err = -EFAULT; err = -EFAULT;
@ -1261,7 +1261,7 @@ SYSCALL_DEFINE4(clock_nanosleep_time32, clockid_t, which_clock, int, flags,
static const struct k_clock clock_realtime = { static const struct k_clock clock_realtime = {
.clock_getres = posix_get_hrtimer_res, .clock_getres = posix_get_hrtimer_res,
.clock_get = posix_clock_realtime_get, .clock_get_timespec = posix_clock_realtime_get,
.clock_set = posix_clock_realtime_set, .clock_set = posix_clock_realtime_set,
.clock_adj = posix_clock_realtime_adj, .clock_adj = posix_clock_realtime_adj,
.nsleep = common_nsleep, .nsleep = common_nsleep,
@ -1279,7 +1279,7 @@ static const struct k_clock clock_realtime = {
static const struct k_clock clock_monotonic = { static const struct k_clock clock_monotonic = {
.clock_getres = posix_get_hrtimer_res, .clock_getres = posix_get_hrtimer_res,
.clock_get = posix_ktime_get_ts, .clock_get_timespec = posix_ktime_get_ts,
.nsleep = common_nsleep, .nsleep = common_nsleep,
.timer_create = common_timer_create, .timer_create = common_timer_create,
.timer_set = common_timer_set, .timer_set = common_timer_set,
@ -1295,22 +1295,22 @@ static const struct k_clock clock_monotonic = {
static const struct k_clock clock_monotonic_raw = { static const struct k_clock clock_monotonic_raw = {
.clock_getres = posix_get_hrtimer_res, .clock_getres = posix_get_hrtimer_res,
.clock_get = posix_get_monotonic_raw, .clock_get_timespec = posix_get_monotonic_raw,
}; };
static const struct k_clock clock_realtime_coarse = { static const struct k_clock clock_realtime_coarse = {
.clock_getres = posix_get_coarse_res, .clock_getres = posix_get_coarse_res,
.clock_get = posix_get_realtime_coarse, .clock_get_timespec = posix_get_realtime_coarse,
}; };
static const struct k_clock clock_monotonic_coarse = { static const struct k_clock clock_monotonic_coarse = {
.clock_getres = posix_get_coarse_res, .clock_getres = posix_get_coarse_res,
.clock_get = posix_get_monotonic_coarse, .clock_get_timespec = posix_get_monotonic_coarse,
}; };
static const struct k_clock clock_tai = { static const struct k_clock clock_tai = {
.clock_getres = posix_get_hrtimer_res, .clock_getres = posix_get_hrtimer_res,
.clock_get = posix_get_tai, .clock_get_timespec = posix_get_tai,
.nsleep = common_nsleep, .nsleep = common_nsleep,
.timer_create = common_timer_create, .timer_create = common_timer_create,
.timer_set = common_timer_set, .timer_set = common_timer_set,
@ -1326,7 +1326,7 @@ static const struct k_clock clock_tai = {
static const struct k_clock clock_boottime = { static const struct k_clock clock_boottime = {
.clock_getres = posix_get_hrtimer_res, .clock_getres = posix_get_hrtimer_res,
.clock_get = posix_get_boottime, .clock_get_timespec = posix_get_boottime,
.nsleep = common_nsleep, .nsleep = common_nsleep,
.timer_create = common_timer_create, .timer_create = common_timer_create,
.timer_set = common_timer_set, .timer_set = common_timer_set,

View File

@ -6,8 +6,8 @@ struct k_clock {
struct timespec64 *tp); struct timespec64 *tp);
int (*clock_set)(const clockid_t which_clock, int (*clock_set)(const clockid_t which_clock,
const struct timespec64 *tp); const struct timespec64 *tp);
int (*clock_get)(const clockid_t which_clock, int (*clock_get_timespec)(const clockid_t which_clock,
struct timespec64 *tp); struct timespec64 *tp);
int (*clock_adj)(const clockid_t which_clock, struct __kernel_timex *tx); int (*clock_adj)(const clockid_t which_clock, struct __kernel_timex *tx);
int (*timer_create)(struct k_itimer *timer); int (*timer_create)(struct k_itimer *timer);
int (*nsleep)(const clockid_t which_clock, int flags, int (*nsleep)(const clockid_t which_clock, int flags,