From 0b72293d1a22af11e46b89cd60e2c3f34377a4df Mon Sep 17 00:00:00 2001 From: Michael Tuexen <tuexen@fh-muenster.de> Date: Wed, 15 Jun 2016 20:15:38 +0200 Subject: [PATCH] Get blocking system calls working on FreeBSD. This fixes a bug on non-Linux system for the handling of blocking system calls. While waiting, release the state mutex. Sponsored by Netflix. --- gtests/net/packetdrill/run.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/gtests/net/packetdrill/run.c b/gtests/net/packetdrill/run.c index 778e2b59..574c0cca 100644 --- a/gtests/net/packetdrill/run.c +++ b/gtests/net/packetdrill/run.c @@ -318,6 +318,7 @@ void wait_for_event(struct state *state) state, state->event->time_usecs); DEBUGP("waiting until %lld -- now is %lld\n", event_usecs, now_usecs()); + run_unlock(state); while (1) { const s64 wait_usecs = event_usecs - now_usecs(); if (wait_usecs <= 0) @@ -333,9 +334,7 @@ void wait_for_event(struct state *state) * event we're waiting for and then spin. */ if (wait_usecs > MAX_SPIN_USECS) { - run_unlock(state); usleep(wait_usecs - MAX_SPIN_USECS); - run_lock(state); } #endif @@ -343,7 +342,7 @@ void wait_for_event(struct state *state) * two to wait, so we spin. */ } - + run_lock(state); check_event_time(state, now_usecs()); } -- GitLab