From 4e4b5ca95dc7732ee2dd4501f00cfdaf48ae26a8 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 20 Oct 2018 16:43:43 +0200 Subject: [PATCH] make use of tsc_now() instead of rdtsc() and rdtscp() (closes #197) --- lib/task.c | 2 +- tests/unit/queue.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/task.c b/lib/task.c index 482c94687..81cfa9783 100644 --- a/lib/task.c +++ b/lib/task.c @@ -172,7 +172,7 @@ uint64_t task_wait(struct task *t) uint64_t now; do { - now = rdtscp(); + now = tsc_now(&t->tsc); } while (now < t->next); diff --git a/tests/unit/queue.c b/tests/unit/queue.c index b7faf817e..2f4d06b18 100644 --- a/tests/unit/queue.c +++ b/tests/unit/queue.c @@ -306,6 +306,7 @@ ParameterizedTestParameters(queue, multi_threaded) ParameterizedTest(struct param *p, queue, multi_threaded, .timeout = 20, .init = init_memory) { int ret, cycpop; + struct tsc tsc; pthread_t threads[p->thread_count]; @@ -323,13 +324,17 @@ ParameterizedTest(struct param *p, queue, multi_threaded, .timeout = 20, .init = sleep(0.2); - start_tsc_time = rdtscp(); + + ret = tsc_init(&tsc); + cr_assert(!ret); + + start_tsc_time = tsc_now(&tsc); p->start = 1; for (int i = 0; i < p->thread_count; ++i) pthread_join(threads[i], NULL); - end_tsc_time = rdtscp(); + end_tsc_time = tsc_now(&tsc); cycpop = (end_tsc_time - start_tsc_time) / p->iter_count; if (cycpop < 400)