mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 23:12:24 +00:00
libports: update doc/libc.txt
This commit is contained in:
parent
b1be660c7b
commit
e1e26c4439
@ -25,47 +25,16 @@ configuration ('<build-dir>/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:
|
||||
! <function-name> 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/'.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user