跳转至

Fuchsia's libc

Fuchsia's libc started as a fork of musl libc. It has since diverged significantly, but the approximate source code layout remains the same. The source can be found in zircon/third_party/ulib/musl.

TODO(fxbug.dev/31481) Type more here.

Standards

C11

Fuchsia's libc supports most of the C11 standard. This in particular includes the atomic and threading portions of the standard library.

POSIX

Fuchsia implements a subset of POSIX.

Things at least partially supported include the basics of POSIX I/O (open/close/read/write/stat/...), and pthreads (threads and mutexes).

On Fuchsia, the portion of file paths beginning with a sequence of .. is resolved locally. See [this writeup][dotdot] for more information.

Similarly, symlinks are not supported on Fuchsia.

Conspicuously not supported are UNIX signals, fork, and exec.

FDIO

Fuchsia's libc does not directly support I/O operations. Instead it provides weak symbols that another library can override. This is typically done by [fdio.so][fdio].

Linking

Statically linking libc is not supported. Everything dynamically links libc.so.

Dynamic linking and loading

libc.so is also the dynamic linker.

dotdotfdio


最后更新: 2022 年 12 月 31 日(Saturday) 21:06 CST