Commit 4a19bd3d authored by Arnd Bergmann's avatar Arnd Bergmann Committed by John Stultz

time: Avoid timespec in udelay_test

udelay_test_single() uses ktime_get_ts() to get two timespec values
and calculate the difference between them, while udelay_test_show()
uses the same to printk() the current monotonic time.

Both of these are y2038 safe on all machines, but we want to
get rid of struct timespec anyway, so this converts the code to
use ktime_get_ns() and ktime_get_ts64() respectively.

Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent e6c2682a
...@@ -43,13 +43,13 @@ static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters) ...@@ -43,13 +43,13 @@ static int udelay_test_single(struct seq_file *s, int usecs, uint32_t iters)
int allowed_error_ns = usecs * 5; int allowed_error_ns = usecs * 5;
for (i = 0; i < iters; ++i) { for (i = 0; i < iters; ++i) {
struct timespec ts1, ts2; s64 kt1, kt2;
int time_passed; int time_passed;
ktime_get_ts(&ts1); kt1 = ktime_get_ns();
udelay(usecs); udelay(usecs);
ktime_get_ts(&ts2); kt2 = ktime_get_ns();
time_passed = timespec_to_ns(&ts2) - timespec_to_ns(&ts1); time_passed = kt2 - kt1;
if (i == 0 || time_passed < min) if (i == 0 || time_passed < min)
min = time_passed; min = time_passed;
...@@ -87,11 +87,11 @@ static int udelay_test_show(struct seq_file *s, void *v) ...@@ -87,11 +87,11 @@ static int udelay_test_show(struct seq_file *s, void *v)
if (usecs > 0 && iters > 0) { if (usecs > 0 && iters > 0) {
return udelay_test_single(s, usecs, iters); return udelay_test_single(s, usecs, iters);
} else if (usecs == 0) { } else if (usecs == 0) {
struct timespec ts; struct timespec64 ts;
ktime_get_ts(&ts); ktime_get_ts64(&ts);
seq_printf(s, "udelay() test (lpj=%ld kt=%ld.%09ld)\n", seq_printf(s, "udelay() test (lpj=%ld kt=%lld.%09ld)\n",
loops_per_jiffy, ts.tv_sec, ts.tv_nsec); loops_per_jiffy, (s64)ts.tv_sec, ts.tv_nsec);
seq_puts(s, "usage:\n"); seq_puts(s, "usage:\n");
seq_puts(s, "echo USECS [ITERS] > " DEBUGFS_FILENAME "\n"); seq_puts(s, "echo USECS [ITERS] > " DEBUGFS_FILENAME "\n");
seq_puts(s, "cat " DEBUGFS_FILENAME "\n"); seq_puts(s, "cat " DEBUGFS_FILENAME "\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment