23#ifndef __G_BITLOCK_H__
24#define __G_BITLOCK_H__
28#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION)
29#error "Only <glib.h> can be included directly."
75#define g_pointer_bit_lock(address, lock_bit) \
76 (G_GNUC_EXTENSION ({ \
77 G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \
78 g_pointer_bit_lock ((address), (lock_bit)); \
81#define g_pointer_bit_lock_and_get(address, lock_bit, out_ptr) \
82 (G_GNUC_EXTENSION ({ \
83 G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \
84 g_pointer_bit_lock_and_get ((address), (lock_bit), (out_ptr)); \
87#define g_pointer_bit_trylock(address, lock_bit) \
88 (G_GNUC_EXTENSION ({ \
89 G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \
90 g_pointer_bit_trylock ((address), (lock_bit)); \
93#define g_pointer_bit_unlock(address, lock_bit) \
94 (G_GNUC_EXTENSION ({ \
95 G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \
96 g_pointer_bit_unlock ((address), (lock_bit)); \
99#define g_pointer_bit_unlock_and_set(address, lock_bit, ptr, preserve_mask) \
100 (G_GNUC_EXTENSION ({ \
101 G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \
102 g_pointer_bit_unlock_and_set ((address), (lock_bit), (ptr), (preserve_mask)); \
GLIB_AVAILABLE_IN_ALL void g_pointer_bit_lock(volatile void *address, gint lock_bit)
GLIB_AVAILABLE_IN_2_80 void g_pointer_bit_unlock_and_set(void *address, guint lock_bit, gpointer ptr, guintptr preserve_mask)
GLIB_AVAILABLE_IN_2_80 void g_pointer_bit_lock_and_get(gpointer address, guint lock_bit, guintptr *out_ptr)
GLIB_AVAILABLE_IN_ALL void g_bit_unlock(volatile gint *address, gint lock_bit)
GLIB_AVAILABLE_IN_ALL gboolean g_pointer_bit_trylock(volatile void *address, gint lock_bit)
G_BEGIN_DECLS GLIB_AVAILABLE_IN_ALL void g_bit_lock(volatile gint *address, gint lock_bit)
GLIB_AVAILABLE_IN_ALL gboolean g_bit_trylock(volatile gint *address, gint lock_bit)
GLIB_AVAILABLE_IN_ALL void g_pointer_bit_unlock(volatile void *address, gint lock_bit)
GLIB_AVAILABLE_IN_2_80 gpointer g_pointer_bit_lock_mask_ptr(gpointer ptr, guint lock_bit, gboolean set, guintptr preserve_mask, gpointer preserve_ptr)
#define GLIB_AVAILABLE_IN_ALL
#define GLIB_AVAILABLE_IN_2_80