mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-18 06:30:05 +00:00
Update.
* 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.
This commit is contained in:
parent
c6247c9d7d
commit
90491dc4bf
@ -1,5 +1,17 @@
|
|||||||
2003-02-15 Ulrich Drepper <drepper@redhat.com>
|
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.
|
* Makefile (tests): Add tst-clock1.
|
||||||
* tst-clock1.c: New file.
|
* tst-clock1.c: New file.
|
||||||
|
|
||||||
|
@ -477,6 +477,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
__deallocate_stack (struct pthread *pd)
|
__deallocate_stack (struct pthread *pd)
|
||||||
{
|
{
|
||||||
lll_lock (stack_cache_lock);
|
lll_lock (stack_cache_lock);
|
||||||
|
@ -154,14 +154,15 @@ __do_cancel (void)
|
|||||||
|
|
||||||
/* Thread list handling. */
|
/* Thread list handling. */
|
||||||
extern struct pthread *__find_in_stack_list (struct pthread *pd)
|
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
|
/* Deallocate a thread's stack after optionally making sure the thread
|
||||||
descriptor is still valid. */
|
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. */
|
/* 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
|
/* Mark all the stacks except for the current one as available. This
|
||||||
function also re-initializes the lock for the stack cache. */
|
function also re-initializes the lock for the stack cache. */
|
||||||
|
@ -65,6 +65,7 @@ hidden_def (__pthread_keys)
|
|||||||
const int __pthread_pthread_sizeof_descr = sizeof (struct pthread);
|
const int __pthread_pthread_sizeof_descr = sizeof (struct pthread);
|
||||||
|
|
||||||
struct pthread *
|
struct pthread *
|
||||||
|
internal_function
|
||||||
__find_in_stack_list (pd)
|
__find_in_stack_list (pd)
|
||||||
struct pthread *pd;
|
struct pthread *pd;
|
||||||
{
|
{
|
||||||
@ -175,6 +176,7 @@ deallocate_tsd (struct pthread *pd)
|
|||||||
/* Deallocate a thread's stack after optionally making sure the thread
|
/* Deallocate a thread's stack after optionally making sure the thread
|
||||||
descriptor is still valid. */
|
descriptor is still valid. */
|
||||||
void
|
void
|
||||||
|
internal_function
|
||||||
__free_tcb (struct pthread *pd)
|
__free_tcb (struct pthread *pd)
|
||||||
{
|
{
|
||||||
/* The thread is exiting now. */
|
/* The thread is exiting now. */
|
||||||
|
@ -59,8 +59,8 @@ __pthread_getspecific (key)
|
|||||||
{
|
{
|
||||||
uintptr_t seq = data->seq;
|
uintptr_t seq = data->seq;
|
||||||
|
|
||||||
if (seq != __pthread_keys[key].seq)
|
if (__builtin_expect (seq != __pthread_keys[key].seq, 0))
|
||||||
result = data = NULL;
|
result = data->data = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -66,7 +66,8 @@ pthread_join (threadid, thread_return)
|
|||||||
|
|
||||||
/* Wait for the thread to finish. If it is already locked something
|
/* Wait for the thread to finish. If it is already locked something
|
||||||
is wrong. There can only be one waiter. */
|
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. */
|
/* There is already somebody waiting for the thread. */
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
|
@ -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.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
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
|
/* Wait for the thread to finish. If it is already locked something
|
||||||
is wrong. There can only be one waiter. */
|
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. */
|
/* There is already somebody waiting for the thread. */
|
||||||
return EINVAL;
|
return EINVAL;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user