diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2015-01-07 19:55:37 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2015-01-07 19:55:37 +0000 |
commit | ca9211ecdede9bdedb812b2243a4abdb8dacd1b9 (patch) | |
tree | 9b19e801150082c33e9152275829a6ce90614b55 /test/tsan/bench_local_mutex.cc | |
parent | 8ef50bf3d1c287b5013c3168de77a462dfce3495 (diff) |
Import compiler-rt trunk r224034.vendor/compiler-rt/compiler-rt-r224034
Notes
Notes:
svn path=/vendor/compiler-rt/dist/; revision=276789
svn path=/vendor/compiler-rt/compiler-rt-r224034/; revision=276790; tag=vendor/compiler-rt/compiler-rt-r224034
Diffstat (limited to 'test/tsan/bench_local_mutex.cc')
-rw-r--r-- | test/tsan/bench_local_mutex.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/tsan/bench_local_mutex.cc b/test/tsan/bench_local_mutex.cc new file mode 100644 index 000000000000..0fa1db0c883c --- /dev/null +++ b/test/tsan/bench_local_mutex.cc @@ -0,0 +1,27 @@ +// RUN: %clangxx_tsan %s -o %t +// RUN: %run %t 2>&1 | FileCheck %s + +#include "bench.h" + +pthread_mutex_t *mtx; +const int kStride = 16; + +void thread(int tid) { + for (int i = 0; i < bench_niter; i++) { + pthread_mutex_lock(&mtx[tid * kStride]); + pthread_mutex_unlock(&mtx[tid * kStride]); + } +} + +void bench() { + mtx = (pthread_mutex_t*)malloc(bench_nthread * kStride * sizeof(*mtx)); + for (int i = 0; i < bench_nthread; i++) { + pthread_mutex_init(&mtx[i * kStride], 0); + pthread_mutex_lock(&mtx[i * kStride]); + pthread_mutex_unlock(&mtx[i * kStride]); + } + start_thread_group(bench_nthread, thread); +} + +// CHECK: DONE + |