Commit a9bfd332 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Linus Torvalds

crc32: use ktime_get_ns() for measurement

The crc32 test function measures the elapsed time in nanoseconds, but
uses 'struct timespec' for that.  We want to remove timespec from the
kernel for y2038 compatibility, and ktime_get_ns() also helps make the
code simpler here.

It is also slightly better to use monontonic time, as we are only
interested in the time difference.

Link: http://lkml.kernel.org/r/20160617143932.3289626-1-arnd@arndb.deSigned-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Cc: "David S . Miller" <davem@davemloft.net>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent f003a1f1
...@@ -979,7 +979,6 @@ static int __init crc32c_test(void) ...@@ -979,7 +979,6 @@ static int __init crc32c_test(void)
int i; int i;
int errors = 0; int errors = 0;
int bytes = 0; int bytes = 0;
struct timespec start, stop;
u64 nsec; u64 nsec;
unsigned long flags; unsigned long flags;
...@@ -999,20 +998,17 @@ static int __init crc32c_test(void) ...@@ -999,20 +998,17 @@ static int __init crc32c_test(void)
local_irq_save(flags); local_irq_save(flags);
local_irq_disable(); local_irq_disable();
getnstimeofday(&start); nsec = ktime_get_ns();
for (i = 0; i < 100; i++) { for (i = 0; i < 100; i++) {
if (test[i].crc32c_le != __crc32c_le(test[i].crc, test_buf + if (test[i].crc32c_le != __crc32c_le(test[i].crc, test_buf +
test[i].start, test[i].length)) test[i].start, test[i].length))
errors++; errors++;
} }
getnstimeofday(&stop); nsec = ktime_get_ns() - nsec;
local_irq_restore(flags); local_irq_restore(flags);
local_irq_enable(); local_irq_enable();
nsec = stop.tv_nsec - start.tv_nsec +
1000000000 * (stop.tv_sec - start.tv_sec);
pr_info("crc32c: CRC_LE_BITS = %d\n", CRC_LE_BITS); pr_info("crc32c: CRC_LE_BITS = %d\n", CRC_LE_BITS);
if (errors) if (errors)
...@@ -1065,7 +1061,6 @@ static int __init crc32_test(void) ...@@ -1065,7 +1061,6 @@ static int __init crc32_test(void)
int i; int i;
int errors = 0; int errors = 0;
int bytes = 0; int bytes = 0;
struct timespec start, stop;
u64 nsec; u64 nsec;
unsigned long flags; unsigned long flags;
...@@ -1088,7 +1083,7 @@ static int __init crc32_test(void) ...@@ -1088,7 +1083,7 @@ static int __init crc32_test(void)
local_irq_save(flags); local_irq_save(flags);
local_irq_disable(); local_irq_disable();
getnstimeofday(&start); nsec = ktime_get_ns();
for (i = 0; i < 100; i++) { for (i = 0; i < 100; i++) {
if (test[i].crc_le != crc32_le(test[i].crc, test_buf + if (test[i].crc_le != crc32_le(test[i].crc, test_buf +
test[i].start, test[i].length)) test[i].start, test[i].length))
...@@ -1098,14 +1093,11 @@ static int __init crc32_test(void) ...@@ -1098,14 +1093,11 @@ static int __init crc32_test(void)
test[i].start, test[i].length)) test[i].start, test[i].length))
errors++; errors++;
} }
getnstimeofday(&stop); nsec = ktime_get_ns() - nsec;
local_irq_restore(flags); local_irq_restore(flags);
local_irq_enable(); local_irq_enable();
nsec = stop.tv_nsec - start.tv_nsec +
1000000000 * (stop.tv_sec - start.tv_sec);
pr_info("crc32: CRC_LE_BITS = %d, CRC_BE BITS = %d\n", pr_info("crc32: CRC_LE_BITS = %d, CRC_BE BITS = %d\n",
CRC_LE_BITS, CRC_BE_BITS); CRC_LE_BITS, CRC_BE_BITS);
......
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