05cc7961af
Haiku: add definitions for the Haiku's native sytem API. On the Haiku platform, the POSIX (and BSD) API coexists with the native API, that has its origins on the BeOS platform. Unlike other UNIX-like platforms, the native API is not an extension of the POSIX API, but instead exists sui generis, and many of the POSIX concepts have their own native variety, with relatively limited interoperability. Nonetheless, the native API coexists in the same library as the standard C and POSIX functions, namely libroot.so, and therefore this crate is a good place to add bindings to it. This commit implements most of Haiku's support kit, the most important parts of the kernel kit, and a part of the storage kit. |
||
---|---|---|
.github | ||
ci | ||
libc-test | ||
src | ||
tests | ||
.cirrus.yml | ||
.gitignore | ||
CONTRIBUTING.md | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
build.rs | ||
rustfmt.toml | ||
triagebot.toml |
README.md
libc - Raw FFI bindings to platforms' system libraries
libc
provides all of the definitions necessary to easily interoperate with C
code (or "C-like" code) on each of the platforms that Rust supports. This
includes type definitions (e.g. c_int
), constants (e.g. EINVAL
) as well as
function headers (e.g. malloc
).
This crate exports all underlying platform types, functions, and constants under
the crate root, so all items are accessible as libc::foo
. The types and values
of all the exported APIs match the platform that libc is compiled for.
More detailed information about the design of this library can be found in its associated RFC.
Usage
Add the following to your Cargo.toml
:
[dependencies]
libc = "0.2"
Features
-
std
: by defaultlibc
links to the standard library. Disable this feature to remove this dependency and be able to uselibc
in#![no_std]
crates. -
extra_traits
: allstruct
s implemented inlibc
areCopy
andClone
. This feature derivesDebug
,Eq
,Hash
, andPartialEq
. -
const-extern-fn
: Changes someextern fn
s intoconst extern fn
s. This feature requires a nightly rustc. -
deprecated:
use_std
is deprecated, and is equivalent tostd
.
Rust version support
The minimum supported Rust toolchain version is Rust 1.13.0 . APIs requiring newer Rust features are only available on newer Rust toolchains:
Feature | Version |
---|---|
union |
1.19.0 |
const mem::size_of |
1.24.0 |
repr(align) |
1.25.0 |
extra_traits |
1.25.0 |
core::ffi::c_void |
1.30.0 |
repr(packed(N)) |
1.33.0 |
cfg(target_vendor) |
1.33.0 |
Platform support
Platform-specific documentation (master branch).
See
ci/build.sh
for the platforms on which libc
is guaranteed to build for each Rust
toolchain. The test-matrix at GitHub Actions and Cirrus CI show the
platforms in which libc
tests are run.
License
This project is licensed under either of
at your option.
Contributing
We welcome all people who want to contribute. Please see the contributing instructions for more information.
Contributions in any form (issues, pull requests, etc.) to this project must adhere to Rust's Code of Conduct.
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in libc
by you, as defined in the Apache-2.0 license, shall be
dual licensed as above, without any additional terms or conditions.