+2005-12-17 Sebastian Wilhelmi <seppi@seppi.de>
+
+ * 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 <mclasen@redhat.com>
* glib/gmem.c (g_allocator_new): Don't return a pointer to
+2005-12-17 Sebastian Wilhelmi <seppi@seppi.de>
+
+ * 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 <mclasen@redhat.com>
* glib/gmem.c (g_allocator_new): Don't return a pointer to
+2005-12-17 Sebastian Wilhelmi <seppi@seppi.de>
+
+ * 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 <mclasen@redhat.com>
* glib/gmem.c (g_allocator_new): Don't return a pointer to
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
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__