From c08b0ce638361a84d3648aacd4ffbd0da6c357d8 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 7 Aug 2019 06:19:51 +0200 Subject: Distinguish between internal/external wait deactivation in scheduler This turns out to be necessary for the deadlock detection to work properly. --- libbuild2/context.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libbuild2/context.cxx') diff --git a/libbuild2/context.cxx b/libbuild2/context.cxx index d56abb3..d1bfc33 100644 --- a/libbuild2/context.cxx +++ b/libbuild2/context.cxx @@ -62,11 +62,11 @@ namespace build2 } else if (phase != p) { - sched.deactivate (); + sched.deactivate (false /* external */); for (; phase != p; v->wait (l)) ; r = !fail_; l.unlock (); // Important: activate() can block. - sched.activate (); + sched.activate (false /* external */); } else r = !fail_; @@ -175,11 +175,11 @@ namespace build2 } else // phase != n { - sched.deactivate (); + sched.deactivate (false /* external */); for (; phase != n; v->wait (l)) ; r = !fail_; l.unlock (); // Important: activate() can block. - sched.activate (); + sched.activate (false /* external */); } } -- cgit v1.1