mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-18 14:40:06 +00:00
* 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:
parent
5a01ab7b83
commit
59d430c680
@ -76,8 +76,6 @@ END LC_CTYPE
|
||||
|
||||
LC_COLLATE
|
||||
|
||||
define DIACRIT_FORWARD
|
||||
|
||||
% Copy the template from ISO/IEC 14651
|
||||
copy "iso14651_t1"
|
||||
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user