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>