Fix memory barrier position in g_atomic_int_get and g_atomic_pointer_get.
authorSebastian Wilhelmi <seppi@seppi.de>
Sat, 17 Dec 2005 12:20:50 +0000 (12:20 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Sat, 17 Dec 2005 12:20:50 +0000 (12:20 +0000)
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.

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
glib/gatomic.c

index 17b917a..37e3bda 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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
index 17b917a..37e3bda 100644 (file)
@@ -1,3 +1,12 @@
+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
index 17b917a..37e3bda 100644 (file)
@@ -1,3 +1,12 @@
+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
index 5c35868..84c392a 100644 (file)
@@ -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__