mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 16:21: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
|
LC_COLLATE
|
||||||
|
|
||||||
define DIACRIT_FORWARD
|
|
||||||
|
|
||||||
% Copy the template from ISO/IEC 14651
|
% Copy the template from ISO/IEC 14651
|
||||||
copy "iso14651_t1"
|
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>
|
2007-09-02 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
|
* 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) \
|
# define __libc_lock_init(NAME) \
|
||||||
__libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
|
__libc_maybe_call (__pthread_mutex_init, (&(NAME), NULL), 0)
|
||||||
#endif
|
#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)
|
__libc_maybe_call (__pthread_rwlock_init, (&(NAME), NULL), 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Same as last but this time we initialize a recursive mutex. */
|
/* Same as last but this time we initialize a recursive mutex. */
|
||||||
#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
|
#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) \
|
# define __libc_lock_fini(NAME) \
|
||||||
__libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
|
__libc_maybe_call (__pthread_mutex_destroy, (&(NAME)), 0)
|
||||||
#endif
|
#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)
|
__libc_maybe_call (__pthread_rwlock_destroy, (&(NAME)), 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Finalize recursive named lock. */
|
/* Finalize recursive named lock. */
|
||||||
#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
|
#if defined _LIBC && (!defined NOT_IN_libc || defined IS_IN_libpthread)
|
||||||
|
@ -47,5 +47,12 @@ main (void)
|
|||||||
if (rwl_writer.__data.__flags
|
if (rwl_writer.__data.__flags
|
||||||
!= PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
|
!= PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP)
|
||||||
return 6;
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user