1 pub use crate::arch::c_char_def as c_char; 2 use crate::prelude::*; 3 pub type size_t = usize; 4 pub type ssize_t = isize; 5 6 pub type off_t = i64; 7 8 pub type c_schar = i8; 9 pub type c_uchar = u8; 10 pub type c_short = i16; 11 pub type c_ushort = u16; 12 pub type c_int = i32; 13 pub type c_uint = u32; 14 15 cfg_if! { 16 if #[cfg(target_pointer_width = "32")] { 17 pub type c_long = i32; 18 pub type c_ulong = u32; 19 } else if #[cfg(target_pointer_width = "64")] { 20 pub type c_long = i64; 21 pub type c_ulong = u64; 22 } 23 } 24 25 pub type c_longlong = i64; 26 pub type c_ulonglong = u64; 27 28 pub type c_uint8_t = u8; 29 pub type c_uint16_t = u16; 30 pub type c_uint32_t = u32; 31 pub type c_uint64_t = u64; 32 33 pub type c_int8_t = i8; 34 pub type c_int16_t = i16; 35 pub type c_int32_t = i32; 36 pub type c_int64_t = i64; 37 38 pub type intptr_t = isize; 39 pub type uintptr_t = usize; 40 41 pub type c_float = f32; 42 pub type c_double = f64; 43 44 pub type time_t = c_long; 45 46 pub type clockid_t = c_int; 47 48 s! { 49 pub struct iovec { 50 pub iov_base: *mut c_void, 51 pub iov_len: size_t, 52 } 53 54 pub struct timespec { 55 pub tv_sec: time_t, 56 pub tv_nsec: c_long, 57 } 58 } 59 60 pub const PROT_READ: i32 = 1; 61 pub const PROT_WRITE: i32 = 2; 62 63 // Trusty only supports `CLOCK_BOOTTIME`. 64 pub const CLOCK_BOOTTIME: clockid_t = 7; 65 66 pub const STDOUT_FILENO: c_int = 1; 67 pub const STDERR_FILENO: c_int = 2; 68 69 pub const AT_PAGESZ: c_ulong = 6; 70 71 pub const MAP_FAILED: *mut c_void = !0 as *mut c_void; 72 73 extern "C" { 74 pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void; 75 pub fn malloc(size: size_t) -> *mut c_void; 76 pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void; 77 pub fn free(p: *mut c_void); 78 pub fn memalign(align: size_t, size: size_t) -> *mut c_void; 79 pub fn posix_memalign(memptr: *mut *mut c_void, align: size_t, size: size_t) -> c_int; 80 pub fn write(fd: c_int, buf: *const c_void, count: size_t) -> ssize_t; 81 pub fn writev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int) -> ssize_t; 82 pub fn close(fd: c_int) -> c_int; 83 pub fn strlen(cs: *const c_char) -> size_t; 84 pub fn getauxval(type_: c_ulong) -> c_ulong; 85 pub fn mmap( 86 addr: *mut c_void, 87 len: size_t, 88 prot: c_int, 89 flags: c_int, 90 fd: c_int, 91 offset: off_t, 92 ) -> *mut c_void; 93 pub fn munmap(addr: *mut c_void, len: size_t) -> c_int; 94 pub fn clock_gettime(clk_id: crate::clockid_t, tp: *mut crate::timespec) -> c_int; 95 pub fn nanosleep(rqtp: *const crate::timespec, rmtp: *mut crate::timespec) -> c_int; 96 } 97