mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 00:10:10 +00:00
Update.
2003-05-04 H.J. Lu <hongjiu.lu@intel.com> * malloc/arena.c (arena_get2): Add atomic_write_barrier. * malloc/thread-m.h: Include <atomic.h>. (atomic_full_barrier): Provide default. (atomic_read_barrier): Likewise. (atomic_write_barrier): Likewise. * sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define.
This commit is contained in:
parent
96c814d3d8
commit
b5d5b67be3
@ -1,3 +1,12 @@
|
|||||||
|
2003-05-04 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
|
* malloc/arena.c (arena_get2): Add atomic_write_barrier.
|
||||||
|
* malloc/thread-m.h: Include <atomic.h>.
|
||||||
|
(atomic_full_barrier): Provide default.
|
||||||
|
(atomic_read_barrier): Likewise.
|
||||||
|
(atomic_write_barrier): Likewise.
|
||||||
|
* sysdeps/ia64/bits/atomic.h (atomic_full_barrier): New #define.
|
||||||
|
|
||||||
2003-06-30 Ulrich Drepper <drepper@redhat.com>
|
2003-06-30 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.
|
* sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Malloc implementation for multiple threads without lock contention.
|
/* Malloc implementation for multiple threads without lock contention.
|
||||||
Copyright (C) 2001, 2002 Free Software Foundation, Inc.
|
Copyright (C) 2001, 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 Wolfram Gloger <wg@malloc.de>, 2001.
|
Contributed by Wolfram Gloger <wg@malloc.de>, 2001.
|
||||||
|
|
||||||
@ -758,6 +758,7 @@ arena_get2(a_tsd, size) mstate a_tsd; size_t size;
|
|||||||
/* Add the new arena to the global list. */
|
/* Add the new arena to the global list. */
|
||||||
(void)mutex_lock(&list_lock);
|
(void)mutex_lock(&list_lock);
|
||||||
a->next = main_arena.next;
|
a->next = main_arena.next;
|
||||||
|
atomic_write_barrier ();
|
||||||
main_arena.next = a;
|
main_arena.next = a;
|
||||||
(void)mutex_unlock(&list_lock);
|
(void)mutex_unlock(&list_lock);
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
|
#if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
|
||||||
|
|
||||||
|
#include <atomic.h>
|
||||||
#include <bits/libc-lock.h>
|
#include <bits/libc-lock.h>
|
||||||
|
|
||||||
#ifdef PTHREAD_MUTEX_INITIALIZER
|
#ifdef PTHREAD_MUTEX_INITIALIZER
|
||||||
@ -306,4 +307,16 @@ typedef void *tsd_key_t;
|
|||||||
|
|
||||||
#endif /* defined(NO_THREADS) */
|
#endif /* defined(NO_THREADS) */
|
||||||
|
|
||||||
|
#ifndef atomic_full_barrier
|
||||||
|
# define atomic_full_barrier() __asm ("" ::: "memory")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef atomic_read_barrier
|
||||||
|
# define atomic_read_barrier() atomic_full_barrier ()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef atomic_write_barrier
|
||||||
|
# define atomic_write_barrier() atomic_full_barrier ()
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* !defined(_THREAD_M_H) */
|
#endif /* !defined(_THREAD_M_H) */
|
||||||
|
@ -122,3 +122,5 @@ typedef uintmax_t uatomic_max_t;
|
|||||||
} \
|
} \
|
||||||
while (__builtin_expect (__val != __oldval, 0)); \
|
while (__builtin_expect (__val != __oldval, 0)); \
|
||||||
__oldval & __mask; })
|
__oldval & __mask; })
|
||||||
|
|
||||||
|
#define atomic_full_barrier() __sync_synchronize ()
|
||||||
|
Loading…
Reference in New Issue
Block a user