diff --git a/ChangeLog b/ChangeLog index 17b917a4b..37e3bdae3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2005-12-17 Sebastian Wilhelmi + + * glib/gatomic.c: Fix memory barrier position in g_atomic_int_get + and g_atomic_pointer_get. Add g_atomic_int_set and + g_atomic_pointer_set implementations for the !DEFINE_WITH_MUTEXES && + G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case, as well as defining them + as functions (additionally to the macros in the header) for the + !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case. + 2005-12-16 Matthias Clasen * glib/gmem.c (g_allocator_new): Don't return a pointer to diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 17b917a4b..37e3bdae3 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,12 @@ +2005-12-17 Sebastian Wilhelmi + + * glib/gatomic.c: Fix memory barrier position in g_atomic_int_get + and g_atomic_pointer_get. Add g_atomic_int_set and + g_atomic_pointer_set implementations for the !DEFINE_WITH_MUTEXES && + G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case, as well as defining them + as functions (additionally to the macros in the header) for the + !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case. + 2005-12-16 Matthias Clasen * glib/gmem.c (g_allocator_new): Don't return a pointer to diff --git a/ChangeLog.pre-2-12 b/ChangeLog.pre-2-12 index 17b917a4b..37e3bdae3 100644 --- a/ChangeLog.pre-2-12 +++ b/ChangeLog.pre-2-12 @@ -1,3 +1,12 @@ +2005-12-17 Sebastian Wilhelmi + + * glib/gatomic.c: Fix memory barrier position in g_atomic_int_get + and g_atomic_pointer_get. Add g_atomic_int_set and + g_atomic_pointer_set implementations for the !DEFINE_WITH_MUTEXES && + G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case, as well as defining them + as functions (additionally to the macros in the header) for the + !G_ATOMIC_OP_MEMORY_BARRIER_NEEDED case. + 2005-12-16 Matthias Clasen * glib/gmem.c (g_allocator_new): Don't return a pointer to diff --git a/glib/gatomic.c b/glib/gatomic.c index 5c35868e0..84c392a1d 100644 --- a/glib/gatomic.c +++ b/glib/gatomic.c @@ -647,22 +647,32 @@ g_atomic_pointer_set (volatile gpointer *atomic, gint g_atomic_int_get (volatile gint *atomic) { - gint result = *atomic; - G_ATOMIC_MEMORY_BARRIER; + return *atomic; +} - return result; +void +g_atomic_int_set (volatile gint *atomic, + gint newval) +{ + *atomic = newval; + G_ATOMIC_MEMORY_BARRIER; } gpointer g_atomic_pointer_get (volatile gpointer *atomic) { - gpointer result = *atomic; - G_ATOMIC_MEMORY_BARRIER; - - return result; + return *atomic; } + +void +g_atomic_pointer_set (volatile gpointer *atomic, + gpointer newval) +{ + *atomic = newval; + G_ATOMIC_MEMORY_BARRIER; +} #endif /* DEFINE_WITH_MUTEXES || G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */ #ifdef ATOMIC_INT_CMP_XCHG @@ -712,11 +722,25 @@ gint return g_atomic_int_get (atomic); } +void +(g_atomic_int_set) (volatile gint *atomic, + gint newval) +{ + g_atomic_int_set (atomic, newval); +} + gpointer (g_atomic_pointer_get) (volatile gpointer *atomic) { return g_atomic_pointer_get (atomic); } + +void +(g_atomic_pointer_set) (volatile gpointer *atomic, + gpointer newval) +{ + g_atomic_pointer_set (atomic, newval); +} #endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */ #define __G_ATOMIC_C__