-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This adds initial C definitions to Xous. There is no C library, so this mostly serves to add C-compatible exports to the `libc` crate. Signed-off-by: Sean Cross <[email protected]>
- Loading branch information
Showing
2 changed files
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
//! Xous C type definitions | ||
pub type c_schar = i8; | ||
pub type c_uchar = u8; | ||
pub type c_short = i16; | ||
pub type c_ushort = u16; | ||
pub type c_int = i32; | ||
pub type c_uint = u32; | ||
pub type c_float = f32; | ||
pub type c_double = f64; | ||
pub type c_longlong = i64; | ||
pub type c_ulonglong = u64; | ||
pub type intmax_t = i64; | ||
pub type uintmax_t = u64; | ||
|
||
pub type size_t = usize; | ||
pub type ptrdiff_t = isize; | ||
pub type intptr_t = isize; | ||
pub type uintptr_t = usize; | ||
pub type ssize_t = isize; | ||
|
||
pub type off_t = i64; | ||
pub type c_char = u8; | ||
pub type c_long = i64; | ||
pub type c_ulong = u64; | ||
pub type wchar_t = u32; | ||
|
||
pub const INT_MIN: c_int = -2147483648; | ||
pub const INT_MAX: c_int = 2147483647; | ||
|
||
cfg_if! { | ||
if #[cfg(libc_core_cvoid)] { | ||
pub use ::ffi::c_void; | ||
} else { | ||
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help | ||
// enable more optimization opportunities around it recognizing things | ||
// like malloc/free. | ||
#[repr(u8)] | ||
#[allow(missing_copy_implementations)] | ||
#[allow(missing_debug_implementations)] | ||
pub enum c_void { | ||
// Two dummy variants so the #[repr] attribute can be used. | ||
#[doc(hidden)] | ||
__variant1, | ||
#[doc(hidden)] | ||
__variant2, | ||
} | ||
} | ||
} |