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:
Ulrich Drepper 2003-07-01 08:31:38 +00:00
parent 96c814d3d8
commit b5d5b67be3
4 changed files with 26 additions and 1 deletions

View File

@ -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>
* sysdeps/generic/sysdep.h: Define cfi_rel_offset and CFI_REL_OFFSET.

View File

@ -1,5 +1,5 @@
/* 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.
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. */
(void)mutex_lock(&list_lock);
a->next = main_arena.next;
atomic_write_barrier ();
main_arena.next = a;
(void)mutex_unlock(&list_lock);

View File

@ -31,6 +31,7 @@
#if defined(_LIBC) /* The GNU C library, a special case of Posix threads */
#include <atomic.h>
#include <bits/libc-lock.h>
#ifdef PTHREAD_MUTEX_INITIALIZER
@ -306,4 +307,16 @@ typedef void *tsd_key_t;
#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) */

View File

@ -122,3 +122,5 @@ typedef uintmax_t uatomic_max_t;
} \
while (__builtin_expect (__val != __oldval, 0)); \
__oldval & __mask; })
#define atomic_full_barrier() __sync_synchronize ()