locks: drop _INIT macros
authorRyan Lortie <desrt@desrt.ca>
Mon, 3 Oct 2011 00:51:38 +0000 (20:51 -0400)
committerRyan Lortie <desrt@desrt.ca>
Mon, 3 Oct 2011 02:33:10 +0000 (22:33 -0400)
All locks are now zero-initialised, so we can drop the G_*_INIT macros
for them.

Adjust various users around GLib accordingly and change the docs.

https://bugzilla.gnome.org/show_bug.cgi?id=659866

22 files changed:
docs/reference/glib/glib-sections.txt
gio/gunionvolumemonitor.c
glib/deprecated/gthread.h
glib/gbitlock.c
glib/glib-ctor.h
glib/gmem.c
glib/gmessages.c
glib/gslice.c
glib/gthread-posix.c
glib/gthread-win32.c
glib/gthread.c
glib/gthread.h
glib/gvarianttypeinfo.c
glib/tests/cond.c
glib/tests/mutex.c
glib/tests/private.c
glib/tests/rec-mutex.c
glib/tests/rwlock.c
gmodule/gmodule.c
gobject/gparam.c
gobject/gtype.c
tests/thread-test.c

index c60c16c2eeac093b9647450176138e2826bfc9cc..d06d5bd813d2599189a6b16f1717e52dd2289beb 100644 (file)
@@ -605,7 +605,6 @@ g_thread_foreach
 
 <SUBSECTION>
 GMutex
-G_MUTEX_INIT
 g_mutex_init
 g_mutex_clear
 g_mutex_new
@@ -616,7 +615,6 @@ g_mutex_unlock
 
 <SUBSECTION>
 GRecMutex
-G_REC_MUTEX_INIT
 g_rec_mutex_init
 g_rec_mutex_clear
 g_rec_mutex_lock
@@ -625,7 +623,6 @@ g_rec_mutex_unlock
 
 <SUBSECTION>
 GRWLock
-G_RW_LOCK_INIT
 g_rw_lock_init
 g_rw_lock_clear
 g_rw_lock_writer_lock
@@ -678,7 +675,6 @@ g_static_rw_lock_free
 
 <SUBSECTION>
 GCond
-G_COND_INIT
 g_cond_new
 g_cond_free
 g_cond_init
index 6d9b21be26142dbbfc5239e85822103536215703..cd814ade1dbee82dc959671261d8df8f6dcb2f83 100644 (file)
@@ -52,7 +52,7 @@ static void g_union_volume_monitor_remove_monitor (GUnionVolumeMonitor *union_mo
 #define g_union_volume_monitor_get_type _g_union_volume_monitor_get_type
 G_DEFINE_TYPE (GUnionVolumeMonitor, g_union_volume_monitor, G_TYPE_VOLUME_MONITOR);
 
-static GRecMutex the_volume_monitor_mutex = G_REC_MUTEX_INIT;
+static GRecMutex the_volume_monitor_mutex;
 
 static GUnionVolumeMonitor *the_volume_monitor = NULL;
 
index 166999169609f8e7f5ca5e2062879ade178ef262..8e013a8f1e03e3385774954033449928804420d4 100644 (file)
@@ -126,7 +126,7 @@ typedef struct {
   struct _GMutex *unused;
   GMutex mutex;
 } GStaticMutex;
-#define G_STATIC_MUTEX_INIT { NULL, G_MUTEX_INIT }
+#define G_STATIC_MUTEX_INIT { NULL, { NULL } }
 #define g_static_mutex_get_mutex(s) (&(s)->mutex)
 #endif /* G_OS_WIN32 */
 
index 1d241fb6928b390bbdc5f9d272450dc8bda735e5..1b2d172a19fc9b69f99bdcdeff882e79badac021 100644 (file)
@@ -36,7 +36,7 @@
 #endif
 
 #ifndef HAVE_FUTEX
-static GMutex g_futex_mutex = G_MUTEX_INIT;
+static GMutex g_futex_mutex;
 static GSList *g_futex_address_list = NULL;
 #endif
 
index a7584ea1882e1a7bfe9899f181574e1a7bbec9ec..7b299f97beb30283f36353377072e6a53cbdc472 100644 (file)
@@ -7,7 +7,7 @@
 #else
 /* could be vastly improved... */
 #define GLIB_CTOR(func) \
-  static GMutex   g__##func##_mutex = G_MUTEX_INIT;   \
+  static GMutex   g__##func##_mutex;                  \
   static gboolean g__##func##_initialised;            \
   static void func (void)
 #define GLIB_ENSURE_CTOR(func) \
index 0e1b5cfb53fc304b48873743ef523563f782c5a5..f19dbc58af1eef8f1e56594a18d7314f82822341 100644 (file)
@@ -623,7 +623,7 @@ static guint *profile_data = NULL;
 static gsize profile_allocs = 0;
 static gsize profile_zinit = 0;
 static gsize profile_frees = 0;
-static GMutex gmem_profile_mutex = G_MUTEX_INIT;
+static GMutex gmem_profile_mutex;
 #ifdef  G_ENABLE_DEBUG
 static volatile gsize g_trap_free_size = 0;
 static volatile gsize g_trap_realloc_size = 0;
index acd55c7f73c22b4e2c60e853ab8b554c30f38a90..c583188c344ec44536164c01cd2f99d7d0bb0c3a 100644 (file)
@@ -101,7 +101,7 @@ struct _GLogHandler
 
 
 /* --- variables --- */
-static GMutex         g_messages_lock = G_MUTEX_INIT;
+static GMutex         g_messages_lock;
 static GLogDomain    *g_log_domains = NULL;
 static GLogLevelFlags g_log_always_fatal = G_LOG_FATAL_MASK;
 static GPrintFunc     glib_print_func = NULL;
index 11a297c1ff7d0ba35f2eb939ce799767c6a845d6..4f34fa91e6cd523d7486b7488eb59b98956a5b20 100644 (file)
@@ -212,7 +212,7 @@ static SliceConfig slice_config = {
   15 * 1000,    /* working_set_msecs */
   1,            /* color increment, alt: 0x7fffffff */
 };
-static GMutex      smc_tree_mutex = G_MUTEX_INIT; /* mutex for G_SLICE=debug-blocks */
+static GMutex      smc_tree_mutex; /* mutex for G_SLICE=debug-blocks */
 
 /* --- auxiliary funcitons --- */
 void
index f2c35aef5c747e9e7911cdbf80900b2e11f3f0c6..dfb2b91b3eff8383c5565cbf18aaa635da4ad902 100644 (file)
@@ -139,8 +139,7 @@ g_mutex_get_impl (GMutex *mutex)
  * This function is useful to initialize a mutex that has been
  * allocated on the stack, or as part of a larger structure.
  * It is not necessary to initialize a mutex that has been
- * created with g_mutex_new(). Also see #G_MUTEX_INIT for an
- * alternative way to initialize statically allocated mutexes.
+ * created with g_mutex_new() or that has been statically allocated.
  *
  * |[
  *   typedef struct {
@@ -317,9 +316,8 @@ g_rec_mutex_get_impl (GRecMutex *rec_mutex)
  * that has been allocated on the stack, or as part of a larger
  * structure.
  * It is not necessary to initialize a recursive mutex that has
- * been created with g_rec_mutex_new(). Also see #G_REC_MUTEX_INIT
- * for an alternative way to initialize statically allocated
- * recursive mutexes.
+ * been created with g_rec_mutex_new(). It is not necessary to
+ * initialise a recursive mutex that has been statically allocated.
  *
  * |[
  *   typedef struct {
@@ -475,9 +473,9 @@ g_rw_lock_get_impl (GRWLock *lock)
  * Initializes a #GRWLock so that it can be used.
  *
  * This function is useful to initialize a lock that has been
- * allocated on the stack, or as part of a larger structure.
- * Also see #G_RW_LOCK_INIT for an alternative way to initialize
- * statically allocated locks.
+ * allocated on the stack, or as part of a larger structure.  It is not
+ * necessary to initialise a reader-writer lock that has been statically
+ * allocated.
  *
  * |[
  *   typedef struct {
@@ -683,8 +681,7 @@ g_cond_get_impl (GCond *cond)
  * This function is useful to initialize a #GCond that has been
  * allocated on the stack, or as part of a larger structure.
  * It is not necessary to initialize a #GCond that has been
- * created with g_cond_new(). Also see #G_COND_INIT for an
- * alternative way to initialize statically allocated #GConds.
+ * created with g_cond_new() or that has been statically allocated.
  *
  * To undo the effect of g_cond_init() when a #GCond is no longer
  * needed, use g_cond_clear().
index 320dda75b1c13471130a55c6082f67845a0ae4df..5d6d867b55fe39e47dc9fca12791fc59558d4cee 100644 (file)
@@ -71,13 +71,8 @@ g_thread_abort (gint         status,
  * that only get the kernel involved in cases of contention (similar
  * to how futex()-based mutexes work on Linux).  The biggest advantage
  * of these new types is that they can be statically initialised to
- * zero.  This allows us to use them directly and still support:
- *
- *   GMutex mutex = G_MUTEX_INIT;
- *
- * and
- *
- *   GCond cond = G_COND_INIT;
+ * zero.  That means that they are completely ABI compatible with our
+ * GMutex and GCond APIs.
  *
  * Unfortunately, Windows XP lacks these facilities and GLib still
  * needs to support Windows XP.  Our approach here is as follows:
index fcac82a99c25f8522c74dcb1efde243a5a99b497..86f1a2152c552044317bdac30587949095f19031 100644 (file)
  *   int
  *   give_me_next_number (void)
  *   {
- *     static GMutex mutex = G_MUTEX_INIT;
+ *     static GMutex mutex;
  *     static int current_number = 0;
  *     int ret_val;
  *
  * functions.
  */
 
-/**
- * G_MUTEX_INIT:
- *
- * Initializer for statically allocated #GMutexes.
- * Alternatively, g_mutex_init() can be used.
- *
- * |[
- *   GMutex mutex = G_MUTEX_INIT;
- * ]|
- *
- * Since: 2.32
- */
-
 /* GRecMutex Documentation {{{1 -------------------------------------- */
 
 /**
  * unlock the recursive mutex as often as it has been locked.
  *
  * A GRecMutex should only be accessed with the
- * <function>g_rec_mutex_</function> functions. Before a GRecMutex
- * can be used, it has to be initialized with #G_REC_MUTEX_INIT or
- * g_rec_mutex_init().
- *
- * Since: 2.32
- */
-
-/**
- * G_REC_MUTEX_INIT:
- *
- * Initializer for statically allocated #GRecMutexes.
- * Alternatively, g_rec_mutex_init() can be used.
- *
- * |[
- *   GRecMutex mutex = G_REC_MUTEX_INIT;
- * ]|
+ * <function>g_rec_mutex_</function> functions.
  *
  * Since: 2.32
  */
  * <example>
  *  <title>An array with access functions</title>
  *  <programlisting>
- *   GRWLock lock = G_RW_LOCK_INIT;
+ *   GRWLock lock;
  *   GPtrArray *array;
  *
  *   gpointer
  * </example>
  *
  * A GRWLock should only be accessed with the
- * <function>g_rw_lock_</function> functions. Before it can be used,
- * it has to be initialized with #G_RW_LOCK_INIT or g_rw_lock_init().
- *
- * Since: 2.32
- */
-
-/**
- * G_RW_LOCK_INIT:
- *
- * Initializer for statically allocated #GRWLocks.
- * Alternatively, g_rw_lock_init_init() can be used.
- *
- * |[
- *   GRWLock lock = G_RW_LOCK_INIT;
- * ]|
+ * <function>g_rw_lock_</function> functions.
  *
  * Since: 2.32
  */
  * functions.
  */
 
-/**
- * G_COND_INIT:
- *
- * Initializer for statically allocated #GConds.
- * Alternatively, g_cond_init() can be used.
- *
- * |[
- *   GCond cond = G_COND_INIT;
- * ]|
- *
- * Since: 2.32
- */
-
 /* GThread Documentation {{{1 ---------------------------------------- */
 
 /**
@@ -578,8 +523,8 @@ g_thread_error_quark (void)
 gboolean         g_threads_got_initialized = FALSE;
 GSystemThread    zero_thread; /* This is initialized to all zero */
 
-GMutex           g_once_mutex = G_MUTEX_INIT;
-static GCond     g_once_cond = G_COND_INIT;
+GMutex           g_once_mutex;
+static GCond     g_once_cond;
 static GSList   *g_once_init_list = NULL;
 
 static void g_thread_cleanup (gpointer data);
index 4ef6bab187b2ba65dca7687ebedb9c46e8b1a085..495eaa0a5983221a86e70b576c99f10a2516d2db 100644 (file)
@@ -59,25 +59,21 @@ typedef struct _GCond           GCond;
 typedef struct _GPrivate        GPrivate;
 typedef struct _GStaticPrivate  GStaticPrivate;
 
-#define G_MUTEX_INIT { NULL }
 struct _GMutex
 {
   gpointer impl;
 };
 
-#define G_RW_LOCK_INIT { NULL }
 struct _GRWLock
 {
   gpointer impl;
 };
 
-#define G_COND_INIT { NULL }
 struct _GCond
 {
   gpointer impl;
 };
 
-#define G_REC_MUTEX_INIT { NULL }
 struct _GRecMutex
 {
   gpointer impl;
@@ -168,8 +164,7 @@ g_once_init_enter (volatile gsize *value_location)
 
 #define G_LOCK_NAME(name)               g__ ## name ## _lock
 #define G_LOCK_DEFINE_STATIC(name)    static G_LOCK_DEFINE (name)
-#define G_LOCK_DEFINE(name)           \
-  GMutex G_LOCK_NAME (name) = G_MUTEX_INIT
+#define G_LOCK_DEFINE(name)           GMutex G_LOCK_NAME (name)
 #define G_LOCK_EXTERN(name)           extern GMutex G_LOCK_NAME (name)
 
 #ifdef G_DEBUG_LOCKS
index 6ac37d5154c05b2ce811c23ee2710d4232d66ea6..0c380ce1fd03ce34a0b79ecb81ea4d89f622d908 100644 (file)
@@ -709,7 +709,7 @@ g_variant_type_info_member_info (GVariantTypeInfo *info,
 }
 
 /* == new/ref/unref == */
-static GRecMutex g_variant_type_info_lock = G_REC_MUTEX_INIT;
+static GRecMutex g_variant_type_info_lock;
 static GHashTable *g_variant_type_info_table;
 
 /* < private >
index e10f98243a341e2bf7ac4725ce761b014cdfe6b8..ac9e8dc4cd0860107afcfaf34bf2f77650f1f9a2 100644 (file)
@@ -22,8 +22,8 @@
 
 #include <glib.h>
 
-static GCond cond = G_COND_INIT;
-static GMutex mutex = G_MUTEX_INIT;
+static GCond cond;
+static GMutex mutex;
 static volatile gint next;
 
 static void
index 66ec5fbb67eb276aa960ef8c90e927a18c42599c..17959c252fcf1392ef05d720d5e1346deb84c048 100644 (file)
@@ -40,13 +40,12 @@ test_mutex1 (void)
 static void
 test_mutex2 (void)
 {
-  GMutex mutex = G_MUTEX_INIT;
+  static GMutex mutex;
 
   g_mutex_lock (&mutex);
   g_mutex_unlock (&mutex);
   g_mutex_lock (&mutex);
   g_mutex_unlock (&mutex);
-  g_mutex_clear (&mutex);
 }
 
 static void
@@ -65,7 +64,7 @@ test_mutex3 (void)
 static void
 test_mutex4 (void)
 {
-  GMutex mutex = G_MUTEX_INIT;
+  static GMutex mutex;
   gboolean ret;
 
   ret = g_mutex_trylock (&mutex);
@@ -76,7 +75,6 @@ test_mutex4 (void)
     g_mutex_unlock (&mutex);
 
   g_mutex_unlock (&mutex);
-  g_mutex_clear (&mutex);
 }
 
 #define LOCKS      48
@@ -159,7 +157,7 @@ test_mutex5 (void)
 static gboolean
 do_addition (gint *value)
 {
-  static GMutex lock = G_MUTEX_INIT;
+  static GMutex lock;
   gboolean more;
 
   /* test performance of "good" cases (ie: short critical sections) */
index 9b5b8ea8568fcbfdc60ca251989960df1dae2404..e3e392f572ed88132178a674a56ecf85335abbb8 100644 (file)
@@ -253,9 +253,9 @@ test_static_private4 (void)
 }
 
 static GStaticPrivate sp5 = G_STATIC_PRIVATE_INIT;
-static GMutex m5 = G_MUTEX_INIT;
-static GCond c5a = G_COND_INIT;
-static GCond c5b = G_COND_INIT;
+static GMutex m5;
+static GCond c5a;
+static GCond c5b;
 static gint count5;
 
 static gpointer
index 9ade360ab4691f39878947f1d7a427d19760877e..c8d5a35b34f03a01f9dfd444bcd8ac19f2dcab3e 100644 (file)
@@ -38,19 +38,18 @@ test_rec_mutex1 (void)
 static void
 test_rec_mutex2 (void)
 {
-  GRecMutex mutex = G_REC_MUTEX_INIT;
+  static GRecMutex mutex;
 
   g_rec_mutex_lock (&mutex);
   g_rec_mutex_unlock (&mutex);
   g_rec_mutex_lock (&mutex);
   g_rec_mutex_unlock (&mutex);
-  g_rec_mutex_clear (&mutex);
 }
 
 static void
 test_rec_mutex3 (void)
 {
-  GRecMutex mutex = G_REC_MUTEX_INIT;
+  static GRecMutex mutex;
   gboolean ret;
 
   ret = g_rec_mutex_trylock (&mutex);
@@ -61,7 +60,6 @@ test_rec_mutex3 (void)
 
   g_rec_mutex_unlock (&mutex);
   g_rec_mutex_unlock (&mutex);
-  g_rec_mutex_clear (&mutex);
 }
 
 #define LOCKS      48
index 63946e4cc75ae23a1608e02f315412e79a5ee8db..d3d0f9da405f3a9dab96bdb6fbaa6fa89fc0d9bd 100644 (file)
@@ -38,19 +38,18 @@ test_rwlock1 (void)
 static void
 test_rwlock2 (void)
 {
-  GRWLock lock = G_RW_LOCK_INIT;
+  static GRWLock lock;
 
   g_rw_lock_writer_lock (&lock);
   g_rw_lock_writer_unlock (&lock);
   g_rw_lock_writer_lock (&lock);
   g_rw_lock_writer_unlock (&lock);
-  g_rw_lock_clear (&lock);
 }
 
 static void
 test_rwlock3 (void)
 {
-  GRWLock lock = G_RW_LOCK_INIT;
+  static GRWLock lock;
   gboolean ret;
 
   ret = g_rw_lock_writer_trylock (&lock);
@@ -59,26 +58,23 @@ test_rwlock3 (void)
   g_assert (!ret);
 
   g_rw_lock_writer_unlock (&lock);
-
-  g_rw_lock_clear (&lock);
 }
 
 static void
 test_rwlock4 (void)
 {
-  GRWLock lock = G_RW_LOCK_INIT;
+  static GRWLock lock;
 
   g_rw_lock_reader_lock (&lock);
   g_rw_lock_reader_unlock (&lock);
   g_rw_lock_reader_lock (&lock);
   g_rw_lock_reader_unlock (&lock);
-  g_rw_lock_clear (&lock);
 }
 
 static void
 test_rwlock5 (void)
 {
-  GRWLock lock = G_RW_LOCK_INIT;
+  static GRWLock lock;
   gboolean ret;
 
   ret = g_rw_lock_reader_trylock (&lock);
@@ -88,14 +84,12 @@ test_rwlock5 (void)
 
   g_rw_lock_reader_unlock (&lock);
   g_rw_lock_reader_unlock (&lock);
-
-  g_rw_lock_clear (&lock);
 }
 
 static void
 test_rwlock6 (void)
 {
-  GRWLock lock = G_RW_LOCK_INIT;
+  static GRWLock lock;
   gboolean ret;
 
   g_rw_lock_writer_lock (&lock);
@@ -107,8 +101,6 @@ test_rwlock6 (void)
   ret = g_rw_lock_writer_trylock (&lock);
   g_assert (!ret);
   g_rw_lock_reader_unlock (&lock);
-
-  g_rw_lock_clear (&lock);
 }
 
 
index c1a6486bee667ee8502a62b7b8306628a4e8b554..e4ef3eb36b1ad19b5bb789226ba773c57cb5be97 100644 (file)
@@ -326,7 +326,7 @@ _g_module_debug_init (void)
   module_debug_initialized = TRUE;
 }
 
-static GRecMutex g_module_global_lock = G_REC_MUTEX_INIT;
+static GRecMutex g_module_global_lock;
 
 GModule*
 g_module_open (const gchar    *file_name,
index ec4cb89e0f260ba3c82ca19426e9cff5cc586117..22f72b2e740438c20d49dd41302e1a4c0468162d 100644 (file)
@@ -891,7 +891,7 @@ param_spec_pool_equals (gconstpointer key_spec_1,
 GParamSpecPool*
 g_param_spec_pool_new (gboolean type_prefixing)
 {
-  static GMutex init_mutex = G_MUTEX_INIT;
+  static GMutex init_mutex;
   GParamSpecPool *pool = g_new (GParamSpecPool, 1);
 
   memcpy (&pool->mutex, &init_mutex, sizeof (init_mutex));
index da1624014bee31cdeae4feb0316a3a7e33078fbb..a966200893fd4abf91f772caf766a8807fb258a1 100644 (file)
@@ -368,8 +368,8 @@ typedef struct {
 
 
 /* --- variables --- */
-static GRWLock         type_rw_lock = G_RW_LOCK_INIT;
-static GRecMutex       class_init_rec_mutex = G_REC_MUTEX_INIT;
+static GRWLock         type_rw_lock;
+static GRecMutex       class_init_rec_mutex;
 static guint           static_n_class_cache_funcs = 0;
 static ClassCacheFunc *static_class_cache_funcs = NULL;
 static guint           static_n_iface_check_funcs = 0;
index fa4f02bfbd5f57609a81b31803e8fc15357c9aa7..0f41fc7cd9e79f73e416d5a85b2098e1c90045d4 100644 (file)
@@ -110,7 +110,7 @@ test_g_static_rec_mutex (void)
 
 static GStaticPrivate test_g_static_private_private1 = G_STATIC_PRIVATE_INIT;
 static GStaticPrivate test_g_static_private_private2 = G_STATIC_PRIVATE_INIT;
-static GMutex test_g_static_private_mutex = G_MUTEX_INIT;
+static GMutex test_g_static_private_mutex;
 static guint test_g_static_private_counter = 0;
 static guint test_g_static_private_ready = 0;