aboutsummaryrefslogtreecommitdiff
path: root/nptl/pthread_create.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-08-03 06:47:02 +0000
committerUlrich Drepper <drepper@redhat.com>2003-08-03 06:47:02 +0000
commitf1205aa71fb0131eb9d1e2efdd5fbcfaa85ad27c (patch)
tree7459ac5d9ff530a22b4035697530a49e49ce3ff7 /nptl/pthread_create.c
parent0cbc6c4eba0d6c957917e036a0822c84b92443fc (diff)
downloadglibc-f1205aa71fb0131eb9d1e2efdd5fbcfaa85ad27c.tar
glibc-f1205aa71fb0131eb9d1e2efdd5fbcfaa85ad27c.tar.gz
glibc-f1205aa71fb0131eb9d1e2efdd5fbcfaa85ad27c.tar.bz2
glibc-f1205aa71fb0131eb9d1e2efdd5fbcfaa85ad27c.zip
Update.
* sysdeps/pthread/createthread.c (do_clone): If __ASSUME_CLONE_STOPPED is not defined, do explicit synchronization. (create_thread): Do not lock pd->lock here. If __ASSUME_CLONE_STOPPED is not defined also unlock pd->lock for non-debugging case in case it is necessary. * pthread_create.c (start_thread): Always get and release pd->lock if __ASSUME_CLONE_STOPPED is not defined. (start_thread_debug): Removed. Adjust users. * allocatestack.c (allocate_stack): Always initialize lock if __ASSUME_CLONE_STOPPED is not defined. * Makefile (tests): Add tst-sched1. * tst-sched1.c: New file.
Diffstat (limited to 'nptl/pthread_create.c')
-rw-r--r--nptl/pthread_create.c26
1 files changed, 7 insertions, 19 deletions
diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
index ae97f4a62d..8507c3bf1d 100644
--- a/nptl/pthread_create.c
+++ b/nptl/pthread_create.c
@@ -33,8 +33,6 @@
/* Local function to start thread and handle cleanup. */
static int start_thread (void *arg);
-/* Similar version used when debugging. */
-static int start_thread_debug (void *arg);
/* Nozero if debugging mode is enabled. */
@@ -232,6 +230,13 @@ start_thread (void *arg)
struct pthread *pd = (struct pthread *) arg;
+#ifndef __ASSUME_CLONE_STOPPED
+ /* Get the lock the parent locked to force synchronization. */
+ lll_lock (pd->lock);
+ /* And give it up right away. */
+ lll_unlock (pd->lock);
+#endif
+
#if HP_TIMING_AVAIL
/* Remember the time when the thread was started. */
hp_timing_t now;
@@ -331,23 +336,6 @@ start_thread (void *arg)
}
-/* Just list start_thread but we do some more things needed for a run
- with a debugger attached. */
-static int
-start_thread_debug (void *arg)
-{
- struct pthread *pd = (struct pthread *) arg;
-
- /* Get the lock the parent locked to force synchronization. */
- lll_lock (pd->lock);
- /* And give it up right away. */
- lll_unlock (pd->lock);
-
- /* Now do the actual startup. */
- return start_thread (arg);
-}
-
-
/* Default thread attributes for the case when the user does not
provide any. */
static const struct pthread_attr default_attr =