From b02840bacdefde318d2ad2f920e50785b9b25d69 Mon Sep 17 00:00:00 2001 From: Torvald Riegel Date: Wed, 24 Jun 2015 14:37:32 +0200 Subject: New pthread_barrier algorithm to fulfill barrier destruction requirements. The previous barrier implementation did not fulfill the POSIX requirements for when a barrier can be destroyed. Specifically, it was possible that threads that haven't noticed yet that their round is complete still access the barrier's memory, and that those accesses can happen after the barrier has been legally destroyed. The new algorithm does not have this issue, and it avoids using a lock internally. --- ChangeLog | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'ChangeLog') diff --git a/ChangeLog b/ChangeLog index fb5cd0e024..53413adee4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +2016-01-15 Torvald Riegel + + [BZ #13065] + * nptl/pthread_barrier_wait.c (__pthread_barrier_wait): Replace with + new implementation. + * nptl/pthread_barrier_destroy.c (pthread_barrier_destroy): Likewise. + * nptl/pthread_barrier_init.c (__pthread_barrier_init): Adapt. + * sysdeps/nptl/internaltypes.h (pthread_barrier): Adapt. + (BARRIER_IN_THRESHOLD): New macro. + * nptl/pthread_barrierattr_setpshared.c + (pthread_barrierattr_setpshared): Clean up. + * nptl/tst-barrier4.c: Correct comment. + * nptl/tst-barrier5.c: New file. + * nptl/Makefile (tests): Add nptl/tst-barrier5.c. + (gen-as-const-headers): Remove lowlevelbarrier.sym. + * sysdeps/unix/sysv/linux/i386/pthread_barrier_wait.S: Remove. + * sysdeps/unix/sysv/linux/x86_64/pthread_barrier_wait.S: Remove. + * nptl/lowlevelbarrier.sym: Remove. + * nptl/DESIGN-barrier.txt: Remove. + * sysdeps/sparc/nptl/pthread_barrier_destroy.c: Remove. + * sysdeps/sparc/nptl/pthread_barrier_init.c: Remove. + * sysdeps/sparc/nptl/pthread_barrier_wait.c: Remove. + * sysdeps/sparc/sparc32/pthread_barrier_wait.c: Replace with build + error. + * sysdeps/sparc/sparc32/sparcv9/pthread_barrier_wait.c: Use generic + implementation. + 2016-01-15 Paul E. Murphy * rt/tst-mqueue5.c (thr): Cleanup misleading comment. -- cgit v1.2.3