diff options
author | Neal H. Walfield <neal@gnu.org> | 2008-12-17 15:10:59 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@gnu.org> | 2009-04-12 12:55:58 +0200 |
commit | 121dc4318edb8a06b610908e8aa2cedade2c5208 (patch) | |
tree | 6f7f38cbf5c783d503e534d8963dacb4246180a4 | |
parent | dc2b3446a7550d39943b7654a74f41c493822097 (diff) |
Add a generic memory.h file based on gcc's __sync functions.
libpthread/
2008-12-17 Neal H. Walfield <neal@gnu.org>
* sysdeps/generic/bits/memory.h: New file.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | sysdeps/generic/bits/memory.h | 36 |
2 files changed, 40 insertions, 0 deletions
@@ -1,5 +1,9 @@ 2008-12-17 Neal H. Walfield <neal@gnu.org> + * sysdeps/generic/bits/memory.h: New file. + +2008-12-17 Neal H. Walfield <neal@gnu.org> + * signal/signal-dispatch.c: Include <viengoos/math.h>. (signal_dispatch): Use vg_lsb64, not l4_lsb64. * sysdeps/viengoos/pt-sigstate.c (__pthread_sigstate): Likewise. diff --git a/sysdeps/generic/bits/memory.h b/sysdeps/generic/bits/memory.h new file mode 100644 index 0000000..7b88a7e --- /dev/null +++ b/sysdeps/generic/bits/memory.h @@ -0,0 +1,36 @@ +/* Memory barrier operations. Generic version. + Copyright (C) 2008 Free Software Foundation, Inc. + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 3 of the + License, or (at your option) any later version. + + The GNU Hurd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _BITS_MEMORY_H +#define _BITS_MEMORY_H 1 + +/* Prevent read and write reordering across this function. */ +static inline void +__memory_barrier (void) +{ + /* Any lock'ed instruction will do. */ + __sync_synchronize (); +} + +/* Prevent read reordering across this function. */ +#define __memory_read_barrier __memory_barrier + +/* Prevent write reordering across this function. */ +#define __memory_write_barrier __memory_barrier + +#endif |