[lsb-discuss] POSIX interface sets omitted from LSB 3

Wichmann, Mats D mats.d.wichmann at intel.com
Fri Jul 28 07:18:14 PDT 2006


One of the LSB goals has been POSIX alignment, where it makes
sense, which matches how glibc handles POSIX issues.  However
the two are not completely aligned.

Based on information in a webpage Ulrich Drepper maintains
on the status of POSIX feature groups in glibc, the following
are the major differences. This is a lightly edited snip from
the latter half of the wiki page
http://www.freestandards.org/en/NewGlibc so the formatting 
isn't going to be great for email, sorry.

The question at hand is, when should we add these interfaces?
I see no reason to leave out any of the ones that have full
support in glibc; however some "push the envelope" a bit by
requiring very recent Linux kernel support for example.
These interfaces, being in POSIX, all have the documentation
part of the requirement satisfied, but we are of course
missing tests and possibly "demand".

So I'm looking for feedback on whether any of this stuff
is important enough to add in LSB 3.2, or whether all (that
makes sense) can be added in 4.0.  There are already tracking
bugs that talk about the sets that seem to make sense to
add at all (898,1388,1389,1390)

-- mats

====

Message Queues

The POSIX message queue interfaces (MSG set) are excluded from the LSB:

    * mq_close, mq_getattr, mq_notify, mq_open, mq_receive, mq_send,
mq_sendattr, mq_timedreceive, mq_timedsend, mq_unlink 

These are in librt with with a symbol version of GLIBC_2.3.4, but
depended on a kernel version (2.6.6 or later) that seemed too new to
make these interfaces mandatory for LSB 3.0, so they were omitted. This
is now refiled as bug 1388 since the previous librt bug was closed when
librt was added to the LSB.
====================================

Pthreads

Portions of the pthread set are not specified by LSB. This omission is
described in bug 893, currently "deferred until 4.0", but that was done
before an LSB 3.2 was envisioned (may still be the right action):

The POSIX Barriers (BAR) option is supported in glibc since 2.2, except
pthread_barrierattr_getpshared (GLIBC_2.3.3, "1003.1-2001 function
accidentally left out in 2.2.")

    * pthread_barrier_destroy, pthread_barrier_init,
pthread_barrier_wait, pthread_barrierattr_destroy,
pthread_barrierattr_getpshared, pthread_barrierattr_init,
pthread_barrierattr_setpshared 

The POSIX Spinlocks (SPI) option is supported in glibc since 2.2

    * pthread_spin_destroy, pthread_spin_init, pthread_spin_lock,
pthread_spin_trylock, pthread_spin_unlock 

The POSIX Thread CPU Time (TCT) option is supported in glibc since 2.2,
"The system must fulfill the same requirements as for the _POSIX_CPUTIME
option, namely that the CPU must support a cycle counter register."
There is only one thread interface affected:

    * pthread_getcpuclockid 

The other interfaces from TCT (clock_getres, clock_gettime,
clock_nanosleep, clock_settime, timer_create) are already included in
LSB.

====================================

Advanced Realtime Feature Sets

Some of the features sets of POSIX Advanced Realtime are in glibc but
either incomplete or omitted from LSB.

One implemented set which is not entirely in the LSB is the Advisory
Information (ADV) set (now listed as bug 1389).

    * posix_fadvise, posix_fallocate, posix_madvise, posix_memalign
(only the last is in LSB 3.x)
    * posixfadvise64, posixfallocate64 are not in POSIX but appear in
glibc as obvious extensions. 

The Spawn (SPN) set is in glibc and is mature (since 2.2) but is a
user-level implementation (is that a problem? shouldn't be if it meets
the requirements). This is tracked as bug 1390.

    * posix_spawn, posix_spawnp, posix_spawn_file_actions_addclose,
posix_spawn_file_actions_adddup2, posix_spawn_file_actions_addopen,
posix_spawn_file_actions_destroy, posix_spawn_file_actions_init,
posix_spawnattr_destroy, posix_spawnattr_getflags,
posix_spawnattr_getpgroup, posix_spawnattr_getsigdefault,
posix_spawnattr_getsigmask, posix_spawnattr_init,
posix_spawnattr_setflags, posix_spawnattr_setpgroup,
posix_spawnattr_setsigdefault, posix_spawnattr_setsigmask
    * posix_spawnattr_getschedparam, posix_spawnattr_getschedpolicy,
posix_spawnattr_setschedparam, posix_spawnattr_setschedpolicy are
grouped separately as they are also part of the Priority Scheduling (PS)
set. 




More information about the lsb-discuss mailing list