make sched_barrier use cond_wait/cond_signal.
authordlg <dlg@openbsd.org>
Thu, 14 Dec 2017 23:21:04 +0000 (23:21 +0000)
committerdlg <dlg@openbsd.org>
Thu, 14 Dec 2017 23:21:04 +0000 (23:21 +0000)
commit0e4e575207c5ab24aa65ccf970655a99237396c1
treefb48f92075dece640fd03c18ec8a71338f2eeff4
parent0cc11a24fe67250b6e09abc5b46feeebef4ce7b7
make sched_barrier use cond_wait/cond_signal.

previously the code was using a percpu flag to manage the sleeps/wakeups,
which means multiple threads waiting for a barrier on a cpu could
race. moving to a cond struct on the stack fixes this.

while here, get rid of the sbar taskq and just use systqmp instead.
the barrier tasks are short, so there's no real downside.

ok mpi@
sys/kern/kern_sched.c
sys/sys/sched.h