Date: Mon, 24 May 2010 15:14:26 +0100 From: Chris Vine <chris@cvine.freeserve.co.uk> To: Daniel Eischen <deischen@freebsd.org> Cc: freebsd-threads@freebsd.org Subject: Re: Monotonic clocks Message-ID: <20100524151426.7ec75b1a@boulder.homenet> In-Reply-To: <Pine.GSO.4.64.1005240944500.5996@sea.ntplx.net> References: <20100524140513.6475cb2c@boulder.homenet> <Pine.GSO.4.64.1005240944500.5996@sea.ntplx.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 24 May 2010 09:46:39 -0400 (EDT) Daniel Eischen <deischen@freebsd.org> wrote: > On Mon, 24 May 2010, Chris Vine wrote: > > > Hi, > > > > I am the upstream maintainer of efax-gtk and I am told recent > > versions of the program will not compile on the FreeBSD port of > > debian, because FreeBSD does not appear to provide > > pthread_condattr_setclock() to set a monotonic clock on condition > > variables. > > > > The program configuration script calls up sysconf() to determine > > whether the POSIX advanced realtime option (_SC_MONOTONIC_CLOCK) is > > provided, and FreeBSD's sysconf() indicates that it is. Is anything > > else needed to enable monotonic clocks on BSD, or is sysconf() > > incorrectly advertising the implementation of monotonic clocks in > > BSD's libc? > > What version of FreeBSD are you using? The code looks like it > tries to use CLOCK_MONOTONIC if specified. From > src/lib/libthr/thread/thr_init.c: > > int > _pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t > clock_id) { > if (attr == NULL || *attr == NULL) > return (EINVAL); > if (clock_id != CLOCK_REALTIME && > clock_id != CLOCK_VIRTUAL && > clock_id != CLOCK_PROF && > clock_id != CLOCK_MONOTONIC) { > return (EINVAL); > } > (*attr)->c_clockid = clock_id; > return (0); > } > > Are you getting an error from pthread_condattr_setclock() or is > it just not functioning correctly? The function is entirely missing from the pthread.h header. I don't use FreeBSD but the problem arises on the version of FreeBSD used by debian. I don't know what that is, I am afraid. I am hopeful that checking for_POSIX_CLOCK_SELECTION and _SC_CLOCK_SELECTION, as well as _POSIX_MONOTONIC_CLOCK and _SC_MONOTONIC_CLOCK will address the problem. (This means that the system clock will be used instead.) Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100524151426.7ec75b1a>