+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * glib/gthread.h (GThreadFunctions): Add thread_equal function to
+ allow for platform defined function to compare two threads.
+
+ * glib/gthread.c: Use g_thread_functions_for_glib_use.thread_equal
+ when non-NULL instead of ==.
+
Wed Sep 19 10:44:25 2001 Tim Janik <timj@gtk.org>
* Released 1.3.8.
@thread_exit:
@thread_set_priority:
@thread_self:
+@thread_equal:
<!-- ##### FUNCTION g_thread_init ##### -->
#include <string.h>
#if GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P
-# define g_system_thread_equal(thread1, thread2) \
- (thread1.dummy_pointer == thread2.dummy_pointer)
+# define g_system_thread_equal_simple(thread1, thread2) \
+ ((thread1).dummy_pointer == (thread2).dummy_pointer)
# define g_system_thread_assign(dest, src) \
- (dest.dummy_pointer = src.dummy_pointer)
+ ((dest).dummy_pointer = (src).dummy_pointer)
#else /* GLIB_SIZEOF_SYSTEM_THREAD != SIZEOF_VOID_P */
-# define g_system_thread_equal(thread1, thread2) \
- (memcmp (&thread1, &thread2, GLIB_SIZEOF_SYSTEM_THREAD) == 0)
+# define g_system_thread_equal_simple(thread1, thread2) \
+ (memcmp (&(thread1), &(thread2), GLIB_SIZEOF_SYSTEM_THREAD) == 0)
# define g_system_thread_assign(dest, src) \
- (memcpy (&dest, &src, GLIB_SIZEOF_SYSTEM_THREAD))
+ (memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
+#define g_system_thread_equal(thread1, thread2) \
+ (g_thread_functions_for_glib_use.thread_equal ? \
+ g_thread_functions_for_glib_use.thread_equal (&(thread1), &(thread2)) :\
+ g_system_thread_equal_simple((thread1), (thread2)))
+
GQuark
g_thread_error_quark (void)
{
void (*thread_set_priority)(gpointer thread,
GThreadPriority priority);
void (*thread_self) (gpointer thread);
+ gboolean (*thread_equal) (gpointer thread1,
+ gpointer thread2);
};
GLIB_VAR GThreadFunctions g_thread_functions_for_glib_use;
+2001-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
+
+ * gthread-posix.c: Add g_thread_equal_posix_impl and add to the
+ function vector g_thread_functions_for_glib_use_default.
+
+ * gthread-solaris.c, gthread-win32.c: Add NULL as equal function,
+ as on those two platforms you don't need an equal function.
+
2001-09-19 Tor Lillqvist <tml@iki.fi>
* gthread.rc.in: Correct InternalName and OriginalFilename to
*(pthread_t*)thread = pthread_self();
}
+static gboolean
+g_thread_equal_posix_impl (gpointer thread1, gpointer thread2)
+{
+ return (pthread_equal (*(pthread_t*)thread1, *(pthread_t*)thread2) != 0);
+}
+
static GThreadFunctions g_thread_functions_for_glib_use_default =
{
g_mutex_new_posix_impl,
g_thread_join_posix_impl,
g_thread_exit_posix_impl,
g_thread_set_priority_posix_impl,
- g_thread_self_posix_impl
+ g_thread_self_posix_impl,
+ g_thread_equal_posix_impl
};
g_thread_join_solaris_impl,
g_thread_exit_solaris_impl,
g_thread_set_priority_solaris_impl,
- g_thread_self_solaris_impl
+ g_thread_self_solaris_impl,
+ NULL /* no equal function necessary on Solaris */
};
g_thread_join_win32_impl,
g_thread_exit_win32_impl,
g_thread_set_priority_win32_impl,
- g_thread_self_win32_impl
+ g_thread_self_win32_impl,
+ NULL /* no equal function necessary */
};
#define HAVE_G_THREAD_IMPL_INIT