Monotonic clocks

Daniel Eischen deischen at freebsd.org
Mon May 24 14:59:50 UTC 2010


On Mon, 24 May 2010, Chris Vine wrote:

> On Mon, 24 May 2010 09:46:39 -0400 (EDT)
> Daniel Eischen <deischen at 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.

The prototype has been in <pthread.h> since Oct 2005, and is in
FreeBSD version 7 and subsequent.

See revision 1.40:

   http://www.freebsd.org/cgi/cvsweb.cgi/src/include/pthread.h
   http://www.freebsd.org/cgi/cvsweb.cgi/src/include/pthread.h.diff?r1=1.39;r2=1.40

-- 
DE


More information about the freebsd-threads mailing list