1 // defined in architecture specific module
2 use c_long;
3 
4 s! {
5     pub struct sockaddr_un {
6         pub sun_family: ::sa_family_t,
7         pub sun_path: [::c_char; 108usize],
8     }
9 }
10 
11 pub const AF_UNIX: ::c_int = 1;
12 
13 pub const RTLD_DEFAULT: *mut ::c_void = -2isize as *mut ::c_void;
14 
15 pub const UTIME_OMIT: c_long = -1;
16 pub const AT_FDCWD: ::c_int = -2;
17 
18 pub const O_DIRECTORY: ::c_int = 0x200000;
19 pub const O_NOFOLLOW: ::c_int = 0x100000;
20 
21 pub const AT_EACCESS: ::c_int = 1;
22 pub const AT_SYMLINK_NOFOLLOW: ::c_int = 2;
23 pub const AT_SYMLINK_FOLLOW: ::c_int = 4;
24 pub const AT_REMOVEDIR: ::c_int = 8;
25 
26 // signal.h
27 pub const SIG_BLOCK: ::c_int = 1;
28 pub const SIG_UNBLOCK: ::c_int = 2;
29 pub const SIG_SETMASK: ::c_int = 0;
30 pub const SIGHUP: ::c_int = 1;
31 pub const SIGINT: ::c_int = 2;
32 pub const SIGQUIT: ::c_int = 3;
33 pub const SIGILL: ::c_int = 4;
34 pub const SIGTRAP: ::c_int = 5;
35 pub const SIGABRT: ::c_int = 6;
36 pub const SIGEMT: ::c_int = 7;
37 pub const SIGFPE: ::c_int = 8;
38 pub const SIGKILL: ::c_int = 9;
39 pub const SIGBUS: ::c_int = 10;
40 pub const SIGSEGV: ::c_int = 11;
41 pub const SIGSYS: ::c_int = 12;
42 pub const SIGPIPE: ::c_int = 13;
43 pub const SIGALRM: ::c_int = 14;
44 pub const SIGTERM: ::c_int = 15;
45 pub const SIGURG: ::c_int = 16;
46 pub const SIGSTOP: ::c_int = 17;
47 pub const SIGTSTP: ::c_int = 18;
48 pub const SIGCONT: ::c_int = 19;
49 pub const SIGCHLD: ::c_int = 20;
50 pub const SIGCLD: ::c_int = 20;
51 pub const SIGTTIN: ::c_int = 21;
52 pub const SIGTTOU: ::c_int = 22;
53 pub const SIGIO: ::c_int = 23;
54 pub const SIGWINCH: ::c_int = 24;
55 pub const SIGUSR1: ::c_int = 25;
56 pub const SIGUSR2: ::c_int = 26;
57 pub const SIGRTMIN: ::c_int = 27;
58 pub const SIGRTMAX: ::c_int = 31;
59 pub const SIGXCPU: ::c_int = 24;
60 pub const SIGXFSZ: ::c_int = 25;
61 pub const SIGVTALRM: ::c_int = 26;
62 pub const SIGPROF: ::c_int = 27;
63 
64 pub const SA_NOCLDSTOP: ::c_ulong = 0x00000001;
65 pub const SA_SIGINFO: ::c_ulong = 0x00000002;
66 pub const SA_ONSTACK: ::c_ulong = 0x00000004;
67 
68 pub const EAI_AGAIN: ::c_int = 2;
69 pub const EAI_BADFLAGS: ::c_int = 3;
70 pub const EAI_FAIL: ::c_int = 4;
71 pub const EAI_SERVICE: ::c_int = 9;
72 pub const EAI_SYSTEM: ::c_int = 11;
73 pub const EAI_OVERFLOW: ::c_int = 14;
74 
75 pub const _SC_PAGESIZE: ::c_int = 8;
76 pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 51;
77 pub const PTHREAD_STACK_MIN: ::size_t = 0;
78 
79 // sys/wait.h
80 pub const WNOHANG: ::c_int = 1;
81 pub const WUNTRACED: ::c_int = 2;
82 
83 // sys/socket.h
84 pub const SOMAXCONN: ::c_int = 128;
85 
86 safe_f! {
87     pub {const} fn WIFSTOPPED(status: ::c_int) -> bool {
88         (status & 0xff) == 0x7f
89     }
90 
91     pub {const} fn WSTOPSIG(status: ::c_int) -> ::c_int {
92         // (status >> 8) & 0xff
93         WEXITSTATUS(status)
94     }
95 
96     pub {const} fn WIFSIGNALED(status: ::c_int) -> bool {
97         ((status & 0x7f) > 0) && ((status & 0x7f) < 0x7f)
98     }
99 
100     pub {const} fn WTERMSIG(status: ::c_int) -> ::c_int {
101         status & 0x7f
102     }
103 
104     pub {const} fn WIFEXITED(status: ::c_int) -> bool {
105         (status & 0xff) == 0
106     }
107 
108     pub {const} fn WEXITSTATUS(status: ::c_int) -> ::c_int {
109         (status >> 8) & 0xff
110     }
111 
112     // RTEMS doesn't have native WIFCONTINUED.
113     pub {const} fn WIFCONTINUED(_status: ::c_int) -> bool {
114         true
115     }
116 
117     // RTEMS doesn't have native WCOREDUMP.
118     pub {const} fn WCOREDUMP(_status: ::c_int) -> bool {
119         false
120     }
121 }
122 
123 extern "C" {
futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int124     pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
writev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t125     pub fn writev(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t126     pub fn readv(fd: ::c_int, iov: *const ::iovec, iovcnt: ::c_int) -> ::ssize_t;
127 
pthread_create( native: *mut ::pthread_t, attr: *const ::pthread_attr_t, f: extern "C" fn(_: *mut ::c_void) -> *mut ::c_void, value: *mut ::c_void, ) -> ::c_int128     pub fn pthread_create(
129         native: *mut ::pthread_t,
130         attr: *const ::pthread_attr_t,
131         f: extern "C" fn(_: *mut ::c_void) -> *mut ::c_void,
132         value: *mut ::c_void,
133     ) -> ::c_int;
134 
pthread_condattr_setclock( attr: *mut ::pthread_condattr_t, clock_id: ::clockid_t, ) -> ::c_int135     pub fn pthread_condattr_setclock(
136         attr: *mut ::pthread_condattr_t,
137         clock_id: ::clockid_t,
138     ) -> ::c_int;
139 
getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int140     pub fn getentropy(buf: *mut ::c_void, buflen: ::size_t) -> ::c_int;
141 
setgroups(ngroups: ::c_int, grouplist: *const ::gid_t) -> ::c_int142     pub fn setgroups(ngroups: ::c_int, grouplist: *const ::gid_t) -> ::c_int;
143 }
144