aboutsummaryrefslogtreecommitdiff
path: root/linuxthreads/internals.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-04-11 17:03:03 +0000
committerUlrich Drepper <drepper@redhat.com>2000-04-11 17:03:03 +0000
commitde26253715b91e7fd4a9854fe836baef86dbc7af (patch)
treefad01a7fbfc9ebc7121551e0d8877c3fed149011 /linuxthreads/internals.h
parente7c036b39ef12abc7ff131982df75e3ec35c0f31 (diff)
downloadglibc-de26253715b91e7fd4a9854fe836baef86dbc7af.zip
glibc-de26253715b91e7fd4a9854fe836baef86dbc7af.tar.gz
glibc-de26253715b91e7fd4a9854fe836baef86dbc7af.tar.bz2
Upadte.
2000-04-11 Ulrich Drepper <drepper@redhat.com> * internals.h: Define MEMORY_BARRIER as empty if not defined already. * spinlock.c (__pthread_lock): Add memory barriers. (__pthread_unlock): Likewise. * sysdeps/alpha/pt-machine.h (MEMORY_BARRIER): Define using mb instruction. (RELEASE): Not needed anymore. (__compare_and_swap): Mark asm as modifying memory. * sysdeps/powerpc/pt-machine.h (sync): Remove. Replace with definition of MEMORY_BARRIER. (__compare_and_swap): Use MEMORY_BARRIER instead of sync. * sysdeps/sparc/sparc32/pt-machine.h (RELEASE): Not needed anymore. (MEMORY_BARRIER): Define using stbar. * sysdeps/sparc/sparc64/pt-machine.h (MEMORY_BARRIER): Define using stbar. (__compare_and_swap): Use MEMORY_BARRIER to ensure ordering. Patch by Xavier Leroy <Xavier.Leroy@inria.fr> based on comments by Mike Burrows <m3b@pa.dec.com>.
Diffstat (limited to 'linuxthreads/internals.h')
-rw-r--r--linuxthreads/internals.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/linuxthreads/internals.h b/linuxthreads/internals.h
index 8cb9b68..3984512 100644
--- a/linuxthreads/internals.h
+++ b/linuxthreads/internals.h
@@ -357,6 +357,13 @@ static inline pthread_descr thread_self (void)
#endif
}
+/* If MEMORY_BARRIER isn't defined in pt-machine.h, assume the architecture
+ doesn't need a memory barrier instruction (e.g. Intel x86) */
+
+#ifndef MEMORY_BARRIER
+#define MEMORY_BARRIER()
+#endif
+
/* Max number of times we must spin on a spinlock calling sched_yield().
After MAX_SPIN_COUNT iterations, we put the calling thread to sleep. */