mirror of https://github.com/xqemu/xqemu.git
vhost-user-test: fix g_cond_wait_until compat implementation
This fixes compilation with glib versions up to 2.30, such as the one in CentOS 6. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
66f37d360b
commit
634d39b4e3
|
@ -149,6 +149,32 @@ static inline void (g_cond_signal)(CompatGCond *cond)
|
||||||
}
|
}
|
||||||
#undef g_cond_signal
|
#undef g_cond_signal
|
||||||
|
|
||||||
|
static inline gboolean (g_cond_timed_wait)(CompatGCond *cond,
|
||||||
|
CompatGMutex *mutex,
|
||||||
|
GTimeVal *time)
|
||||||
|
{
|
||||||
|
g_assert(mutex->once.status != G_ONCE_STATUS_PROGRESS);
|
||||||
|
g_once(&cond->once, do_g_cond_new, NULL);
|
||||||
|
return g_cond_timed_wait((GCond *) cond->once.retval,
|
||||||
|
(GMutex *) mutex->once.retval, time);
|
||||||
|
}
|
||||||
|
#undef g_cond_timed_wait
|
||||||
|
|
||||||
|
/* This is not a macro, because it didn't exist until 2.32. */
|
||||||
|
static inline gboolean g_cond_wait_until(CompatGCond *cond, CompatGMutex *mutex,
|
||||||
|
gint64 end_time)
|
||||||
|
{
|
||||||
|
GTimeVal time;
|
||||||
|
|
||||||
|
/* Convert from monotonic to CLOCK_REALTIME. */
|
||||||
|
end_time -= g_get_monotonic_time();
|
||||||
|
g_get_current_time(&time);
|
||||||
|
end_time += time.tv_sec * G_TIME_SPAN_SECOND + time.tv_usec;
|
||||||
|
|
||||||
|
time.tv_sec = end_time / G_TIME_SPAN_SECOND;
|
||||||
|
time.tv_usec = end_time % G_TIME_SPAN_SECOND;
|
||||||
|
return g_cond_timed_wait(cond, mutex, &time);
|
||||||
|
}
|
||||||
|
|
||||||
/* before 2.31 there was no g_thread_new() */
|
/* before 2.31 there was no g_thread_new() */
|
||||||
static inline GThread *g_thread_new(const char *name,
|
static inline GThread *g_thread_new(const char *name,
|
||||||
|
|
|
@ -127,25 +127,12 @@ typedef struct TestServer {
|
||||||
int fds_num;
|
int fds_num;
|
||||||
int fds[VHOST_MEMORY_MAX_NREGIONS];
|
int fds[VHOST_MEMORY_MAX_NREGIONS];
|
||||||
VhostUserMemory memory;
|
VhostUserMemory memory;
|
||||||
GMutex data_mutex;
|
CompatGMutex data_mutex;
|
||||||
GCond data_cond;
|
CompatGCond data_cond;
|
||||||
int log_fd;
|
int log_fd;
|
||||||
uint64_t rings;
|
uint64_t rings;
|
||||||
} TestServer;
|
} TestServer;
|
||||||
|
|
||||||
#if !GLIB_CHECK_VERSION(2, 32, 0)
|
|
||||||
static gboolean g_cond_wait_until(CompatGCond cond, CompatGMutex mutex,
|
|
||||||
gint64 end_time)
|
|
||||||
{
|
|
||||||
gboolean ret = FALSE;
|
|
||||||
end_time -= g_get_monotonic_time();
|
|
||||||
GTimeVal time = { end_time / G_TIME_SPAN_SECOND,
|
|
||||||
end_time % G_TIME_SPAN_SECOND };
|
|
||||||
ret = g_cond_timed_wait(cond, mutex, &time);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static const char *tmpfs;
|
static const char *tmpfs;
|
||||||
static const char *root;
|
static const char *root;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue