On 22/11/2017 20:14, Chris Wilson wrote:
Be careful not to underflow into a very large positive usec value and so
sleep forever^W until boredom kicks in.
Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
---
tests/perf_pmu.c | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/tests/perf_pmu.c b/tests/perf_pmu.c
index 5d5f2b30..e153aaf3 100644
--- a/tests/perf_pmu.c
+++ b/tests/perf_pmu.c
@@ -111,22 +111,17 @@ static void pmu_read_multi(int fd, unsigned int num, uint64_t *val)
*/
static unsigned int measured_usleep(unsigned int usec)
{
- uint64_t slept = 0;
-
- while (usec > 0) {
- struct timespec start = { };
- uint64_t this_sleep;
+ struct timespec ts = { };
+ unsigned int slept;
- igt_nsec_elapsed(&start);
- usleep(usec);
- this_sleep = igt_nsec_elapsed(&start);
- slept += this_sleep;
- if (this_sleep > usec * 1000)
- break;
- usec -= this_sleep;
- }
+ slept = igt_nsec_elapsed(&ts);
+ igt_assert(slept == 0);
+ do {
+ usleep(usec - slept);
+ slept = igt_nsec_elapsed(&ts) / 1000;
+ } while (slept < usec);
- return slept;
+ return igt_nsec_elapsed(&ts);
}
static unsigned int e2ring(int gem_fd, const struct intel_execution_engine2 *e)
Looks OK. Silly bug of mine and I wonder how I was so lucky not to hit
it all this time.
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxx>
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx