Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Apr 2010 14:38:58 -0700
From:      Garrett Cooper <yanefbsd@gmail.com>
To:        Jilles Tjoelker <jilles@stack.nl>
Cc:        Garrett Wollman <wollman@csail.mit.edu>, standards@freebsd.org
Subject:   Re: Non-POSIX compliant portions of FreeBSD
Message-ID:  <p2k7d6fde3d1004171438r2b579deeh8163d24c15fde959@mail.gmail.com>
In-Reply-To: <20100417210223.GA41384@stack.nl>
References:  <w2u7d6fde3d1004072200i6b1df9f5w780609c3265e400b@mail.gmail.com> <19398.2606.92468.700955@khavrinen.csail.mit.edu> <20100417210223.GA41384@stack.nl>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Apr 17, 2010 at 2:02 PM, Jilles Tjoelker <jilles@stack.nl> wrote:
> On Wed, Apr 14, 2010 at 02:32:14PM -0400, Garrett Wollman wrote:
>> <<On Wed, 7 Apr 2010 22:00:41 -0700, Garrett Cooper <yanefbsd@gmail.com>=
 said:
>>
>> > =A0 =A0 I was recently piqued by Warner to look into open_posix_testsu=
ite,
>> > and I've noticed that there are some discrepancies in our compliance
>> > with POSIX standards:
>>
>> Please take note of the broad variety of options in the POSIX
>> specification. =A0There are many options which we do not implement,
>> either because they are bad ideas (e.g., XSI, tracing), or because
>> nobody has gotten around to implementing them (e.g., synchronous
>> I/O). =A0A correct application will check (using getconf(1), sysconf(3),
>> or both) whether the interface it desires is available before
>> attempting to use it. =A0A broken application will use autoconf.
>
>> > 7. We don't have clock_nanosleep, clock_getcpuclockid, or getdate
>> > defined using the POSIX defined headers.
>
>> POSIX_CLOCK_SELECTION option group.
>
> clock_nanosleep is in the base in the 2008 version (SUSv4); the previous
> POSIX_CLOCK_SELECTION option is now required. Implementing
> clock_nanosleep requires a new in-kernel facility to sleep until a
> certain CLOCK_REALTIME value in such a way that setting the clock
> forwards makes it wake up earlier and vice versa (in particular, the
> thread needs to be woken up immediately if the clock is stepped beyond
> the specified absolute time). pthread_cond_timedwait() (unless the
> application has selected the CLOCK_MONOTONIC clock),
> pthread_mutex_timedlock(), pthread_rwlock_timedrdlock(),
> pthread_rwlock_timedwrlock(), mq_timedsend(), mq_timedreceive() and
> maybe more are also specified to sleep in this manner, but FreeBSD
> effectively uses CLOCK_MONOTONIC timing for them, except that some of
> them will correctly sleep longer if the clock has been set backwards.
> This error probably has little practical effect, but clock_nanosleep()
> doesn't really add anything above nanosleep() if it does not implement
> absolute CLOCK_REALTIME sleeps.
>
> clock_getcpuclockid is part of the _POSIX_CPUTIME option. Most of the
> functionality of this option can be obtained via setitimer(ITIMER_PROF),
> clock_gettime(CLOCK_PROF), getrusage() and kvm_getprocs().
>
> getdate is in the XSI option group.

    This is good stuff to note. I'll be taking this info as well as
anything else I get and commit it back to LTP's copy of the openposix
test suite so that this stuff is corrected upstream.
Thanks,
-Garrett



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?p2k7d6fde3d1004171438r2b579deeh8163d24c15fde959>