mirror of
https://github.com/Zenithsiz/ftmemsim-valgrind.git
synced 2026-02-07 04:38:00 +00:00
drd/tests/atomic_var: Avoid that platform-specific code can trigger a false negative
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13876
This commit is contained in:
parent
5e83ae1346
commit
4ce8144dee
@ -23,6 +23,8 @@
|
||||
has built-in functions for atomic memory access.
|
||||
#endif
|
||||
|
||||
static pthread_barrier_t s_barrier;
|
||||
|
||||
static __inline__
|
||||
int sync_add_and_fetch(int* p, int i)
|
||||
{
|
||||
@ -36,6 +38,7 @@ static int s_y = 0;
|
||||
|
||||
static void* thread_func_1(void* arg)
|
||||
{
|
||||
pthread_barrier_wait(&s_barrier);
|
||||
s_y = 1;
|
||||
(void) sync_add_and_fetch(&s_x, 1);
|
||||
return 0;
|
||||
@ -43,6 +46,7 @@ static void* thread_func_1(void* arg)
|
||||
|
||||
static void* thread_func_2(void* arg)
|
||||
{
|
||||
pthread_barrier_wait(&s_barrier);
|
||||
while (sync_add_and_fetch(&s_x, 0) == 0)
|
||||
;
|
||||
fprintf(stderr, "y = %d\n", s_y);
|
||||
@ -56,10 +60,12 @@ int main(int argc, char** argv)
|
||||
pthread_t tid[n_threads];
|
||||
|
||||
fprintf(stderr, "Start of test.\n");
|
||||
pthread_barrier_init(&s_barrier, 0, 2);
|
||||
pthread_create(&tid[0], 0, thread_func_1, 0);
|
||||
pthread_create(&tid[1], 0, thread_func_2, 0);
|
||||
for (i = 0; i < n_threads; i++)
|
||||
pthread_join(tid[i], 0);
|
||||
pthread_barrier_destroy(&s_barrier);
|
||||
fprintf(stderr, "Test finished.\n");
|
||||
|
||||
return 0;
|
||||
|
||||
@ -4,7 +4,7 @@ Conflicting load by thread x at 0x........ size 4
|
||||
at 0x........: thread_func_2 (atomic_var.c:?)
|
||||
by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
|
||||
Location 0x........ is 0 bytes inside global var "s_y"
|
||||
declared at atomic_var.c:35
|
||||
declared at atomic_var.c:37
|
||||
|
||||
y = 1
|
||||
Test finished.
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
prereq: test -e atomic_var && ./supported_libpthread
|
||||
vgopts: --read-var-info=yes --check-stack-var=yes --show-confl-seg=no --num-callers=2
|
||||
vgopts: --fair-sched=yes --read-var-info=yes --check-stack-var=yes --show-confl-seg=no --num-callers=2
|
||||
prog: atomic_var
|
||||
stderr_filter: filter_stderr_and_thread_no
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user