]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Bug 20116: Clarify behaviour of PD->lock.
authorCarlos O'Donell <carlos@redhat.com>
Wed, 3 May 2017 19:24:43 +0000 (15:24 -0400)
committerCarlos O'Donell <carlos@redhat.com>
Wed, 3 May 2017 19:24:43 +0000 (15:24 -0400)
Add comments to the concurrency notes to clarify the semaphore-like and
mutex-like behaviours of PD->lock.

ChangeLog
nptl/pthread_create.c

index fa61e5fdb7b720c2639e0e8aa4b4c811f63eb053..c2d13f1dc8c8cb9f90f661df0af4bc8554e08753 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
-2016-04-03  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
+2017-05-03  Carlos O'Donell  <carlos@redhat.com>
+
+       [BZ #20116]
+       * nptl/pthread_create.c: Expand comments to describe
+       semaphore-like and mutex-like uses of PD->lock.
+
+2017-04-03  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
        * sysdeps/unix/sysv/linux/epoll_wait.c: New file.
        * sysdeps/unix/sysv/linux/generic/epoll_wait.c: Remove file.
index d0d74149d327241c85b3a3929ba2587a2065499a..c7d1b8f41346b6722ab7b8489f2696c92127513e 100644 (file)
@@ -94,8 +94,17 @@ unsigned int __nptl_nthreads = 1;
    exactly which of the four ownership states we are in and therefore
    what actions can be taken.  For example after (2) we cannot read or
    write from PD anymore since the thread may no longer exist and the
-   memory may be unmapped.  The most complicated cases happen during
-   thread startup:
+   memory may be unmapped.
+
+   It is important to point out that PD->lock is being used both
+   similar to a one-shot semaphore and subsequently as a mutex.  The
+   lock is taken in the parent to force the child to wait, and then the
+   child releases the lock.  However, this semaphore-like effect is used
+   only for synchronizing the parent and child.  After startup the lock
+   is used like a mutex to create a critical section during which a
+   single owner modifies the thread parameters.
+
+   The most complicated cases happen during thread startup:
 
    (a) If the created thread is in a detached (PTHREAD_CREATE_DETACHED),
        or joinable (default PTHREAD_CREATE_JOINABLE) state and