summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Wilhelmi <seppi@seppi.de>2005-12-17 12:20:50 +0000
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>2005-12-17 12:20:50 +0000
commit78568970db620104924b45804c0604e934876075 (patch)
tree1b6a4578601c4e935b1d405bccfba906a9306daf
parent63732bdf5ec0edc75a58c39fbbb9e98f8f65d001 (diff)
downloadglib-78568970db620104924b45804c0604e934876075.tar.gz
Fix memory barrier position in g_atomic_int_get and g_atomic_pointer_get.
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.
-rw-r--r--ChangeLog9
-rw-r--r--ChangeLog.pre-2-109
-rw-r--r--ChangeLog.pre-2-129
-rw-r--r--glib/gatomic.c38
4 files changed, 58 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 17b917a4b..37e3bdae3 100644
--- 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
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 <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
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 <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
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__