Age | Commit message (Collapse) | Author |
|
Fix pthread_mutex_t static initializers by not leaving references to
__pthread_recursive_mutexattr.
* include/pthread/pthread.h.orig (PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): New
macro.
* sysdeps/generic/pt-mutex-destroy.c (_pthread_mutex_destroy): Compare
mutex->attr with __PTHREAD_ERRORCHECK_MUTEXATTR and
__PTHREAD_RECURSIVE_MUTEXATTR instead of __pthread_recursive_mutexattr.
* sysdeps/generic/pt-mutex-init.c (_pthread_mutex_init): Likewise.
* sysdeps/generic/pt-mutex-timedlock.c (__pthread_mutex_timedlock_internal):
Likewise.
* sysdeps/generic/pt-mutex-transfer-np.c (__pthread_mutex_transfer_np):
Likewise.
* sysdeps/generic/pt-mutex-trylock.c (__pthread_mutex_trylock): Likewise.
* sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock): Likewise.
* sysdeps/generic/pt-mutexattr.c (__pthread_errorcheck_mutexattr): New const.
* sysdeps/generic/bits/mutex-attr.h (__pthread_errorcheck_mutexattr): Declare
const.
* sysdeps/generic/bits/mutex.h (__PTHREAD_ERRORCHECK_MUTEXATTR,
__PTHREAD_ERRORCHECK_MUTEX_INITIALIZER, __PTHREAD_RECURSIVE_MUTEXATTR): New
macros.
(__PTHREAD_RECURSIVE_MUTEX_INITIALIZER): Use __PTHREAD_RECURSIVE_MUTEXATTR macro
instead of &__pthread_recursive_mutexattr.
|
|
* sysdeps/generic/pt-mutex-timedlock.c
(__pthread_mutex_timedlock_internal) [! ALWAYS_TRACK_MUTEX_OWNER]:
Don't update MUTEX->OWNER or assert MUTEX->OWNER for normal
mutexes.
* sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock)
[! ALWAYS_TRACK_MUTEX_OWNER]: Don't update MUTEX->OWNER or assert
MUTEX->OWNER for normal mutexes.
* sysdeps/generic/pt-mutex-transfer-np.c
(__pthread_mutex_transfer_np) [! ALWAYS_TRACK_MUTEX_OWNER]: Don't
update MUTEX->OWNER for normal mutexes.
|
|
Merge changes from hurd-l4 fork.
* Makefile (SRCS): Add pt-startup.c and pt-mutex-transfer-np.c.
(sysdeps_headers): Add pthread-np.h.
2008-08-12 Neal H. Walfield <neal@gnu.org>
* sysdeps/generic/bits/pthread-np.h: New file.
2008-08-12 Neal H. Walfield <neal@gnu.org>
* sysdeps/generic/pt-startup.c: New file.
2008-08-12 Neal H. Walfield <neal@gnu.org>
* sysdeps/generic/bits/mutex.h (__PTHREAD_RECURSIVE_MUTEX_INITIALIZER):
Define.
(__PTHREAD_MUTEX_RECURSIVE_INITIALIZER): Don't define.
* include/pthread/pthread.h
(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) [__USE_GNU]: Define.
(PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP): Don't define.
2008-08-12 Neal H. Walfield <neal@gnu.org>
* include/pthread/pthread.h: Include <sys/cdefs.h>.
(__extern_inline): If not defined, define appropriately.
2008-06-01 Neal H. Walfield <neal@gnu.org>
* include/pthread/pthread.h (PTHREAD_MUTEX_RECURSIVE_INITIALIZER_NP):
New definition.
* sysdeps/generic/bits/mutex.h
(__PTHREAD_MUTEX_RECURSIVE_INITIALIZER): New definition.
* sysdeps/generic/bits/mutex-attr.h (__pthread_recursive_mutexattr):
New definition.
* sysdeps/generic/pt-mutexattr.c (__pthread_recursive_mutexattr):
New declaration.
* sysdeps/generic/pt-mutex-init.c (_pthread_mutex_init): If ATTR
is &__PTHREAD_RECURSIVE_MUTEXATTR, don't allocate a copy, just
save in MUTEX->ATTR.
* sysdeps/generic/pt-mutex-destroy.c (_pthread_mutex_destroy): If
MUTEX->ATTR is &__PTHREAD_RECURSIVE_MUTEXATTR, don't free it.
2008-05-29 Thomas Schwinge <tschwinge@gnu.org>
* sysdeps/generic/sem-timedwait.c: Don't include <error.h>.
2008-05-21 Neal H. Walfield <neal@gnu.org>
* include/pthread/pthread.h: Include <bits/pthread-np.h>.
2008-03-01 Neal H. Walfield <neal@gnu.org>
* sysdeps/generic/pt-mutex-transfer-np.c: New file.
* pthread/pt-self.c (pthread_self): Assert that SELF is not NULL.
2007-12-23 Neal H. Walfield <neal@gnu.org>
* pthread/pt-join.c (pthread_join): Cast argument to
pthread_cleanup_push to avoid warning.
2007-11-23 Neal H. Walfield <neal@gnu.org>
* pthread/pt-internal.h (__pthread_startup): Add declaration.
* pthread/pt-create.c (entry_point): Call __pthread_startup.
|
|
2008-06-22 Neal H. Walfield <neal@gnu.org>
* thread.h: Include "list.h".
(struct thread) [! NDEBUG]: Add field futex_waiter_node.
[! NDEBUG]: Instantiate the futex_waiter list class.
(futex_waiters) [! NDEBUG]: Declare.
* server.c (futex_waiters) [! NDEBUG]: New variable.
(server_loop) [! NDEBUG]: If we don't get an RPC for a while,
dequeue all thread's enqueued on FUTEX_WAITERS and return EDEADLK.
When blocking a thread on a futex, add THREAD to FUTEX_WAITERS.
* object.c (object_wait_queue_dequeue) [! NDEBUG]: If
THREAD->WAIT_REASON is THREAD_WAIT_FUTEX, unlink THREAD from
FUTEX_WAITERS.
hurd/
2008-06-22 Neal H. Walfield <neal@gnu.org>
* futex.h [! RM_INTERN]: Include <errno.h>.
(futex_wait): On error, set ERRNO and return -1.
(futex_timed_wait): Likewise.
(futex_wake): Likewise.
* mutex.h (ss_mutex_lock): If FUTEX_WAIT returns failure, print
some debugging information.
|
|
* sysdeps/generic/pt-mutex-timedlock.c
(__pthread_mutex_timedlock_internal): Don't set MUTEX->OWNER here.
* sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock): Set
it here to WAKEUP.
|
|
* sysdeps/generic/pt-mutex-timedlock.c
(__pthread_mutex_timedlock_internal): Add additional asserts.
[! NDEBUG]: Keep MUTEX->OWNER up to date.
* sysdeps/generic/pt-mutex-trylock.c (__pthread_mutex_trylock):
Add additional asserts.
[! NDEBUG]: Keep MUTEX->OWNER up to date.
* sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock): Add
additional asserts.
[! NDEBUG]: Keep MUTEX->OWNER up to date.
|
|
Do not let other libraries (like libX11) override libpthread's
pthread_mutex_*, pthread_rwlock_* and sem_* dynamic symbols.
* libpthread/sysdeps/generic/pt-mutex-destroy.c
(pthread_mutex_destroy): Make the alias strong.
* libpthread/sysdeps/generic/pt-mutex-init.c
(pthread_mutex_init): Likewise.
* libpthread/sysdeps/generic/pt-mutex-lock.c
(_pthread_mutex_lock, pthread_mutex_lock): Likewise.
* libpthread/sysdeps/generic/pt-mutex-trylock.c
(_pthread_mutex_trylock, pthread_mutex_trylock): Likewise.
* libpthread/sysdeps/generic/pt-mutex-unlock.c
(_pthread_mutex_lock, pthread_mutex_unlock): Likewise.
* libpthread/sysdeps/generic/pt-rwlock-destroy.c
(pthread_rwlock_destroy): Likewise.
* libpthread/sysdeps/generic/pt-rwlock-init.c
(pthread_rwlock_init): Likewise.
* libpthread/sysdeps/generic/sem-destroy.c (sem_destroy): Likewise.
* libpthread/sysdeps/generic/sem-getvalue.c (sem_getvalue): Likewise.
* libpthread/sysdeps/generic/sem-init.c (sem_init): Likewise.
* libpthread/sysdeps/generic/sem-open.c (sem_open): Likewise.
* libpthread/sysdeps/generic/sem-post.c (sem_post): Likewise.
* libpthread/sysdeps/generic/sem-timedwait.c (sem_timedwait): Likewise.
* libpthread/sysdeps/generic/sem-trywait.c (sem_trywait): Likewise.
* libpthread/sysdeps/generic/sem-unlink.c (sem_unlink): Likewise.
* libpthread/sysdeps/generic/sem-wait.c (sem_wait): Likewise.
|
|
|