mirror of
https://gitlab.freedesktop.org/dbus/dbus.git
synced 2026-05-05 06:28:00 +02:00
* 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
This commit is contained in:
parent
572ae0a7d4
commit
2dae3a600b
4 changed files with 61 additions and 47 deletions
10
ChangeLog
10
ChangeLog
|
|
@ -1,3 +1,13 @@
|
|||
2006-12-31 Ralf Habacker <ralf.habacker@freenet.de>
|
||||
|
||||
* 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
|
||||
|
||||
2006-12-31 Ralf Habacker <ralf.habacker@freenet.de>
|
||||
|
||||
* tools/dbus-send.c, tools/dbus-monitor.c: win32 compile fix.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -662,53 +662,6 @@ atomic_exchange_and_add (DBusAtomic *atomic,
|
|||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* 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
|
||||
}
|
||||
|
||||
void
|
||||
_dbus_generate_pseudorandom_bytes_buffer (char *buffer,
|
||||
int n_bytes)
|
||||
|
|
|
|||
|
|
@ -229,7 +229,11 @@ typedef struct DBusAtomic DBusAtomic;
|
|||
*/
|
||||
struct DBusAtomic
|
||||
{
|
||||
#ifdef DBUS_WIN
|
||||
volatile long value; /**< Value of the atomic integer. */
|
||||
#else
|
||||
volatile dbus_int32_t value; /**< Value of the atomic integer. */
|
||||
#endif
|
||||
};
|
||||
|
||||
dbus_int32_t _dbus_atomic_inc (DBusAtomic *atomic);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue