summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-03-06 19:44:35 +0000
committerEric Andersen <andersen@codepoet.org>2004-03-06 19:44:35 +0000
commit39586bc56665d8f2212192f2f1a55cdf9f8b4eb5 (patch)
tree28ea191da9aa3364609ffdb510b81956edc432e7
parentaf897c3930098389852c102eceecf77afc21fb56 (diff)
Update with the contents of a very helpful comparison of
interfaces vs SuSv3 from heukelum at freemail dot nl
-rw-r--r--docs/uClibc_vs_SuSv3.txt86
1 files changed, 79 insertions, 7 deletions
diff --git a/docs/uClibc_vs_SuSv3.txt b/docs/uClibc_vs_SuSv3.txt
index 9d39d4b0e..d82f8b52b 100644
--- a/docs/uClibc_vs_SuSv3.txt
+++ b/docs/uClibc_vs_SuSv3.txt
@@ -2,13 +2,13 @@ uClibc attempts to fully (and rigorously) support "The Open Group Base
Specifications Issue 6 IEEE Std 1003.1, 2003 Edition" (aka SuSv3). However, as
with any standard, they sometimes require things that are either impossible or
are Completely Stupid(tm). Therefore, we cannot claim full compliance, and
-there may be some area of uClibc that differ from the requirements of this
+there may be some areas of uClibc that differ from the requirements of this
specification. This document attempts to list these differences and, when
completed, will contain a full list of all relevant differences between uClibc
and the requirements of the SuSv3.
-1) The uClibc setlocale() function is not threadsafe.
+*) The uClibc setlocale() function is not threadsafe.
SuSv3 states that "The locale state is common to all threads
within a process.". But it does not explicitly mention
@@ -24,12 +24,84 @@ and the requirements of the SuSv3.
using any locale or ctype functions until the setlocale()
call has finished.
-2) Some functions required by SuSv3 are not currently implemented.
- Functions listed by SuSv3 but not (yet) included in uClibc:
- fmtmsg <not implemented>
- <others?>
-More to follow when we think of it...
+----------------------------------------------------------------
+heukelum -- heukelum at freemail dot nl writes:
+Hi everyone,
+
+I think uClibc is a great project! And, since I found the file
+docs/uClibc_vs_SuSv3.txt in the source tarball which mentioned only
+fmtmsg as a missing function compared to the SUSv3, I got curious about
+the length of the list denoted by "<others?>". So I built the
+20040305-snapshot using allyesconfig, extracted the symbols from the
+(dynamic) libraries, and compared that list to the SUSv3 header files...
+
+The largest source of omissions was the mathematical interface
+(183/355), followed by optional interfaces (134/355). The result: only
+38 non-mathematical interfaces are missing compared to the minimal
+SUSv3! Naming only one function as missing was over-enthousiastic, but
+the result was better than I anticipated.
+
+A compact list of omissions is appended.
+I hope this was a helpful exercise ;)
+
+Greetings,
+ Alexander
+
+P.S. uClibc was compiled with thread support, but did not provide the
+interfaces pthread_cleanup_push and pthread_cleanup_pop.
+
+
+
+Omissions from obligatory interfaces:
+-------------------------------------
+stdlib.h: _Exit, a64l, l64a, lcong48, lldiv, mkstemp, posix_openpt;
+ mktemp, ecvt, fcvt
+ndbm.h: [all=9] dbm_*
+utmpx.h: [all=6] *utx* (but functions without "x" do exist!)
+nl_types.h: [all] catclose, catgets, catopen
+unistd.h: getwd, ualarm
+inttypes.h: imaxdiv
+fmtmsg.h: fmtmsg
+string.h: strerror_r
+setjmp.h: setsigjmp
+monetary.h: strfmon
+sys/select.h: pselect
+sys/socket.h: sockatmark
+sys/wait.h: waitid
+
+
+Unimplemented optional interfaces:
+----------------------------------
+trace.h: (depends on TRC) [all=50] posix_trace_*
+pthread.h: (depends on THR) pthread_cleanup_{push,pop};
+ pthread_attr_{g,s}etstack (depend on TSA TSS);
+ [7] pthread_barrier* (depend on BAR);
+ pthread_condattr_{g,s}et_clock (depend on CS);
+ pthread_getcpuclockid (depends on TCT);
+ pthread_mutex{,attr}_{g,s}etprioceiling (depend on TPP);
+ pthread_mutexattr_{g,s}etprotocol (depend on TPP|TPI);
+ pthread_rwlock_timed{rd,rw}lock (depend on TMO);
+ pthread_setschedprio (depends on TPS);
+ [5] pthread_spin_* (depend on SPI)
+spawn.h: (depends on SPN) [all=21] posix_spawn*
+mqueue.h: (depends on MSG) [all=10] mq_*
+aio.h: (depends on AIO) [all=8] aio_*, lio_*
+stropts.h: (depends on XSR) isastream, {g,s}et{,p}msg, fattach, fdetach
+sys/mman.h: posix_madvice (depends on ADV); posix_mem_offset,
+ posix_typed_mem_getinfo, posix_typed_mem_open (depend on TYM);
+ shm_open, shm_unlink (depend on SHM)
+fcntl.h: posix_fadvice, posix_fallocate (depend on ADV)
+signal.h: sigqueue (depends on RTS)
+stdlib.h: posix_memalign (depends on ADV)
+
+
+Unimplemented mathematical interfaces:
+--------------------------------------
+math.h: [126] many
+complex.h: [46] all, except cabs
+fenv.h: [11] all
+_______________________________________________