X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fgbitlock.h;h=5fab49494f5835095280476fb8609860f959e884;hb=4454b815367831a71b1ae00b0182b5b389a78df2;hp=5f6a67fd847cc07e36d30383eb5b9e30413a5a6b;hpb=522dafe126ed814a1699238142fbc12b7f55b0b6;p=platform%2Fupstream%2Fglib.git diff --git a/glib/gbitlock.h b/glib/gbitlock.h index 5f6a67f..5fab494 100644 --- a/glib/gbitlock.h +++ b/glib/gbitlock.h @@ -13,9 +13,7 @@ * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * License along with this library; if not, see . * * Author: Ryan Lortie */ @@ -25,19 +23,54 @@ #include -#if defined(G_DISABLE_SINGLE_INCLUDES) && !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) +#if !defined (__GLIB_H_INSIDE__) && !defined (GLIB_COMPILATION) #error "Only can be included directly." #endif 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_bit_unlock (volatile gint *address, gint lock_bit); +GLIB_AVAILABLE_IN_ALL +void g_pointer_bit_lock (volatile void *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +gboolean g_pointer_bit_trylock (volatile void *address, + gint lock_bit); +GLIB_AVAILABLE_IN_ALL +void g_pointer_bit_unlock (volatile void *address, + gint lock_bit); + +#ifdef __GNUC__ + +#define g_pointer_bit_lock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_lock ((address), (lock_bit)); \ + })) + +#define g_pointer_bit_trylock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_trylock ((address), (lock_bit)); \ + })) + +#define g_pointer_bit_unlock(address, lock_bit) \ + (G_GNUC_EXTENSION ({ \ + G_STATIC_ASSERT (sizeof *(address) == sizeof (gpointer)); \ + g_pointer_bit_unlock ((address), (lock_bit)); \ + })) + +#endif + G_END_DECLS #endif /* __G_BITLOCK_H_ */