Expand description
Origin implements program startup and shutdown, as well as thread startup and shutdown, for Linux, implemented in Rust.
Program startup and shutdown for Linux is traditionally implemented in crt1.o,
and the libc functions exit
, atexit
, and _exit
. And thread startup and
shutdown are traditionally implemented in libpthread functions
pthread_create
, pthread_join
, pthread_detach
, and so on. Origin provides
its own implementations of this functionality, written in Rust.
For a C-ABI-compatible interface to this functionality, see c-scape.
This is part of the Mustang project, building Rust programs written entirely in Rust. When compiled for non-mustang targets, this library uses the system crt and libpthread libraries.
Using origin in non-mustang programs
Origin can also be used as an orginary library, when compiled in non-mustang targets, provided you’re using nightly Rust. In this configuration, origin disables its own program startup and thread implementations and lets libc handle those parts. Its API is then implemented in terms of system libc calls, including pthread calls.
See the origin-as-just-a-library example for more details.
Re-exports
pub use lock_api;
Modules
Mutex
,RwLock
, andCondvar
.
Structs
- An opaque pointer to a thread.
Functions
- Register a function to be called when
exit
is called. - Registers a function to call when the current thread exits.
- Creates a new thread.
- Return a raw pointer to the data associated with the current thread.
- Return the current thread id.
- Return the TLS entry for the current thread.
- Return the default guard size for new threads.
- Return the default stack size for new threads.
- Marks a thread as “detached”.
- Call all the functions registered with
at_exit
or with the.fini_array
section, and exit the program. - Exit the program without calling functions registered with
at_exit
or with the.fini_array
section. - Waits for a thread to finish.
- Return the current thread’s stack address (lowest address), size, and guard size.