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.
This commit is contained in:
Sebastian Wilhelmi 2005-12-17 12:20:50 +00:00 committed by Sebastian Wilhelmi
parent 63732bdf5e
commit 78568970db
4 changed files with 58 additions and 7 deletions

View 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

View 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

View 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

View 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__