Author: Pekka Riikonen <priikone@silcnet.org>
- Copyright (C) 2006 - 2007 Pekka Riikonen
+ Copyright (C) 2006 - 2008 Pekka Riikonen
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
-/****h* silcutil/SILC Atomic Operations Interface
+/****h* silcutil/Atomic Operations Interface
*
* DESCRIPTION
*
#define SILC_SMP_LOCK
#endif /* SILC_SMP */
-/****s* silcutil/SilcAtomicAPI/SilcAtomic32
+/****s* silcutil/SilcAtomic32
*
* NAME
*
*
***/
-/****s* silcutil/SilcAtomicAPI/SilcAtomic16
+/****s* silcutil/SilcAtomic16
*
* NAME
*
*
***/
-/****s* silcutil/SilcAtomicAPI/SilcAtomic8
+/****s* silcutil/SilcAtomic8
*
* NAME
*
*
***/
-/****s* silcutil/SilcAtomicAPI/SilcAtomicPointer
+/****s* silcutil/SilcAtomicPointer
*
* NAME
*
} SilcAtomic8;
#endif
-/****f* silcutil/SilcAtomicAPI/silc_atomic_init32
+/****f* silcutil/silc_atomic_init32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_init16
+/****f* silcutil/silc_atomic_init16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_init8
+/****f* silcutil/silc_atomic_init8
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_init_pointer
+/****f* silcutil/silc_atomic_init_pointer
*
* SYNOPSIS
*
SILC_ATOMIC_INIT(32, 32, SilcUInt32)
SILC_ATOMIC_INIT(_pointer, Pointer, void *)
-/****f* silcutil/SilcAtomicAPI/silc_atomic_uninit32
+/****f* silcutil/silc_atomic_uninit32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_uninit16
+/****f* silcutil/silc_atomic_uninit16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_uninit8
+/****f* silcutil/silc_atomic_uninit8
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_uninit_pointer
+/****f* silcutil/silc_atomic_uninit_pointer
*
* SYNOPSIS
*
SILC_ATOMIC_UNINIT(32, 32)
SILC_ATOMIC_UNINIT(_pointer, Pointer)
-/****f* silcutil/SilcAtomicAPI/silc_atomic_set_int32
+/****f* silcutil/silc_atomic_set_int32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_set_int16
+/****f* silcutil/silc_atomic_set_int16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_set_int8
+/****f* silcutil/silc_atomic_set_int8
*
* SYNOPSIS
*
SILC_ATOMIC_SET_INT_F(bits) \
{ \
/* Windows */ \
- InterlockedExchange((LONG)&atomic->value, (LONG)value); \
+ InterlockedExchange((LONG *)&atomic->value, (LONG)value); \
}
#elif defined(__GNUC__) && (defined(SILC_I486) || defined(SILC_X86_64))
SILC_ATOMIC_SET_INT(16, "w", "w")
SILC_ATOMIC_SET_INT(32, "l", "")
-/****f* silcutil/SilcAtomicAPI/silc_atomic_set_pointer
+/****f* silcutil/silc_atomic_set_pointer
*
* SYNOPSIS
*
#endif
}
-/****f* silcutil/SilcAtomicAPI/silc_atomic_get_int32
+/****f* silcutil/silc_atomic_get_int32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_get_int16
+/****f* silcutil/silc_atomic_get_int16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_get_int8
+/****f* silcutil/silc_atomic_get_int8
*
* SYNOPSIS
*
SILC_ATOMIC_GET_INT(16)
SILC_ATOMIC_GET_INT(32)
-/****f* silcutil/SilcAtomicAPI/silc_atomic_get_pointer
+/****f* silcutil/silc_atomic_get_pointer
*
* SYNOPSIS
*
#endif
}
-/****f* silcutil/SilcAtomicAPI/silc_atomic_add_int32
+/****f* silcutil/silc_atomic_add_int32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_add_int16
+/****f* silcutil/silc_atomic_add_int16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_add_int8
+/****f* silcutil/silc_atomic_add_int8
*
* SYNOPSIS
*
SILC_ATOMIC_ADD_INT(16, "w")
SILC_ATOMIC_ADD_INT(32, "l")
-/****f* silcutil/SilcAtomicAPI/silc_atomic_sub_int32
+/****f* silcutil/silc_atomic_sub_int32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_sub_int16
+/****f* silcutil/silc_atomic_sub_int16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_sub_int8
+/****f* silcutil/silc_atomic_sub_int8
*
* SYNOPSIS
*
#define silc_atomic_sub_int16(a, v) silc_atomic_add_int16(a, (-v))
#define silc_atomic_sub_int32(a, v) silc_atomic_add_int32(a, (-v))
-/****f* silcutil/SilcAtomicAPI/silc_atomic_inc32
+/****f* silcutil/silc_atomic_inc32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_inc16
+/****f* silcutil/silc_atomic_inc16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_inc8
+/****f* silcutil/silc_atomic_inc8
*
* SYNOPSIS
*
SILC_ATOMIC_INC_F(bits) \
{ \
/* Windows */ \
- InterlockedIncrement((LONG)&atomic->value); \
+ InterlockedIncrement((LONG *)&atomic->value); \
}
#elif defined(__GNUC__) && (defined(SILC_I486) || defined(SILC_X86_64))
SILC_ATOMIC_INC(16, "w")
SILC_ATOMIC_INC(32, "l")
-/****f* silcutil/SilcAtomicAPI/silc_atomic_dec32
+/****f* silcutil/silc_atomic_dec32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_dec16
+/****f* silcutil/silc_atomic_dec16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_dec8
+/****f* silcutil/silc_atomic_dec8
*
* SYNOPSIS
*
SILC_ATOMIC_DEC_F(bits) \
{ \
/* Windows */ \
- InterlockedDecrement((LONG)&atomic->value); \
+ InterlockedDecrement((LONG *)&atomic->value); \
}
#elif defined(__GNUC__) && (defined(SILC_I486) || defined(SILC_X86_64))
SILC_ATOMIC_DEC(16, "w")
SILC_ATOMIC_DEC(32, "l")
-/****f* silcutil/SilcAtomicAPI/silc_atomic_cas32
+/****f* silcutil/silc_atomic_cas32
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_cas16
+/****f* silcutil/silc_atomic_cas16
*
* SYNOPSIS
*
*
***/
-/****f* silcutil/SilcAtomicAPI/silc_atomic_cas8
+/****f* silcutil/silc_atomic_cas8
*
* SYNOPSIS
*
SILC_ATOMIC_CAS(16, "w")
SILC_ATOMIC_CAS(32, "l")
-/****f* silcutil/SilcAtomicAPI/silc_atomic_cas_pointer
+/****f* silcutil/silc_atomic_cas_pointer
*
* SYNOPSIS
*