From 74a628f776edb588bff8f8f5cc16eac947c9d631 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Sun, 16 Apr 2017 16:04:10 +0000 Subject: Vendor import of lldb trunk r300422: https://llvm.org/svn/llvm-project/lldb/trunk@300422 --- packages/Python/lldbsuite/test/make/pseudo_barrier.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 packages/Python/lldbsuite/test/make/pseudo_barrier.h (limited to 'packages/Python/lldbsuite/test/make/pseudo_barrier.h') diff --git a/packages/Python/lldbsuite/test/make/pseudo_barrier.h b/packages/Python/lldbsuite/test/make/pseudo_barrier.h new file mode 100644 index 000000000000..592000ddea4d --- /dev/null +++ b/packages/Python/lldbsuite/test/make/pseudo_barrier.h @@ -0,0 +1,20 @@ +#include + +// Note that although hogging the CPU while waiting for a variable to change +// would be terrible in production code, it's great for testing since it +// avoids a lot of messy context switching to get multiple threads synchronized. + +typedef std::atomic pseudo_barrier_t; +#define pseudo_barrier_wait(barrier) \ + do \ + { \ + --(barrier); \ + while ((barrier).load() > 0) \ + ; \ + } while (0) + +#define pseudo_barrier_init(barrier, count) \ + do \ + { \ + (barrier) = (count); \ + } while (0) -- cgit v1.2.3