A compat layer should be used here for pthread. Charles Briere: > From: Michael Poupart <[email protected]> > > Signed-off-by: Michael Poupart <[email protected]> > --- > configure.ac | 17 +++++++++++++++++ > src/bin/lttng-sessiond/main.c | 7 +++++++ > 2 files changed, 24 insertions(+) > > diff --git a/configure.ac b/configure.ac > index b3738d2..c405020 100644 > --- a/configure.ac > +++ b/configure.ac > @@ -182,6 +182,23 @@ AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBUUID], [test > "x$have_libuuid" = "xyes"]) > AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBC_UUID], [test "x$have_libc_uuid" = > "xyes"]) > AM_CONDITIONAL([LTTNG_BUILD_WITH_LIBEXT2_UUID], [test "x$have_libext2_uuid" > = "xyes"]) > > +# Check for the non-standard pthread_cond_timedwait_monotonic function in > lpthread/libc > +AC_CHECK_LIB([pthread], [pthread_cond_timedwait_monotonic], > +[ > + have_pthread_cndtmwt_mono=yes > +], > +[ > + AC_CHECK_LIB([c], [pthread_cond_timedwait_monotonic], > + [ > + have_pthread_cndtmwt_mono=yes > + ]) > +]) > +AS_IF([test "x$have_pthread_cndtmwt_mono" = "xyes"], > +[ > + AC_DEFINE_UNQUOTED([LTTNG_HAVE_PTHREAD_CNDTMWT_MONO], 1, [Has > non-standard pthread_cond_timedwait_monotonic support.]) > +]) > + > + > # URCU library version needed or newer > liburcu_version=">= 0.7.2" > > diff --git a/src/bin/lttng-sessiond/main.c b/src/bin/lttng-sessiond/main.c > index f6a051a..d8ff4c2 100644 > --- a/src/bin/lttng-sessiond/main.c > +++ b/src/bin/lttng-sessiond/main.c > @@ -1732,6 +1732,7 @@ static int spawn_consumer_thread(struct consumer_data > *consumer_data) > goto error; > } > > +#ifndef LTTNG_HAVE_PTHREAD_CNDTMWT_MONO > /* > * Set the monotonic clock in order to make sure we DO NOT jump in time > * between the clock_gettime() call and the timedwait call. See bug #324 > @@ -1743,6 +1744,7 @@ static int spawn_consumer_thread(struct consumer_data > *consumer_data) > PERROR("pthread_condattr_setclock consumer data"); > goto error; > } > +#endif > > ret = pthread_cond_init(&consumer_data->cond, &consumer_data->condattr); > if (ret != 0) { > @@ -1792,8 +1794,13 @@ static int spawn_consumer_thread(struct consumer_data > *consumer_data) > ret = pthread_cond_wait(&consumer_data->cond, > &consumer_data->cond_mutex); > } else { > +#ifdef LTTNG_HAVE_PTHREAD_CNDTMWT_MONO > + ret = > pthread_cond_timedwait_monotonic(&consumer_data->cond, > + &consumer_data->cond_mutex, &timeout); > +#else > ret = pthread_cond_timedwait(&consumer_data->cond, > &consumer_data->cond_mutex, &timeout); > +#endif > } > } >
_______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
