fxlibc/include
Lephenixnoir 8cedf411c4
gint: outline a Hardware Abstraction Layer (HAL) for use with gint
A standard libc would normally use the kernel's syscall interface to
connect with the lower level, and this interface would usually imitate
POSIX or a similar style. With the statically-linked unikernel design,
the syscalls would be functions, but the interface wouldn't change much.

However, there are some fundamental differences. For instance, in gint
there aren't separate kernel/userspace memory allocators, there's just a
unified allocator in the kernel. This makes malloc() conceptually a
direct syscall, which pushes the kernel/libc boundary at an unusual
location.

Having a clearly-marked HAL makes it easier to identify where the
boundary is. Code from <time.h> currently has an ad-hoc interface which
should be replaced with clock_gettime(2) in the future.

The HAL offers default implementations but these aren't used by gint
yet, because it's more practical to have undefined references than to
end up with the stubs in an executable. These are provided for future
completeness.

This change does not lift the requirement to recursively link gint with
the libc and the libc with gint.
2024-08-06 18:55:01 +02:00
..
fxlibc gint: outline a Hardware Abstraction Layer (HAL) for use with gint 2024-08-06 18:55:01 +02:00
sys add more declarations for libstdc++ 2024-07-05 22:28:52 +02:00
target fxlibc - v1.4.3 : fix vhex missing headers 2022-07-30 17:57:08 +02:00
alloca.h alloca: provide <alloca.h> 2023-04-01 20:30:30 +02:00
assert.h add C++ header guards 2021-06-28 15:49:05 +02:00
complex.h math, fenv, complex: use OpenLibm unconditionally 2021-05-20 23:19:40 +02:00
ctype.h add C++ header guards 2021-06-28 15:49:05 +02:00
dirent.h stat: definitions required to support stat(2) 2021-12-23 23:50:48 +01:00
errno.h add declarations for unsupported functions for libstdc++ 2022-08-19 15:49:52 +02:00
fcntl.h add more declarations for libstdc++ 2024-07-05 22:28:52 +02:00
fenv.h math, fenv, complex: use OpenLibm unconditionally 2021-05-20 23:19:40 +02:00
inttypes.h stdio: FILE barebones with buffering model (WIP) 2022-01-02 19:22:42 +01:00
locale.h add C++ header guards 2021-06-28 15:49:05 +02:00
math.h math, fenv, complex: use OpenLibm unconditionally 2021-05-20 23:19:40 +02:00
setjmp.h add C++ header guards 2021-06-28 15:49:05 +02:00
signal.h signal: make sig_atomic_t a normal int 2022-08-12 22:46:56 +02:00
stdint.h stdint: do not rely on -ffreestanding 2022-08-12 22:43:37 +02:00
stdio.h stdlib: add fileno (DONE) 2023-04-01 20:30:29 +02:00
stdlib.h dso, stdlib: __cxa_atexit(), __dso_handle, atexit() (TEST) 2023-04-01 20:30:30 +02:00
string.h string: add and test a naive memrchr (DONE) 2022-01-10 21:21:03 +01:00
syscall.h update include hierarchy 2021-05-09 17:59:07 +02:00
time.h add declarations for unsupported functions for libstdc++ 2022-08-19 15:49:52 +02:00
unistd.h add more declarations for libstdc++ 2024-07-05 22:28:52 +02:00