]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 15 Feb 2003 09:49:02 +0000 (09:49 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 15 Feb 2003 09:49:02 +0000 (09:49 +0000)
* pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
and __deallocate_stack with internal_function.
* pthread_create.c: Adjust definitions appropriately.
* allocatestack.c: Likewise.

* pthread_join.c: Add one more __builtin_expect.
* pthread_timedjoin.c: Likewise.

* pthread_getspecific.c (__pthread_getspecific): Clear data->data
not data of sequence number does not match.
Add one __builtin_expect.

nptl/ChangeLog
nptl/allocatestack.c
nptl/pthreadP.h
nptl/pthread_create.c
nptl/pthread_getspecific.c
nptl/pthread_join.c
nptl/pthread_timedjoin.c

index c4556cc1c8e185d6ccdb0297aab2d590f5d26d24..4aa4bb6286a4c1b3487e3b79266eca23aa75d430 100644 (file)
@@ -1,5 +1,17 @@
 2003-02-15  Ulrich Drepper  <drepper@redhat.com>
 
+       * pthreadP.h: Mark declarations of __find_in_stack_list, __free_tcb,
+       and __deallocate_stack with internal_function.
+       * pthread_create.c: Adjust definitions appropriately.
+       * allocatestack.c: Likewise.
+
+       * pthread_join.c: Add one more __builtin_expect.
+       * pthread_timedjoin.c: Likewise.
+
+       * pthread_getspecific.c (__pthread_getspecific): Clear data->data
+       not data of sequence number does not match.
+       Add one __builtin_expect.
+
        * Makefile (tests): Add tst-clock1.
        * tst-clock1.c: New file.
 
index 9d7f7618ec299c14f88661fc4519213df577402e..57cb2717ec54e90cc8cf05eaf18de5d91ee6b901 100644 (file)
@@ -477,6 +477,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
 
 
 void
+internal_function
 __deallocate_stack (struct pthread *pd)
 {
   lll_lock (stack_cache_lock);
index 784f62416ff71a39b4948364f33b786dd0517539..2b65192f68bcfd53371986eb35123168bfc026ca 100644 (file)
@@ -154,14 +154,15 @@ __do_cancel (void)
 
 /* Thread list handling.  */
 extern struct pthread *__find_in_stack_list (struct pthread *pd)
-     attribute_hidden;
+     attribute_hidden internal_function;
 
 /* Deallocate a thread's stack after optionally making sure the thread
    descriptor is still valid.  */
-extern void __free_tcb (struct pthread *pd) attribute_hidden;
+extern void __free_tcb (struct pthread *pd) attribute_hidden internal_function;
 
 /* Free allocated stack.  */
-extern void __deallocate_stack (struct pthread *pd) attribute_hidden;
+extern void __deallocate_stack (struct pthread *pd)
+     attribute_hidden internal_function;
 
 /* Mark all the stacks except for the current one as available.  This
    function also re-initializes the lock for the stack cache.  */
index c96a2813e5baf4acbdc39050ce54205fd1716b81..6a590904d4f8c7a223603eb89715990e759156ed 100644 (file)
@@ -65,6 +65,7 @@ hidden_def (__pthread_keys)
 const int __pthread_pthread_sizeof_descr = sizeof (struct pthread);
 
 struct pthread *
+internal_function
 __find_in_stack_list (pd)
      struct pthread *pd;
 {
@@ -175,6 +176,7 @@ deallocate_tsd (struct pthread *pd)
 /* Deallocate a thread's stack after optionally making sure the thread
    descriptor is still valid.  */
 void
+internal_function
 __free_tcb (struct pthread *pd)
 {
   /* The thread is exiting now.  */
index 24c472d640ad2019d5ef658e5a4359f60f8d2a07..afb4d26ffd15da8568672e8012065e56aa063c69 100644 (file)
@@ -59,8 +59,8 @@ __pthread_getspecific (key)
     {
       uintptr_t seq = data->seq;
 
-      if (seq != __pthread_keys[key].seq)
-       result = data = NULL;
+      if (__builtin_expect (seq != __pthread_keys[key].seq, 0))
+       result = data->data = NULL;
     }
 
   return result;
index 5954af778db04c9bca3b63afb2ec26d5ca111686..387f230576ea2215385ecfe23b3660a3d551c553 100644 (file)
@@ -66,7 +66,8 @@ pthread_join (threadid, thread_return)
 
   /* Wait for the thread to finish.  If it is already locked something
      is wrong.  There can only be one waiter.  */
-  if (atomic_compare_and_exchange_acq (&pd->joinid, self, NULL) != 0)
+  if (__builtin_expect (atomic_compare_and_exchange_acq (&pd->joinid, self,
+                                                        NULL) != 0, 0))
     /* There is already somebody waiting for the thread.  */
     return EINVAL;
 
index 7725c522292fbae131f9d79d6f2bcdb31bb0d853..dd51fea4aa0556cd97de98549ce2b0907f3e9227 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -64,7 +64,8 @@ pthread_timedjoin_np (threadid, thread_return, abstime)
 
   /* Wait for the thread to finish.  If it is already locked something
      is wrong.  There can only be one waiter.  */
-  if (atomic_compare_and_exchange_acq (&pd->joinid, self, NULL) != 0)
+  if (__builtin_expect (atomic_compare_and_exchange_acq (&pd->joinid, self,
+                                                        NULL) != 0, 0))
     /* There is already somebody waiting for the thread.  */
     return EINVAL;