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:
Родитель
af993f58d6
Коммит
819a95fe3a
|
@ -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
|
||||
* @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 = {
|
||||
.clock_getres = alarm_clock_getres,
|
||||
.clock_get = alarm_clock_get,
|
||||
.clock_get_timespec = alarm_clock_get,
|
||||
.timer_create = alarm_timer_create,
|
||||
.timer_set = common_timer_set,
|
||||
.timer_del = common_timer_del,
|
||||
|
|
|
@ -310,8 +310,8 @@ out:
|
|||
}
|
||||
|
||||
const struct k_clock clock_posix_dynamic = {
|
||||
.clock_getres = pc_clock_getres,
|
||||
.clock_set = pc_clock_settime,
|
||||
.clock_get = pc_clock_gettime,
|
||||
.clock_adj = pc_clock_adjtime,
|
||||
.clock_getres = pc_clock_getres,
|
||||
.clock_set = pc_clock_settime,
|
||||
.clock_get_timespec = pc_clock_gettime,
|
||||
.clock_adj = pc_clock_adjtime,
|
||||
};
|
||||
|
|
|
@ -1391,26 +1391,26 @@ static int thread_cpu_timer_create(struct k_itimer *timer)
|
|||
}
|
||||
|
||||
const struct k_clock clock_posix_cpu = {
|
||||
.clock_getres = posix_cpu_clock_getres,
|
||||
.clock_set = posix_cpu_clock_set,
|
||||
.clock_get = posix_cpu_clock_get,
|
||||
.timer_create = posix_cpu_timer_create,
|
||||
.nsleep = posix_cpu_nsleep,
|
||||
.timer_set = posix_cpu_timer_set,
|
||||
.timer_del = posix_cpu_timer_del,
|
||||
.timer_get = posix_cpu_timer_get,
|
||||
.timer_rearm = posix_cpu_timer_rearm,
|
||||
.clock_getres = posix_cpu_clock_getres,
|
||||
.clock_set = posix_cpu_clock_set,
|
||||
.clock_get_timespec = posix_cpu_clock_get,
|
||||
.timer_create = posix_cpu_timer_create,
|
||||
.nsleep = posix_cpu_nsleep,
|
||||
.timer_set = posix_cpu_timer_set,
|
||||
.timer_del = posix_cpu_timer_del,
|
||||
.timer_get = posix_cpu_timer_get,
|
||||
.timer_rearm = posix_cpu_timer_rearm,
|
||||
};
|
||||
|
||||
const struct k_clock clock_process = {
|
||||
.clock_getres = process_cpu_clock_getres,
|
||||
.clock_get = process_cpu_clock_get,
|
||||
.timer_create = process_cpu_timer_create,
|
||||
.nsleep = process_cpu_nsleep,
|
||||
.clock_getres = process_cpu_clock_getres,
|
||||
.clock_get_timespec = process_cpu_clock_get,
|
||||
.timer_create = process_cpu_timer_create,
|
||||
.nsleep = process_cpu_nsleep,
|
||||
};
|
||||
|
||||
const struct k_clock clock_thread = {
|
||||
.clock_getres = thread_cpu_clock_getres,
|
||||
.clock_get = thread_cpu_clock_get,
|
||||
.timer_create = thread_cpu_timer_create,
|
||||
.clock_getres = thread_cpu_clock_getres,
|
||||
.clock_get_timespec = thread_cpu_clock_get,
|
||||
.timer_create = thread_cpu_timer_create,
|
||||
};
|
||||
|
|
|
@ -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
|
||||
* 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);
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
* clock modifications, so they become CLOCK_MONOTONIC based under the
|
||||
* 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
|
||||
* use ABSTIME, so it needs to switch back.
|
||||
|
@ -1067,7 +1067,7 @@ SYSCALL_DEFINE2(clock_gettime, const clockid_t, which_clock,
|
|||
if (!kc)
|
||||
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))
|
||||
error = -EFAULT;
|
||||
|
@ -1149,7 +1149,7 @@ SYSCALL_DEFINE2(clock_gettime32, clockid_t, which_clock,
|
|||
if (!kc)
|
||||
return -EINVAL;
|
||||
|
||||
err = kc->clock_get(which_clock, &ts);
|
||||
err = kc->clock_get_timespec(which_clock, &ts);
|
||||
|
||||
if (!err && put_old_timespec32(&ts, tp))
|
||||
err = -EFAULT;
|
||||
|
@ -1261,7 +1261,7 @@ SYSCALL_DEFINE4(clock_nanosleep_time32, clockid_t, which_clock, int, flags,
|
|||
|
||||
static const struct k_clock clock_realtime = {
|
||||
.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_adj = posix_clock_realtime_adj,
|
||||
.nsleep = common_nsleep,
|
||||
|
@ -1279,7 +1279,7 @@ static const struct k_clock clock_realtime = {
|
|||
|
||||
static const struct k_clock clock_monotonic = {
|
||||
.clock_getres = posix_get_hrtimer_res,
|
||||
.clock_get = posix_ktime_get_ts,
|
||||
.clock_get_timespec = posix_ktime_get_ts,
|
||||
.nsleep = common_nsleep,
|
||||
.timer_create = common_timer_create,
|
||||
.timer_set = common_timer_set,
|
||||
|
@ -1295,22 +1295,22 @@ static const struct k_clock clock_monotonic = {
|
|||
|
||||
static const struct k_clock clock_monotonic_raw = {
|
||||
.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 = {
|
||||
.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 = {
|
||||
.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 = {
|
||||
.clock_getres = posix_get_hrtimer_res,
|
||||
.clock_get = posix_get_tai,
|
||||
.clock_get_timespec = posix_get_tai,
|
||||
.nsleep = common_nsleep,
|
||||
.timer_create = common_timer_create,
|
||||
.timer_set = common_timer_set,
|
||||
|
@ -1326,7 +1326,7 @@ static const struct k_clock clock_tai = {
|
|||
|
||||
static const struct k_clock clock_boottime = {
|
||||
.clock_getres = posix_get_hrtimer_res,
|
||||
.clock_get = posix_get_boottime,
|
||||
.clock_get_timespec = posix_get_boottime,
|
||||
.nsleep = common_nsleep,
|
||||
.timer_create = common_timer_create,
|
||||
.timer_set = common_timer_set,
|
||||
|
|
|
@ -6,8 +6,8 @@ struct k_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_get_timespec)(const clockid_t which_clock,
|
||||
struct timespec64 *tp);
|
||||
int (*clock_adj)(const clockid_t which_clock, struct __kernel_timex *tx);
|
||||
int (*timer_create)(struct k_itimer *timer);
|
||||
int (*nsleep)(const clockid_t which_clock, int flags,
|
||||
|
|
Загрузка…
Ссылка в новой задаче