[glib] GStaticMutex: remove ./configure checks
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] GStaticMutex: remove ./configure checks
- Date: Wed, 21 Sep 2011 20:18:42 +0000 (UTC)
commit 4ec6d47806dbb4934aeeb748196d24f7cd0eb10c
Author: Ryan Lortie <desrt desrt ca>
Date: Sat Sep 17 20:15:07 2011 -0400
GStaticMutex: remove ./configure checks
Now that GMutex is exposed we can avoid the dance we did in ./configure
to allocate the correct amount of space for it within the GStaticMutex.
Remove the checks and move the definitions to gthread.h, trying very
hard to keep ABI-stable (even though we will be deprecating this soon).
configure.ac | 63 +-------------------------------------------------------
glib/gthread.h | 22 +++++++++++--------
2 files changed, 14 insertions(+), 71 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 2bcc076..3515cb5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2117,7 +2117,6 @@ CPPFLAGS="$CPPFLAGS $G_THREAD_CFLAGS"
dnl determination of G_THREAD_LIBS
dnl ******************************
-mutex_has_default=no
case $have_threads in
posix)
glib_save_CPPFLAGS="$CPPFLAGS"
@@ -2198,10 +2197,6 @@ case $have_threads in
fi
done
LIBS="$glib_save_LIBS"
- mutex_has_default=yes
- mutex_default_type='pthread_mutex_t'
- mutex_default_init='PTHREAD_MUTEX_INITIALIZER'
- mutex_header_file='pthread.h'
g_threads_impl="POSIX"
AC_SUBST(GTHREAD_COMPILE_IMPL_DEFINES)
CPPFLAGS="$glib_save_CPPFLAGS"
@@ -2430,32 +2425,6 @@ AC_SUBST(G_THREAD_LIBS)
AC_SUBST(G_THREAD_LIBS_FOR_GTHREAD)
AC_SUBST(G_THREAD_LIBS_EXTRA)
-dnl **********************************************
-dnl *** GDefaultMutex setup and initialization ***
-dnl **********************************************
-dnl
-dnl if mutex_has_default = yes, we also got
-dnl mutex_default_type, mutex_default_init and mutex_header_file
-if test $mutex_has_default = yes ; then
- glib_save_CPPFLAGS="$CPPFLAGS"
- glib_save_LIBS="$LIBS"
- LIBS="$G_THREAD_LIBS $LIBS"
- CPPFLAGS="$CPPFLAGS $GTHREAD_COMPILE_IMPL_DEFINES"
- GLIB_SIZEOF([#include <$mutex_header_file>],
- $mutex_default_type,
- gmutex)
- GLIB_BYTE_CONTENTS([#include <$mutex_header_file>],
- $mutex_default_type,
- gmutex,
- $glib_cv_sizeof_gmutex,
- $mutex_default_init)
- if test x"$glib_cv_byte_contents_gmutex" = xno; then
- mutex_has_default=no
- fi
- CPPFLAGS="$glib_save_CPPFLAGS"
- LIBS="$glib_save_LIBS"
-fi
-
AC_CHECK_FUNCS(clock_gettime, [], [
AC_CHECK_LIB(rt, clock_gettime, [
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
@@ -3250,38 +3219,11 @@ _______EOF
#endif
_______EOF
-
echo >>$outfile
- if test x$g_mutex_has_default = xyes; then
- cat >>$outfile <<_______EOF
-#define G_THREADS_ENABLED
-#define G_THREADS_IMPL_$g_threads_impl_def
-typedef struct _GStaticMutex GStaticMutex;
-struct _GStaticMutex
-{
- struct _GMutex *runtime_mutex;
- union {
- char pad[[$g_mutex_sizeof]];
- double dummy_double;
- void *dummy_pointer;
- long dummy_long;
- } static_mutex;
-};
-#define G_STATIC_MUTEX_INIT { NULL, { { $g_mutex_contents} } }
-#define g_static_mutex_get_mutex(mutex) \\
- (g_thread_use_default_impl ? ((GMutex*)(gpointer) ((mutex)->static_mutex.pad)) : \\
- g_static_mutex_get_mutex_impl_shortcut (&((mutex)->runtime_mutex)))
-_______EOF
- else
- cat >>$outfile <<_______EOF
+ cat >>$outfile <<_______EOF
#define G_THREADS_ENABLED
#define G_THREADS_IMPL_$g_threads_impl_def
-typedef struct _GMutex* GStaticMutex;
-#define G_STATIC_MUTEX_INIT NULL
-#define g_static_mutex_get_mutex(mutex) \\
- (g_static_mutex_get_mutex_impl_shortcut (mutex))
_______EOF
- fi
cat >>$outfile <<_______EOF
/* This represents a system thread as used by the implementation. An
@@ -3670,10 +3612,7 @@ g_have_eilseq=$have_eilseq
g_threads_impl_def=$g_threads_impl
-g_mutex_has_default="$mutex_has_default"
-g_mutex_sizeof="$glib_cv_sizeof_gmutex"
g_system_thread_sizeof="$glib_cv_sizeof_system_thread"
-g_mutex_contents="$glib_cv_byte_contents_gmutex"
g_memory_barrier_needed="$glib_memory_barrier_needed"
g_gcc_atomic_ops="$glib_cv_gcc_has_builtin_atomic_operations"
diff --git a/glib/gthread.h b/glib/gthread.h
index 6b7b7b6..14da02b 100644
--- a/glib/gthread.h
+++ b/glib/gthread.h
@@ -168,10 +168,6 @@ gboolean g_thread_get_initialized (void);
/* internal function for fallback static mutex implementation */
GMutex* g_static_mutex_get_mutex_impl (GMutex **mutex);
-#define g_static_mutex_get_mutex_impl_shortcut(mutex) \
- (g_atomic_pointer_get (mutex) ? *(mutex) : \
- g_static_mutex_get_mutex_impl (mutex))
-
/* shorthands for conditional and unconditional function calls */
#define G_THREAD_UF(op, arglist) \
@@ -219,11 +215,19 @@ gpointer g_thread_join (GThread *thread);
void g_thread_set_priority (GThread *thread,
GThreadPriority priority);
-/* GStaticMutexes can be statically initialized with the value
- * G_STATIC_MUTEX_INIT, and then they can directly be used, that is
- * much easier, than having to explicitly allocate the mutex before
- * use
- */
+#ifdef G_OS_WIN32
+typedef GMutex * GStaticMutex;
+#define G_STATIC_MUTEX_INIT NULL
+#define g_static_mutex_get_mutex g_static_mutex_get_mutex_impl
+#else /* G_OS_WIN32 */
+typedef struct {
+ struct _GMutex *unused;
+ GMutex mutex;
+} GStaticMutex;
+#define G_STATIC_MUTEX_INIT { NULL, G_MUTEX_INIT }
+#define g_static_mutex_get_mutex(s) (&(s)->mutex)
+#endif /* G_OS_WIN32 */
+
#define g_static_mutex_lock(mutex) \
g_mutex_lock (g_static_mutex_get_mutex (mutex))
#define g_static_mutex_trylock(mutex) \
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]