From 9bb04d3aa6a2b1b86e091967e312a19ce337df4d Mon Sep 17 00:00:00 2001 From: Paulo Zanoni Date: Wed, 3 Dec 2014 16:12:49 -0200 Subject: lib: add igt_wait() Just a little helper for code that needs to wait for a certain condition to happen. It has the nice advantage that it can survive the signal helper. Despite the callers added in this patch, there is another that will go in a separate patch, and another in a new IGT test file that I plan to push later. v2: Check COND again before returning in case we hit the timeout. Signed-off-by: Paulo Zanoni --- tests/pm_rpm.c | 28 +++++----------------------- 1 file changed, 5 insertions(+), 23 deletions(-) (limited to 'tests') diff --git a/tests/pm_rpm.c b/tests/pm_rpm.c index 91df93a3..1a93fe8e 100644 --- a/tests/pm_rpm.c +++ b/tests/pm_rpm.c @@ -153,24 +153,16 @@ static uint64_t get_residency(uint32_t type) static bool pc8_plus_residency_changed(unsigned int timeout_sec) { - unsigned int i; uint64_t res_pc8, res_pc9, res_pc10; - int to_sleep = 100 * 1000; res_pc8 = get_residency(MSR_PC8_RES); res_pc9 = get_residency(MSR_PC9_RES); res_pc10 = get_residency(MSR_PC10_RES); - for (i = 0; i < timeout_sec * 1000 * 1000; i += to_sleep) { - if (res_pc8 != get_residency(MSR_PC8_RES) || - res_pc9 != get_residency(MSR_PC9_RES) || - res_pc10 != get_residency(MSR_PC10_RES)) { - return true; - } - usleep(to_sleep); - } - - return false; + return igt_wait(res_pc8 != get_residency(MSR_PC8_RES) || + res_pc9 != get_residency(MSR_PC9_RES) || + res_pc10 != get_residency(MSR_PC10_RES), + timeout_sec * 1000, 100); } static enum pc8_status get_pc8_status(void) @@ -191,17 +183,7 @@ static enum pc8_status get_pc8_status(void) static bool wait_for_pc8_status(enum pc8_status status) { - int i; - int hundred_ms = 100 * 1000, ten_s = 10 * 1000 * 1000; - - for (i = 0; i < ten_s; i += hundred_ms) { - if (get_pc8_status() == status) - return true; - - usleep(hundred_ms); - } - - return false; + return igt_wait(get_pc8_status() == status, 10000, 100); } static bool wait_for_suspended(void) -- cgit v1.2.3