diff options
-rw-r--r-- | sysdeps/generic/pt-once.c | 6 | ||||
-rw-r--r-- | sysdeps/i386/bits/memory.h | 39 |
2 files changed, 3 insertions, 42 deletions
diff --git a/sysdeps/generic/pt-once.c b/sysdeps/generic/pt-once.c index da1e1e6..a3a139a 100644 --- a/sysdeps/generic/pt-once.c +++ b/sysdeps/generic/pt-once.c @@ -17,14 +17,14 @@ not, see <http://www.gnu.org/licenses/>. */ #include <pthread.h> -#include <bits/memory.h> +#include <atomic.h> #include <pt-internal.h> int __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) { - __memory_barrier (); + atomic_full_barrier (); if (once_control->__run == 0) { __pthread_spin_lock (&once_control->__lock); @@ -32,7 +32,7 @@ __pthread_once (pthread_once_t *once_control, void (*init_routine) (void)) if (once_control->__run == 0) { init_routine (); - __memory_barrier (); + atomic_full_barrier (); once_control->__run = 1; } diff --git a/sysdeps/i386/bits/memory.h b/sysdeps/i386/bits/memory.h deleted file mode 100644 index edbb468..0000000 --- a/sysdeps/i386/bits/memory.h +++ /dev/null @@ -1,39 +0,0 @@ -/* Memory barrier operations. i386 version. - Copyright (C) 2002-2018 Free Software Foundation, Inc. - This file is part of the GNU C Library. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - The GNU C Library 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. 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) -{ - int i; - - /* Any lock'ed instruction will do. We just do a simple - increment. */ - __asm__ __volatile ("lock; incl %0" : "=m" (i) : "m" (i) : "memory"); -} - -/* 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 |