diff --git a/repos/libports/doc/libc.txt b/repos/libports/doc/libc.txt index f40cb0f671..00dded63d4 100644 --- a/repos/libports/doc/libc.txt +++ b/repos/libports/doc/libc.txt @@ -25,47 +25,16 @@ configuration ('/etc/build.conf'). Limitations ----------- -The current version of the C library is not thread-safe. For most string and -math functions, this is not a problem (as these functions do not modify global -state) but be careful with using more complex functions such as 'malloc' from -multiple threads. Also, 'errno' may become meaningless when calling libc -functions from multiple threads. +The current version of the C library is not entirely thread-safe. +In particular, the 'FILE' stream API ('fopen', 'fread', ...) must not be +used from multiple threads. -We have left out the following files from the Genode port of the FreeBSD libc: -:gdtoa libary: 'strtodnrp.c' -:gen library: 'getosreldate.c' -:string libary: 'strcoll.c', 'strxfrm.c', 'wcscoll.c', 'wcsxfrm.c' -:math library: 's_exp2l.c' - -In the ARM version, the following additional files are excluded: -:libm: 'e_acosl.c', 'e_asinl.c', 'e_atan2l.c', 'e_hypotl.c', 's_atanl.c', - 's_cosl.c', 's_frexpl.c', 's_nextafterl.c', 's_nexttoward.c', - 's_rintl.c', s_scalbnl.c', 's_sinl.c', 's_tanl.c', 's_fmal.c' - -Atomic operation on ARM are not supported. Although these operations are -defined in 'machine/atomic.h', their original FreeBSD implementations are not -functional because we do not emulate the required FreeBSD environment (see: -'sysarch.h'). However, these functions are not a regular part of the libc -anyway and are not referenced from any other libc code. - -The current back end is quite simplistic and it may help you to revisit the -current state of the implementation in the 'src/lib/libc' directory. If -one of the functions in 'dummies.c' is called, you will see an message in your -debug output: +The back end does not cover all features of FreeBSD. If an unsupported +functions is called (see 'dummies.cc'), you will see an message in your debug +output: ! called, not yet implemented! -However, some of the back-end function implemented in the other files have + +Some of the back-end functions implemented in the other files have dummy semantics but have to remain quiet because they are called from low-level libc code. -Genode-specific additions -------------------------- - -The back end of the libc is tailored to Genode via a flexible plugin concept. -This concept enables the combination of a variety of Genode-specific interfaces -with libc-based programs. For example, one program may want to use Genode's LOG -service as standard output whereas interactive programs might prefer the use of -Terminal sessions. Further available (entirely optional) back ends include a -BSD socket implementation based on the lwIP stack and a VFAT file-system back -end based on libffat. The interfaces used between plugins and the libc are -located at 'include/libc-plugin/'. -