From d45c4a1f40c80d203b6ca8efc338a61d9232846e Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 1 Jan 2007 21:29:59 +0000 Subject: * dbus/dbus-sysdeps-unix.c: unix compile fix, moved atomic_exchange_and_add() from dbus/dbus-sysdeps.c to here, it's used by _dbus_atomic_inc() and _dbus_atomic_dec(). --- ChangeLog | 6 ++++++ dbus/dbus-sysdeps-unix.c | 18 ++++++++++++++++++ dbus/dbus-sysdeps.c | 18 ------------------ 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5f93608e..f0c154e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-12-31 Ralf Habacker + + * dbus/dbus-sysdeps-unix.c: unix compile fix, moved + atomic_exchange_and_add() from dbus/dbus-sysdeps.c + to here, it's used by _dbus_atomic_inc() and _dbus_atomic_dec(). + 2006-12-31 Ralf Habacker * tools/dbus-monitor.c: gettimeofday() is not available diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index 9b6457b2..26fa5f94 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -1428,6 +1428,24 @@ _dbus_getuid (void) return getuid (); } +_DBUS_DEFINE_GLOBAL_LOCK (atomic); + +#ifdef DBUS_USE_ATOMIC_INT_486 +/* Taken from CVS version 1.7 of glibc's sysdeps/i386/i486/atomicity.h */ +/* Since the asm stuff here is gcc-specific we go ahead and use "inline" also */ +static inline dbus_int32_t +atomic_exchange_and_add (DBusAtomic *atomic, + volatile dbus_int32_t val) +{ + register dbus_int32_t result; + + __asm__ __volatile__ ("lock; xaddl %0,%1" + : "=r" (result), "=m" (atomic->value) + : "0" (val), "m" (atomic->value)); + return result; +} +#endif + /** * Atomically increments an integer * diff --git a/dbus/dbus-sysdeps.c b/dbus/dbus-sysdeps.c index 5bd202af..8a437cad 100644 --- a/dbus/dbus-sysdeps.c +++ b/dbus/dbus-sysdeps.c @@ -644,24 +644,6 @@ _dbus_credentials_match (const DBusCredentials *expected_credentials, return FALSE; } -_DBUS_DEFINE_GLOBAL_LOCK (atomic); - -#ifdef DBUS_USE_ATOMIC_INT_486 -/* Taken from CVS version 1.7 of glibc's sysdeps/i386/i486/atomicity.h */ -/* Since the asm stuff here is gcc-specific we go ahead and use "inline" also */ -static inline dbus_int32_t -atomic_exchange_and_add (DBusAtomic *atomic, - volatile dbus_int32_t val) -{ - register dbus_int32_t result; - - __asm__ __volatile__ ("lock; xaddl %0,%1" - : "=r" (result), "=m" (atomic->value) - : "0" (val), "m" (atomic->value)); - return result; -} -#endif - void _dbus_generate_pseudorandom_bytes_buffer (char *buffer, int n_bytes) -- cgit