Revert an accidental ABI break by moving gettime out of the

2007-01-16  Matthias Clasen  <mclasen@redhat.com>

        * glib/gthread.h:
        * glib/gthread.c:
        * glib/glib.symbols: Revert an accidental ABI break by
        moving gettime out of the GThreadFunctions struct and making
        it a separate variable.  (#397139, Joe Marcus Clarke)

        * gthread/*.c: Adapt.



svn path=/trunk/; revision=5279
This commit is contained in:
Matthias Clasen 2007-01-16 21:25:03 +00:00 committed by Matthias Clasen
parent 098d17a4fc
commit 4bbde50716
9 changed files with 33 additions and 22 deletions

View File

@ -1,3 +1,13 @@
2007-01-16 Matthias Clasen <mclasen@redhat.com>
* glib/gthread.h:
* glib/gthread.c:
* glib/glib.symbols: Revert an accidental ABI break by
moving gettime out of the GThreadFunctions struct and making
it a separate variable. (#397139, Joe Marcus Clarke)
* gthread/*.c: Adapt.
2007-01-16 Tor Lillqvist <tml@novell.com>
* glib/gthread.c (gettime): GetSystemTimeAsFileTime() returns 100s

View File

@ -1127,6 +1127,7 @@ g_thread_init_glib
g_thread_functions_for_glib_use
g_threads_got_initialized
g_thread_use_default_impl
g_thread_gettime
#endif
g_thread_create_full
g_thread_error_quark

View File

@ -80,6 +80,8 @@ static void g_thread_cleanup (gpointer data);
static void g_thread_fail (void);
static guint64 gettime (void);
guint64 (*g_thread_gettime) (void) = gettime;
/* Global variables */
static GSystemThread zero_thread; /* This is initialized to all zero */
@ -109,8 +111,7 @@ GThreadFunctions g_thread_functions_for_glib_use = {
NULL, /* thread_exit */
NULL, /* thread_set_priority */
NULL, /* thread_self */
NULL, /* thread_equal */
gettime /* gettime */
NULL /* thread_equal */
};
/* Local data */

View File

@ -106,13 +106,14 @@ struct _GThreadFunctions
void (*thread_self) (gpointer thread);
gboolean (*thread_equal) (gpointer thread1,
gpointer thread2);
guint64 (*gettime) (void);
};
GLIB_VAR GThreadFunctions g_thread_functions_for_glib_use;
GLIB_VAR gboolean g_thread_use_default_impl;
GLIB_VAR gboolean g_threads_got_initialized;
GLIB_VAR guint64 (*g_thread_gettime) (void);
/* initializes the mutex/cond/private implementation for glib, might
* only be called once, and must not be called directly or indirectly
* from another glib-function, e.g. as a callback.

View File

@ -53,7 +53,7 @@
#define G_NSEC_PER_SEC 1000000000
#define GETTIME(v) (v = G_THREAD_UF (gettime, ()))
#define GETTIME(v) (v = g_thread_gettime ())
struct _GTimer
{

View File

@ -312,6 +312,8 @@ g_thread_init (GThreadFunctions* init)
g_thread_use_default_impl = FALSE;
g_thread_functions_for_glib_use = *init;
if (g_thread_gettime_impl)
g_thread_gettime = g_thread_gettime_impl;
supported = (init->mutex_new &&
init->mutex_lock &&
@ -332,8 +334,7 @@ g_thread_init (GThreadFunctions* init)
init->thread_join &&
init->thread_exit &&
init->thread_set_priority &&
init->thread_self &&
init->gettime);
init->thread_self);
/* if somebody is calling g_thread_init (), it means that he wants to
* have thread support, so check this

View File

@ -34,4 +34,6 @@
static GThreadFunctions
g_thread_functions_for_glib_use_default; /* is NULLified */
static guint64 (*g_thread_gettime_impl) (void) = NULL;
#define G_MUTEX_SIZE 0

View File

@ -426,23 +426,20 @@ g_thread_equal_posix_impl (gpointer thread1, gpointer thread2)
return (pthread_equal (*(pthread_t*)thread1, *(pthread_t*)thread2) != 0);
}
static guint64
g_gettime_posix_impl (void)
{
#ifdef USE_CLOCK_GETTIME
static guint64
gettime (void)
{
struct timespec tv;
clock_gettime (posix_clock, &tv);
return (guint64) tv.tv_sec * G_NSEC_PER_SEC + tv.tv_nsec;
#else
struct timeval tv;
gettimeofday (&tv, NULL);
return (guint64) tv.tv_sec * G_NSEC_PER_SEC + tv.tv_usec * (G_NSEC_PER_SEC / G_USEC_PER_SEC);
#endif
}
static guint64 (*g_thread_gettime_impl)(void) = gettime;
#else
static guint64 (*g_thread_gettime_impl)(void) = 0;
#endif
static GThreadFunctions g_thread_functions_for_glib_use_default =
{
@ -466,6 +463,5 @@ static GThreadFunctions g_thread_functions_for_glib_use_default =
g_thread_exit_posix_impl,
g_thread_set_priority_posix_impl,
g_thread_self_posix_impl,
g_thread_equal_posix_impl,
g_gettime_posix_impl
g_thread_equal_posix_impl
};

View File

@ -546,7 +546,7 @@ g_thread_join_win32_impl (gpointer thread)
}
static guint64
g_gettime_win32_impl (void)
g_thread_gettime_impl (void)
{
guint64 v;
@ -583,8 +583,7 @@ static GThreadFunctions g_thread_functions_for_glib_use_default =
g_thread_exit_win32_impl,
g_thread_set_priority_win32_impl,
g_thread_self_win32_impl,
NULL, /* no equal function necessary */
g_gettime_win32_impl
NULL /* no equal function necessary */
};
#define HAVE_G_THREAD_IMPL_INIT