mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-16 12:45:13 +01:00
added g_atomic_pointer_set() and g_atomic_int_set() for systems where the
Tue Dec 13 10:13:32 2005 Tim Janik <timj@imendio.com> * glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set() for systems where the initialization of atomic variables requires a write memory barrier.
This commit is contained in:
parent
2e6faeec59
commit
7c24467a1c
@ -1,3 +1,9 @@
|
|||||||
|
Tue Dec 13 10:13:32 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
|
* glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set()
|
||||||
|
for systems where the initialization of atomic variables requires a
|
||||||
|
write memory barrier.
|
||||||
|
|
||||||
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* configure.in: Bump version
|
* configure.in: Bump version
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
Tue Dec 13 10:13:32 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
|
* glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set()
|
||||||
|
for systems where the initialization of atomic variables requires a
|
||||||
|
write memory barrier.
|
||||||
|
|
||||||
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* configure.in: Bump version
|
* configure.in: Bump version
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
Tue Dec 13 10:13:32 2005 Tim Janik <timj@imendio.com>
|
||||||
|
|
||||||
|
* glib/gatomic.h: added g_atomic_pointer_set() and g_atomic_int_set()
|
||||||
|
for systems where the initialization of atomic variables requires a
|
||||||
|
write memory barrier.
|
||||||
|
|
||||||
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
2005-12-09 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* configure.in: Bump version
|
* configure.in: Bump version
|
||||||
|
@ -613,6 +613,15 @@ g_atomic_int_get (volatile gint *atomic)
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
g_atomic_int_set (volatile gint *atomic,
|
||||||
|
gint newval)
|
||||||
|
{
|
||||||
|
g_mutex_lock (g_atomic_mutex);
|
||||||
|
*atomic = newval;
|
||||||
|
g_mutex_unlock (g_atomic_mutex);
|
||||||
|
}
|
||||||
|
|
||||||
gpointer
|
gpointer
|
||||||
g_atomic_pointer_get (volatile gpointer *atomic)
|
g_atomic_pointer_get (volatile gpointer *atomic)
|
||||||
{
|
{
|
||||||
@ -624,6 +633,15 @@ g_atomic_pointer_get (volatile gpointer *atomic)
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
g_atomic_pointer_set (volatile gpointer *atomic,
|
||||||
|
gpointer newval)
|
||||||
|
{
|
||||||
|
g_mutex_lock (g_atomic_mutex);
|
||||||
|
*atomic = newval;
|
||||||
|
g_mutex_unlock (g_atomic_mutex);
|
||||||
|
}
|
||||||
#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
|
#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
|
||||||
#elif defined (G_ATOMIC_OP_MEMORY_BARRIER_NEEDED)
|
#elif defined (G_ATOMIC_OP_MEMORY_BARRIER_NEEDED)
|
||||||
gint
|
gint
|
||||||
|
@ -34,23 +34,29 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
gint g_atomic_int_exchange_and_add (volatile gint *atomic,
|
gint g_atomic_int_exchange_and_add (volatile gint *atomic,
|
||||||
gint val);
|
gint val);
|
||||||
void g_atomic_int_add (volatile gint *atomic,
|
void g_atomic_int_add (volatile gint *atomic,
|
||||||
gint val);
|
gint val);
|
||||||
gboolean g_atomic_int_compare_and_exchange (volatile gint *atomic,
|
gboolean g_atomic_int_compare_and_exchange (volatile gint *atomic,
|
||||||
gint oldval,
|
gint oldval,
|
||||||
gint newval);
|
gint newval);
|
||||||
gboolean g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
|
gboolean g_atomic_pointer_compare_and_exchange (volatile gpointer *atomic,
|
||||||
gpointer oldval,
|
gpointer oldval,
|
||||||
gpointer newval);
|
gpointer newval);
|
||||||
|
|
||||||
gint g_atomic_int_get (volatile gint *atomic);
|
gint g_atomic_int_get (volatile gint *atomic);
|
||||||
|
void g_atomic_int_set (volatile gint *atomic,
|
||||||
|
gint newval);
|
||||||
gpointer g_atomic_pointer_get (volatile gpointer *atomic);
|
gpointer g_atomic_pointer_get (volatile gpointer *atomic);
|
||||||
|
void g_atomic_pointer_set (volatile gpointer *atomic,
|
||||||
|
gpointer newval);
|
||||||
|
|
||||||
#ifndef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
|
#ifndef G_ATOMIC_OP_MEMORY_BARRIER_NEEDED
|
||||||
# define g_atomic_int_get(atomic) (*(atomic))
|
# define g_atomic_int_get(atomic) (*(atomic))
|
||||||
# define g_atomic_pointer_get(atomic) (*(atomic))
|
# define g_atomic_int_set(atomic, newval) ((void) (*(atomic) = (newval)))
|
||||||
|
# define g_atomic_pointer_get(atomic) (*(atomic))
|
||||||
|
# define g_atomic_pointer_set(atomic, newval) ((void) (*(atomic) = (newval)))
|
||||||
#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
|
#endif /* G_ATOMIC_OP_MEMORY_BARRIER_NEEDED */
|
||||||
|
|
||||||
#define g_atomic_int_inc(atomic) (g_atomic_int_add ((atomic), 1))
|
#define g_atomic_int_inc(atomic) (g_atomic_int_add ((atomic), 1))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user