rustix::not_implemented

Module libc_internals

Source
Expand description

Functions which need access to libc internals are out of scope for rustix.

Most Rust programs have a libc present, and when a libc is present, it expects to be the only thing in the process that can do certain operations. For example, there can be only one atexit list in a process, only one pthread_atfork list in a process, only one implementation of pthreads in a process, and so on, and libc expects to own the one of each of those things. And libc implementations may expect to be involved in signal handling. So, these functions are believed to be out of scope for rustix. This module contains an incomplete list of such functions.

It would be possible to make a rust library which provides safe or ergonomic wrappers around these libc functions, however that is out of scope for rustix itself.

If you would like to write a Rust program which does not use a libc, and which does provide APIs for some of these functions, Eyra and origin are two libraries which may be useful, and which provide public interfaces for some of this functionality.

If you are otherwise writing Rust code which you know will not share a process with a libc, perhaps because you are writing a libc or similar yourself, rustix’s codebase does include experimental implementations of the primitives needed to implement most of these functions.

Functions§