* sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of

libc.so just clear NAME.
	(__libc_rwlock_fini): Nop inside of libc.so.
	* tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
	all zeros.
This commit is contained in:
Ulrich Drepper 2007-10-10 16:00:14 +00:00
parent 5a01ab7b83
commit 59d430c680
4 changed files with 28 additions and 4 deletions

View File

@ -76,8 +76,6 @@ END LC_CTYPE
LC_COLLATE
define DIACRIT_FORWARD
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"

View File

@ -1,3 +1,11 @@
2007-10-10 Jakub Jelinek <jakub@redhat.com>
* sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_init): Inside of
libc.so just clear NAME.
(__libc_rwlock_fini): Nop inside of libc.so.
* tst-initializers1.c (main): Test if PTHREAD_RWLOCK_INITIALIZER is
all zeros.
2007-09-02 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S

View File

@ -172,8 +172,15 @@ typedef pthread_key_t __libc_key_t;
# define __libc_lock_init(NAME) \
__libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
#endif
#define __libc_rwlock_init(NAME) \
#if defined SHARED && !defined NOT_IN_libc
/* ((NAME) = (__libc_rwlock_t) PTHREAD_RWLOCK_INITIALIZER, 0) is
inefficient. */
# define __libc_rwlock_init(NAME) \
(__builtin_memset (&(NAME), '\0', sizeof (NAME)), 0)
#else
# define __libc_rwlock_init(NAME) \
__libc_maybe_call (__pthread_rwlock_init, (&(NAME), NULL), 0)
#endif
/* Same as last but this time we initialize a recursive mutex. */
#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
@ -214,8 +221,12 @@ typedef pthread_key_t __libc_key_t;
# define __libc_lock_fini(NAME) \
__libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
#endif
#define __libc_rwlock_fini(NAME) \
#if defined SHARED && !defined NOT_IN_libc
# define __libc_rwlock_fini(NAME) ((void) 0)
#else
# define __libc_rwlock_fini(NAME) \
__libc_maybe_call (__pthread_rwlock_destroy, (&(NAME)), 0)
#endif
/* Finalize recursive named lock. */
#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)

View File

@ -47,5 +47,12 @@ main (void)
if (rwl_writer.__data.__flags
!= PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
return 6;
/* <bits/libc-lock.h> __libc_rwlock_init definition for libc.so
relies on PTHREAD_RWLOCK_INITIALIZER being all zeros. If
that ever changes, <bits/libc-lock.h> needs updating. */
size_t i;
for (i = 0; i < sizeof (rwl_normal); i++)
if (((char *) &rwl_normal)[i] != '\0')
return 7;
return 0;
}