diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2006-12-31 12:16:04 +0000 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2006-12-31 12:16:04 +0000 |
commit | 2dae3a600ba5adfa47645438843e9d61b171d019 (patch) | |
tree | 456b8a88507d2604447ae84fe195b9820215d0c3 /dbus/dbus-sysdeps-unix.c | |
parent | 572ae0a7d4c8bc7849422f948eb9cc6239bed4c1 (diff) |
* dbus/dbus-sysdeps-unix.c: moved _dbus_atomic_inc/dec()
from dbus/dbus-sysdeps.c, windows version of _dbus_atomic_inc/dec()
is in dbus-sysdeps-win.c (not in this patch).
* dbus/dbus-sysdeps.h: DBusAtomic::value is long on windows to fit
with InterlockedInc/Decrement. - Patches from Christian Ehrlicher
Diffstat (limited to 'dbus/dbus-sysdeps-unix.c')
-rw-r--r-- | dbus/dbus-sysdeps-unix.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c index f4afad89..9b6457b2 100644 --- a/dbus/dbus-sysdeps-unix.c +++ b/dbus/dbus-sysdeps-unix.c @@ -1428,6 +1428,53 @@ _dbus_getuid (void) return getuid (); } +/** + * Atomically increments an integer + * + * @param atomic pointer to the integer to increment + * @returns the value before incrementing + * + * @todo implement arch-specific faster atomic ops + */ +dbus_int32_t +_dbus_atomic_inc (DBusAtomic *atomic) +{ +#ifdef DBUS_USE_ATOMIC_INT_486 + return atomic_exchange_and_add (atomic, 1); +#else + dbus_int32_t res; + _DBUS_LOCK (atomic); + res = atomic->value; + atomic->value += 1; + _DBUS_UNLOCK (atomic); + return res; +#endif +} + +/** + * Atomically decrement an integer + * + * @param atomic pointer to the integer to decrement + * @returns the value before decrementing + * + * @todo implement arch-specific faster atomic ops + */ +dbus_int32_t +_dbus_atomic_dec (DBusAtomic *atomic) +{ +#ifdef DBUS_USE_ATOMIC_INT_486 + return atomic_exchange_and_add (atomic, -1); +#else + dbus_int32_t res; + + _DBUS_LOCK (atomic); + res = atomic->value; + atomic->value -= 1; + _DBUS_UNLOCK (atomic); + return res; +#endif +} + #ifdef DBUS_BUILD_TESTS /** Gets our GID * @returns process GID |