xref: /rust-libc-0.2.174/src/trusty.rs (revision 2ade12cd)
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