diff --git a/src/unix/errors b/src/unix/errors
new file mode 100644
index 0000000..5e3efe1
--- /dev/null
+++ b/src/unix/errors
@@ -0,0 +1,6062 @@
+warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
+package:   /home/kelvin/repos/libc/libc-test/Cargo.toml
+workspace: /home/kelvin/repos/libc/Cargo.toml
+   Compiling libc v0.2.21 (file:///home/kelvin/repos/libc)
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:154:35
+    |
+154 |     pub fn fopen(filename: *const c_char,
+    |                                   ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:155:31
+    |
+155 |                  mode: *const c_char) -> *mut FILE;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:158:37
+    |
+158 |     pub fn freopen(filename: *const c_char, mode: *const c_char,
+    |                                     ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:158:58
+    |
+158 |     pub fn freopen(filename: *const c_char, mode: *const c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:162:36
+    |
+162 |     pub fn remove(filename: *const c_char) -> c_int;
+    |                                    ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:163:35
+    |
+163 |     pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
+    |                                   ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:163:59
+    |
+163 |     pub fn rename(oldname: *const c_char, newname: *const c_char) -> c_int;
+    |                                                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:166:33
+    |
+166 |                    buffer: *mut c_char,
+    |                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:169:48
+    |
+169 |     pub fn setbuf(stream: *mut FILE, buf: *mut c_char);
+    |                                                ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:173:28
+    |
+173 |     pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
+    |                            ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:173:73
+    |
+173 |     pub fn fgets(buf: *mut c_char, n: c_int, stream: *mut FILE) -> *mut c_char;
+    |                                                                         ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:177:28
+    |
+177 |     pub fn fputs(s: *const c_char, stream: *mut FILE)-> c_int;
+    |                            ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:178:27
+    |
+178 |     pub fn puts(s: *const c_char) -> c_int;
+    |                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:192:45
+    |
+192 |     pub fn fseek(stream: *mut FILE, offset: c_long, whence: c_int) -> c_int;
+    |                                             ^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:193:40
+    |
+193 |     pub fn ftell(stream: *mut FILE) -> c_long;
+    |                                        ^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:201:29
+    |
+201 |     pub fn perror(s: *const c_char);
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:202:27
+    |
+202 |     pub fn atoi(s: *const c_char) -> c_int;
+    |                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:205:29
+    |
+205 |     pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:205:53
+    |
+205 |     pub fn strtod(s: *const c_char, endp: *mut *mut c_char) -> c_double;
+    |                                                     ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:206:29
+    |
+206 |     pub fn strtol(s: *const c_char,
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:207:35
+    |
+207 |                   endp: *mut *mut c_char, base: c_int) -> c_long;
+    |                                   ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:207:59
+    |
+207 |                   endp: *mut *mut c_char, base: c_int) -> c_long;
+    |                                                           ^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:208:30
+    |
+208 |     pub fn strtoul(s: *const c_char, endp: *mut *mut c_char,
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:208:54
+    |
+208 |     pub fn strtoul(s: *const c_char, endp: *mut *mut c_char,
+    |                                                      ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_ulong` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:209:36
+    |
+209 |                    base: c_int) -> c_ulong;
+    |                                    ^^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_ulong;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:220:29
+    |
+220 |     pub fn system(s: *const c_char) -> c_int;
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:221:29
+    |
+221 |     pub fn getenv(s: *const c_char) -> *mut c_char;
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:221:45
+    |
+221 |     pub fn getenv(s: *const c_char) -> *mut c_char;
+    |                                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:223:29
+    |
+223 |     pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
+    |                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:223:49
+    |
+223 |     pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
+    |                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:223:65
+    |
+223 |     pub fn strcpy(dst: *mut c_char, src: *const c_char) -> *mut c_char;
+    |                                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:224:30
+    |
+224 |     pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t)
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:224:50
+    |
+224 |     pub fn strncpy(dst: *mut c_char, src: *const c_char, n: size_t)
+    |                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:225:28
+    |
+225 |                    -> *mut c_char;
+    |                            ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:226:27
+    |
+226 |     pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
+    |                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:226:46
+    |
+226 |     pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
+    |                                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:226:62
+    |
+226 |     pub fn strcat(s: *mut c_char, ct: *const c_char) -> *mut c_char;
+    |                                                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:227:28
+    |
+227 |     pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
+    |                            ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:227:47
+    |
+227 |     pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
+    |                                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:227:74
+    |
+227 |     pub fn strncat(s: *mut c_char, ct: *const c_char, n: size_t) -> *mut c_char;
+    |                                                                          ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:228:30
+    |
+228 |     pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:228:49
+    |
+228 |     pub fn strcmp(cs: *const c_char, ct: *const c_char) -> c_int;
+    |                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:229:31
+    |
+229 |     pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:229:50
+    |
+229 |     pub fn strncmp(cs: *const c_char, ct: *const c_char, n: size_t) -> c_int;
+    |                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:230:31
+    |
+230 |     pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:230:50
+    |
+230 |     pub fn strcoll(cs: *const c_char, ct: *const c_char) -> c_int;
+    |                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:231:30
+    |
+231 |     pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:231:56
+    |
+231 |     pub fn strchr(cs: *const c_char, c: c_int) -> *mut c_char;
+    |                                                        ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:232:31
+    |
+232 |     pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:232:57
+    |
+232 |     pub fn strrchr(cs: *const c_char, c: c_int) -> *mut c_char;
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:233:30
+    |
+233 |     pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:233:49
+    |
+233 |     pub fn strspn(cs: *const c_char, ct: *const c_char) -> size_t;
+    |                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:234:31
+    |
+234 |     pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:234:50
+    |
+234 |     pub fn strcspn(cs: *const c_char, ct: *const c_char) -> size_t;
+    |                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:235:30
+    |
+235 |     pub fn strdup(cs: *const c_char) -> *mut c_char;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:235:46
+    |
+235 |     pub fn strdup(cs: *const c_char) -> *mut c_char;
+    |                                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:236:31
+    |
+236 |     pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:236:50
+    |
+236 |     pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:236:66
+    |
+236 |     pub fn strpbrk(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                                                                  ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:237:30
+    |
+237 |     pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:237:49
+    |
+237 |     pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:237:65
+    |
+237 |     pub fn strstr(cs: *const c_char, ct: *const c_char) -> *mut c_char;
+    |                                                                 ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:238:30
+    |
+238 |     pub fn strlen(cs: *const c_char) -> size_t;
+    |                              ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:239:31
+    |
+239 |     pub fn strnlen(cs: *const c_char, maxlen: size_t) -> size_t;
+    |                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:242:39
+    |
+242 |     pub fn strerror(n: c_int) -> *mut c_char;
+    |                                       ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:243:27
+    |
+243 |     pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
+    |                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:243:45
+    |
+243 |     pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
+    |                                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:243:61
+    |
+243 |     pub fn strtok(s: *mut c_char, t: *const c_char) -> *mut c_char;
+    |                                                             ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:244:28
+    |
+244 |     pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
+    |                            ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:244:47
+    |
+244 |     pub fn strxfrm(s: *mut c_char, ct: *const c_char, n: size_t) -> size_t;
+    |                                               ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `wchar_t` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:245:31
+    |
+245 |     pub fn wcslen(buf: *const wchar_t) -> size_t;
+    |                               ^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:246:32
+    |
+246 |     pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
+    |                                ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `wchar_t` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:246:52
+    |
+246 |     pub fn wcstombs(dest: *mut c_char, src: *const wchar_t, n: size_t) -> ::size_t;
+    |                                                    ^^^^^^^ not found in this scope
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:260:27
+    |
+260 |     pub fn atof(s: *const c_char) -> c_double;
+    |                           ^^^^^^ did you mean `c_schar`?
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:261:20
+    |
+261 |     pub fn labs(i: c_long) -> c_long;
+    |                    ^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/lib.rs:261:31
+    |
+261 |     pub fn labs(i: c_long) -> c_long;
+    |                               ^^^^^^ not found in this scope
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:21:29
+    |
+21  |           pub gr_name: *mut ::c_char,
+    |                               ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:22:31
+    |
+22  |           pub gr_passwd: *mut ::c_char,
+    |                                 ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:24:33
+    |
+24  |           pub gr_mem: *mut *mut ::c_char,
+    |                                   ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:28:21
+    |
+28  |           pub actime: time_t,
+    |                       ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:29:22
+    |
+29  |           pub modtime: time_t,
+    |                        ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:33:21
+    |
+33  |           pub tv_sec: time_t,
+    |                       ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `suseconds_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:34:22
+    |
+34  |           pub tv_usec: suseconds_t,
+    |                        ^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:38:21
+    |
+38  |           pub tv_sec: time_t,
+    |                       ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:39:22
+    |
+39  |           pub tv_nsec: c_long,
+    |                        ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `rlim_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:43:23
+    |
+43  |           pub rlim_cur: rlim_t,
+    |                         ^^^^^^ did you mean `rlimit`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `rlim_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:44:23
+    |
+44  |           pub rlim_max: rlim_t,
+    |                         ^^^^^^ did you mean `rlimit`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:50:24
+    |
+50  |           pub ru_maxrss: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:51:23
+    |
+51  |           pub ru_ixrss: c_long,
+    |                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:52:23
+    |
+52  |           pub ru_idrss: c_long,
+    |                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:53:23
+    |
+53  |           pub ru_isrss: c_long,
+    |                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:54:24
+    |
+54  |           pub ru_minflt: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:55:24
+    |
+55  |           pub ru_majflt: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:56:23
+    |
+56  |           pub ru_nswap: c_long,
+    |                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:57:25
+    |
+57  |           pub ru_inblock: c_long,
+    |                           ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:58:25
+    |
+58  |           pub ru_oublock: c_long,
+    |                           ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:59:24
+    |
+59  |           pub ru_msgsnd: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:60:24
+    |
+60  |           pub ru_msgrcv: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:61:26
+    |
+61  |           pub ru_nsignals: c_long,
+    |                            ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:62:23
+    |
+62  |           pub ru_nvcsw: c_long,
+    |                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:63:24
+    |
+63  |           pub ru_nivcsw: c_long,
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:93:28
+    |
+93  |           pub h_name: *mut ::c_char,
+    |                              ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:94:36
+    |
+94  |           pub h_aliases: *mut *mut ::c_char,
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:97:38
+    |
+97  |           pub h_addr_list: *mut *mut ::c_char,
+    |                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:251:36
+    |
+251 |       pub fn getgrnam(name: *const ::c_char) -> *mut group;
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:256:36
+    |
+256 |       pub fn getpwnam(name: *const ::c_char) -> *mut passwd;
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `passwd` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:256:52
+    |
+256 |       pub fn getpwnam(name: *const ::c_char) -> *mut passwd;
+    |                                                      ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `passwd` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:258:43
+    |
+258 |       pub fn getpwuid(uid: ::uid_t) -> *mut passwd;
+    |                                             ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:261:37
+    |
+261 |                      format: *const ::c_char, ...) -> ::c_int;
+    |                                       ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:262:36
+    |
+262 |       pub fn printf(format: *const ::c_char, ...) -> ::c_int;
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:263:31
+    |
+263 |       pub fn snprintf(s: *mut ::c_char, n: ::size_t,
+    |                                 ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:264:38
+    |
+264 |                       format: *const ::c_char, ...) -> ::c_int;
+    |                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:265:30
+    |
+265 |       pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;
+    |                                ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:265:55
+    |
+265 |       pub fn sprintf(s: *mut ::c_char, format: *const ::c_char, ...) -> ::c_int;
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:266:57
+    |
+266 |       pub fn fscanf(stream: *mut ::FILE, format: *const ::c_char, ...) -> ::c_int;
+    |                                                           ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:267:35
+    |
+267 |       pub fn scanf(format: *const ::c_char, ...) -> ::c_int;
+    |                                     ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:268:31
+    |
+268 |       pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;
+    |                                 ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:268:56
+    |
+268 |       pub fn sscanf(s: *const ::c_char, format: *const ::c_char, ...) -> ::c_int;
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `sockaddr` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:276:53
+    |
+276 |       pub fn connect(socket: ::c_int, address: *const sockaddr,
+    |                                                       ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:277:25
+    |
+277 |                      len: socklen_t) -> ::c_int;
+    |                           ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sockaddr` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:283:50
+    |
+283 |       pub fn accept(socket: ::c_int, address: *mut sockaddr,
+    |                                                    ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:284:37
+    |
+284 |                     address_len: *mut socklen_t) -> ::c_int;
+    |                                       ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sockaddr` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:287:55
+    |
+287 |       pub fn getpeername(socket: ::c_int, address: *mut sockaddr,
+    |                                                         ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:288:42
+    |
+288 |                          address_len: *mut socklen_t) -> ::c_int;
+    |                                            ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sockaddr` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:291:55
+    |
+291 |       pub fn getsockname(socket: ::c_int, address: *mut sockaddr,
+    |                                                         ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:292:42
+    |
+292 |                          address_len: *mut socklen_t) -> ::c_int;
+    |                                            ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:295:35
+    |
+295 |                         option_len: socklen_t) -> ::c_int;
+    |                                     ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sockaddr` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:303:48
+    |
+303 |                     flags: ::c_int, addr: *const sockaddr,
+    |                                                  ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `socklen_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:304:28
+    |
+304 |                     addrlen: socklen_t) -> ::ssize_t;
+    |                              ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:309:31
+    |
+309 |       pub fn chmod(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:309:45
+    |
+309 |       pub fn chmod(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                               ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:312:38
+    |
+312 |       pub fn fchmod(fd: ::c_int, mode: mode_t) -> ::c_int;
+    |                                        ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0573]: expected type, found function `stat`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:316:45
+    |
+316 |       pub fn fstat(fildes: ::c_int, buf: *mut stat) -> ::c_int;
+    |                                               ^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible better candidate is found in another module, you can import it into scope:
+              `use core::os::linux::raw::stat;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:318:31
+    |
+318 |       pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:318:45
+    |
+318 |       pub fn mkdir(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                               ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:322:30
+    |
+322 |       pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
+    |                                ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0573]: expected type, found function `stat`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:322:48
+    |
+322 |       pub fn stat(path: *const c_char, buf: *mut stat) -> ::c_int;
+    |                                                  ^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible better candidate is found in another module, you can import it into scope:
+              `use core::os::linux::raw::stat;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:326:34
+    |
+326 |       pub fn popen(command: *const c_char,
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:327:31
+    |
+327 |                    mode: *const c_char) -> *mut ::FILE;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:331:45
+    |
+331 |       pub fn fdopen(fd: ::c_int, mode: *const c_char) -> *mut ::FILE;
+    |                                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:336:30
+    |
+336 |       pub fn open(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;
+    |                                ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:339:31
+    |
+339 |       pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:339:45
+    |
+339 |       pub fn creat(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                               ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:349:36
+    |
+349 |       pub fn opendir(dirname: *const c_char) -> *mut ::DIR;
+    |                                      ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `dirent` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:352:48
+    |
+352 |       pub fn readdir(dirp: *mut ::DIR) -> *mut ::dirent;
+    |                                                  ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `dirent` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:356:54
+    |
+356 |       pub fn readdir_r(dirp: *mut ::DIR, entry: *mut ::dirent,
+    |                                                        ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `dirent` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:357:42
+    |
+357 |                        result: *mut *mut ::dirent) -> ::c_int;
+    |                                            ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:367:54
+    |
+367 |       pub fn openat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:369:57
+    |
+369 |       pub fn faccessat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                           ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:371:56
+    |
+371 |       pub fn fchmodat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:372:29
+    |
+372 |                       mode: ::mode_t, flags: ::c_int) -> ::c_int;
+    |                               ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:376:56
+    |
+376 |       pub fn fchownat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:380:55
+    |
+380 |       pub fn fstatat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0573]: expected type, found function `stat`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:381:30
+    |
+381 |                      buf: *mut stat, flags: ::c_int) -> ::c_int;
+    |                                ^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible better candidate is found in another module, you can import it into scope:
+              `use core::os::linux::raw::stat;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:382:56
+    |
+382 |       pub fn linkat(olddirfd: ::c_int, oldpath: *const ::c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:383:56
+    |
+383 |                     newdirfd: ::c_int, newpath: *const ::c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:385:55
+    |
+385 |       pub fn mkdirat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:386:28
+    |
+386 |                      mode: ::mode_t) -> ::c_int;
+    |                              ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:387:58
+    |
+387 |       pub fn readlinkat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                            ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:388:35
+    |
+388 |                         buf: *mut ::c_char, bufsiz: ::size_t) -> ::ssize_t;
+    |                                     ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:389:58
+    |
+389 |       pub fn renameat(olddirfd: ::c_int, oldpath: *const ::c_char,
+    |                                                            ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:390:58
+    |
+390 |                       newdirfd: ::c_int, newpath: *const ::c_char)
+    |                                                            ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:392:39
+    |
+392 |       pub fn symlinkat(target: *const ::c_char, newdirfd: ::c_int,
+    |                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:393:41
+    |
+393 |                        linkpath: *const ::c_char) -> ::c_int;
+    |                                           ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:394:56
+    |
+394 |       pub fn unlinkat(dirfd: ::c_int, pathname: *const ::c_char,
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:397:32
+    |
+397 |       pub fn access(path: *const c_char, amode: ::c_int) -> ::c_int;
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:399:30
+    |
+399 |       pub fn chdir(dir: *const c_char) -> ::c_int;
+    |                                ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:401:31
+    |
+401 |       pub fn chown(path: *const c_char, uid: uid_t,
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:405:32
+    |
+405 |       pub fn lchown(path: *const c_char, uid: uid_t,
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:412:31
+    |
+412 |       pub fn execl(path: *const c_char,
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:413:31
+    |
+413 |                    arg0: *const c_char, ...) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:414:34
+    |
+414 |       pub fn execle(path: *const ::c_char,
+    |                                    ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:415:34
+    |
+415 |                     arg0: *const ::c_char, ...) -> ::c_int;
+    |                                    ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:416:34
+    |
+416 |       pub fn execlp(file: *const ::c_char,
+    |                                    ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:417:34
+    |
+417 |                     arg0: *const ::c_char, ...) -> ::c_int;
+    |                                    ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:418:31
+    |
+418 |       pub fn execv(prog: *const c_char,
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:419:38
+    |
+419 |                    argv: *const *const c_char) -> ::c_int;
+    |                                        ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:420:32
+    |
+420 |       pub fn execve(prog: *const c_char, argv: *const *const c_char,
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:420:60
+    |
+420 |       pub fn execve(prog: *const c_char, argv: *const *const c_char,
+    |                                                              ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:421:39
+    |
+421 |                     envp: *const *const c_char)
+    |                                         ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:423:29
+    |
+423 |       pub fn execvp(c: *const c_char,
+    |                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:424:39
+    |
+424 |                     argv: *const *const c_char) -> ::c_int;
+    |                                         ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:426:58
+    |
+426 |       pub fn fpathconf(filedes: ::c_int, name: ::c_int) -> c_long;
+    |                                                            ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:427:29
+    |
+427 |       pub fn getcwd(buf: *mut c_char, size: ::size_t) -> *mut c_char;
+    |                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:427:61
+    |
+427 |       pub fn getcwd(buf: *mut c_char, size: ::size_t) -> *mut c_char;
+    |                                                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:433:31
+    |
+433 |       pub fn getlogin() -> *mut c_char;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:436:52
+    |
+436 |       pub fn getopt(argc: ::c_int, argv: *const *mut c_char,
+    |                                                      ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:437:34
+    |
+437 |                     optstr: *const c_char) -> ::c_int;
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:444:29
+    |
+444 |       pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;
+    |                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:444:49
+    |
+444 |       pub fn link(src: *const c_char, dst: *const c_char) -> ::c_int;
+    |                                                   ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:445:39
+    |
+445 |       pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
+    |                                         ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:445:66
+    |
+445 |       pub fn lseek(fd: ::c_int, offset: off_t, whence: ::c_int) -> off_t;
+    |                                                                    ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:446:34
+    |
+446 |       pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_long` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:446:60
+    |
+446 |       pub fn pathconf(path: *const c_char, name: ::c_int) -> c_long;
+    |                                                              ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:458:31
+    |
+458 |       pub fn rmdir(path: *const c_char) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:473:41
+    |
+473 |       pub fn ttyname(fd: ::c_int) -> *mut c_char;
+    |                                           ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:474:29
+    |
+474 |       pub fn unlink(c: *const c_char) -> ::c_int;
+    |                               ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:489:26
+    |
+489 |                    offset: off_t) -> ::ssize_t;
+    |                            ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:493:27
+    |
+493 |                     offset: off_t) -> ::ssize_t;
+    |                             ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:494:24
+    |
+494 |       pub fn umask(mask: mode_t) -> mode_t;
+    |                          ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:494:35
+    |
+494 |       pub fn umask(mask: mode_t) -> mode_t;
+    |                                     ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:497:31
+    |
+497 |       pub fn utime(file: *const c_char, buf: *const utimbuf) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:515:25
+    |
+515 |                   offset: off_t)
+    |                           ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:521:42
+    |
+521 |       pub fn if_nametoindex(ifname: *const c_char) -> ::c_uint;
+    |                                            ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:523:42
+    |
+523 |                             ifname: *mut ::c_char) -> *mut ::c_char;
+    |                                            ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:523:60
+    |
+523 |                             ifname: *mut ::c_char) -> *mut ::c_char;
+    |                                                              ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:527:31
+    |
+527 |       pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0573]: expected type, found function `stat`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:527:49
+    |
+527 |       pub fn lstat(path: *const c_char, buf: *mut stat) -> ::c_int;
+    |                                                   ^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible better candidate is found in another module, you can import it into scope:
+              `use core::os::linux::raw::stat;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:535:32
+    |
+535 |       pub fn setenv(name: *const c_char, val: *const c_char,
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:535:52
+    |
+535 |       pub fn setenv(name: *const c_char, val: *const c_char,
+    |                                                      ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:540:34
+    |
+540 |       pub fn unsetenv(name: *const c_char) -> ::c_int;
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:542:34
+    |
+542 |       pub fn symlink(path1: *const c_char,
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:543:34
+    |
+543 |                      path2: *const c_char) -> ::c_int;
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `off_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:545:43
+    |
+545 |       pub fn ftruncate(fd: ::c_int, length: off_t) -> ::c_int;
+    |                                             ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:561:40
+    |
+561 |       pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char)
+    |                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:561:65
+    |
+561 |       pub fn realpath(pathname: *const ::c_char, resolved: *mut ::c_char)
+    |                                                                   ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:562:31
+    |
+562 |                       -> *mut ::c_char;
+    |                                 ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `pthread_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:570:32
+    |
+570 |       pub fn pthread_self() -> ::pthread_t;
+    |                                  ^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::pthread_t;`
+              `use core::os::unix::raw::pthread_t;`
+
+error[E0412]: cannot find type `pthread_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:571:42
+    |
+571 |       pub fn pthread_create(native: *mut ::pthread_t,
+    |                                            ^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::pthread_t;`
+              `use core::os::unix::raw::pthread_t;`
+
+error[E0412]: cannot find type `pthread_attr_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:572:42
+    |
+572 |                             attr: *const ::pthread_attr_t,
+    |                                            ^^^^^^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:577:35
+    |
+577 |       pub fn pthread_join(native: ::pthread_t,
+    |                                     ^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::pthread_t;`
+              `use core::os::unix::raw::pthread_t;`
+
+error[E0412]: cannot find type `pthread_attr_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:580:43
+    |
+580 |       pub fn pthread_attr_init(attr: *mut ::pthread_attr_t) -> ::c_int;
+    |                                             ^^^^^^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_attr_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:581:46
+    |
+581 |       pub fn pthread_attr_destroy(attr: *mut ::pthread_attr_t) -> ::c_int;
+    |                                                ^^^^^^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_attr_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:582:51
+    |
+582 |       pub fn pthread_attr_setstacksize(attr: *mut ::pthread_attr_t,
+    |                                                     ^^^^^^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_attr_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:584:53
+    |
+584 |       pub fn pthread_attr_setdetachstate(attr: *mut ::pthread_attr_t,
+    |                                                       ^^^^^^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:586:37
+    |
+586 |       pub fn pthread_detach(thread: ::pthread_t) -> ::c_int;
+    |                                       ^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::pthread_t;`
+              `use core::os::unix::raw::pthread_t;`
+
+error[E0412]: cannot find type `pthread_key_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:589:41
+    |
+589 |       pub fn pthread_key_create(key: *mut pthread_key_t,
+    |                                           ^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_key_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:592:36
+    |
+592 |       pub fn pthread_key_delete(key: pthread_key_t) -> ::c_int;
+    |                                      ^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_key_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:593:37
+    |
+593 |       pub fn pthread_getspecific(key: pthread_key_t) -> *mut ::c_void;
+    |                                       ^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_key_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:594:37
+    |
+594 |       pub fn pthread_setspecific(key: pthread_key_t, value: *const ::c_void)
+    |                                       ^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:596:42
+    |
+596 |       pub fn pthread_mutex_init(lock: *mut pthread_mutex_t,
+    |                                            ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutexattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:597:44
+    |
+597 |                                 attr: *const pthread_mutexattr_t) -> ::c_int;
+    |                                              ^^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:598:45
+    |
+598 |       pub fn pthread_mutex_destroy(lock: *mut pthread_mutex_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:599:42
+    |
+599 |       pub fn pthread_mutex_lock(lock: *mut pthread_mutex_t) -> ::c_int;
+    |                                            ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:600:45
+    |
+600 |       pub fn pthread_mutex_trylock(lock: *mut pthread_mutex_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:601:44
+    |
+601 |       pub fn pthread_mutex_unlock(lock: *mut pthread_mutex_t) -> ::c_int;
+    |                                              ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutexattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:603:46
+    |
+603 |       pub fn pthread_mutexattr_init(attr: *mut pthread_mutexattr_t) -> ::c_int;
+    |                                                ^^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutexattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:606:49
+    |
+606 |       pub fn pthread_mutexattr_destroy(attr: *mut pthread_mutexattr_t) -> ::c_int;
+    |                                                   ^^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutexattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:607:49
+    |
+607 |       pub fn pthread_mutexattr_settype(attr: *mut pthread_mutexattr_t,
+    |                                                   ^^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:612:41
+    |
+612 |       pub fn pthread_cond_init(cond: *mut pthread_cond_t,
+    |                                           ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_condattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:613:43
+    |
+613 |                                attr: *const pthread_condattr_t) -> ::c_int;
+    |                                             ^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:616:41
+    |
+616 |       pub fn pthread_cond_wait(cond: *mut pthread_cond_t,
+    |                                           ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:617:41
+    |
+617 |                                lock: *mut pthread_mutex_t) -> ::c_int;
+    |                                           ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:620:46
+    |
+620 |       pub fn pthread_cond_timedwait(cond: *mut pthread_cond_t,
+    |                                                ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_mutex_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:621:42
+    |
+621 |                                 lock: *mut pthread_mutex_t,
+    |                                            ^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:623:43
+    |
+623 |       pub fn pthread_cond_signal(cond: *mut pthread_cond_t) -> ::c_int;
+    |                                             ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:624:46
+    |
+624 |       pub fn pthread_cond_broadcast(cond: *mut pthread_cond_t) -> ::c_int;
+    |                                                ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_cond_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:625:44
+    |
+625 |       pub fn pthread_cond_destroy(cond: *mut pthread_cond_t) -> ::c_int;
+    |                                              ^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_condattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:626:45
+    |
+626 |       pub fn pthread_condattr_init(attr: *mut pthread_condattr_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_condattr_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:627:48
+    |
+627 |       pub fn pthread_condattr_destroy(attr: *mut pthread_condattr_t) -> ::c_int;
+    |                                                  ^^^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:630:46
+    |
+630 |       pub fn pthread_rwlock_destroy(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                                ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:633:45
+    |
+633 |       pub fn pthread_rwlock_rdlock(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:636:48
+    |
+636 |       pub fn pthread_rwlock_tryrdlock(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                                  ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:639:45
+    |
+639 |       pub fn pthread_rwlock_wrlock(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:642:48
+    |
+642 |       pub fn pthread_rwlock_trywrlock(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                                  ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_rwlock_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:645:45
+    |
+645 |       pub fn pthread_rwlock_unlock(lock: *mut pthread_rwlock_t) -> ::c_int;
+    |                                               ^^^^^^^^^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:648:54
+    |
+648 |       pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t,
+    |                                                        ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:649:41
+    |
+649 |                              oldset: *mut sigset_t) -> ::c_int;
+    |                                           ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `pthread_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:650:35
+    |
+650 |       pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;
+    |                                     ^^^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::pthread_t;`
+              `use core::os::unix::raw::pthread_t;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:653:50
+    |
+653 |       pub fn strerror_r(errnum: ::c_int, buf: *mut c_char,
+    |                                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `socklen_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:660:38
+    |
+660 |                         optlen: *mut ::socklen_t) -> ::c_int;
+    |                                        ^^^^^^^^^ did you mean `locale_t`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0573]: expected type, found function `sigaction`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:664:34
+    |
+664 |                        act: *const sigaction,
+    |                                    ^^^^^^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0573]: expected type, found function `sigaction`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:665:35
+    |
+665 |                        oldact: *mut sigaction) -> ::c_int;
+    |                                     ^^^^^^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `stack_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:669:35
+    |
+669 |       pub fn sigaltstack(ss: *const stack_t,
+    |                                     ^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `stack_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:670:34
+    |
+670 |                          oss: *mut stack_t) -> ::c_int;
+    |                                    ^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:674:32
+    |
+674 |       pub fn sigwait(set: *const sigset_t,
+    |                                  ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:678:38
+    |
+678 |       pub fn utimes(filename: *const ::c_char,
+    |                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:680:38
+    |
+680 |       pub fn dlopen(filename: *const ::c_char,
+    |                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:682:32
+    |
+682 |       pub fn dlerror() -> *mut ::c_char;
+    |                                  ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:684:35
+    |
+684 |                    symbol: *const ::c_char) -> *mut ::c_void;
+    |                                     ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `Dl_info` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:686:53
+    |
+686 |       pub fn dladdr(addr: *const ::c_void, info: *mut Dl_info) -> ::c_int;
+    |                                                       ^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:688:37
+    |
+688 |       pub fn getaddrinfo(node: *const c_char,
+    |                                       ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:689:40
+    |
+689 |                          service: *const c_char,
+    |                                          ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `addrinfo` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:690:38
+    |
+690 |                          hints: *const addrinfo,
+    |                                        ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `addrinfo` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:691:39
+    |
+691 |                          res: *mut *mut addrinfo) -> ::c_int;
+    |                                         ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `addrinfo` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:692:35
+    |
+692 |       pub fn freeaddrinfo(res: *mut addrinfo);
+    |                                     ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:693:55
+    |
+693 |       pub fn gai_strerror(errcode: ::c_int) -> *const ::c_char;
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:696:36
+    |
+696 |       pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                      ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:696:57
+    |
+696 |       pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                                           ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:696:69
+    |
+696 |       pub fn gmtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                                                       ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:698:39
+    |
+698 |       pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:698:60
+    |
+698 |       pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                                              ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:698:72
+    |
+698 |       pub fn localtime_r(time_p: *const time_t, result: *mut tm) -> *mut tm;
+    |                                                                          ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:702:28
+    |
+702 |       pub fn mktime(tm: *mut tm) -> time_t;
+    |                              ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:702:35
+    |
+702 |       pub fn mktime(tm: *mut tm) -> time_t;
+    |                                     ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:704:28
+    |
+704 |       pub fn time(time: *mut time_t) -> time_t;
+    |                              ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:704:39
+    |
+704 |       pub fn time(time: *mut time_t) -> time_t;
+    |                                         ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:706:35
+    |
+706 |       pub fn localtime(time: *const time_t) -> *mut tm;
+    |                                     ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `tm` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:706:51
+    |
+706 |       pub fn localtime(time: *const time_t) -> *mut tm;
+    |                                                     ^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:709:37
+    |
+709 |       pub fn mknod(pathname: *const ::c_char, mode: ::mode_t,
+    |                                       ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:709:53
+    |
+709 |       pub fn mknod(pathname: *const ::c_char, mode: ::mode_t,
+    |                                                       ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `dev_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:710:25
+    |
+710 |                    dev: ::dev_t) -> ::c_int;
+    |                           ^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::dev_t;`
+              `use core::os::unix::raw::dev_t;`
+
+error[E0412]: cannot find type `utsname` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:711:30
+    |
+711 |       pub fn uname(buf: *mut ::utsname) -> ::c_int;
+    |                                ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:713:37
+    |
+713 |       pub fn gethostname(name: *mut ::c_char, len: ::size_t) -> ::c_int;
+    |                                       ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:714:34
+    |
+714 |       pub fn chroot(name: *const ::c_char) -> ::c_int;
+    |                                    ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:729:32
+    |
+729 |       pub fn putenv(string: *mut c_char) -> ::c_int;
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `nfds_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:732:41
+    |
+732 |       pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: ::c_int) -> ::c_int;
+    |                                           ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:739:32
+    |
+739 |                     readfs: *mut fd_set,
+    |                                  ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:740:34
+    |
+740 |                     writefds: *mut fd_set,
+    |                                    ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:741:34
+    |
+741 |                     errorfds: *mut fd_set,
+    |                                    ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:745:39
+    |
+745 |                        locale: *const ::c_char) -> *mut ::c_char;
+    |                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:745:57
+    |
+745 |                        locale: *const ::c_char) -> *mut ::c_char;
+    |                                                           ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `lconv` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:746:33
+    |
+746 |       pub fn localeconv() -> *mut lconv;
+    |                                   ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:748:34
+    |
+748 |       pub fn sem_destroy(sem: *mut sem_t) -> ::c_int;
+    |                                    ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:749:36
+    |
+749 |       pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:749:73
+    |
+749 |       pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;
+    |                                                                           ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:750:32
+    |
+750 |       pub fn sem_close(sem: *mut sem_t) -> ::c_int;
+    |                                  ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:751:38
+    |
+751 |       pub fn sem_unlink(name: *const ::c_char) -> ::c_int;
+    |                                        ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:754:31
+    |
+754 |       pub fn sem_wait(sem: *mut sem_t) -> ::c_int;
+    |                                 ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:755:34
+    |
+755 |       pub fn sem_trywait(sem: *mut sem_t) -> ::c_int;
+    |                                    ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:756:31
+    |
+756 |       pub fn sem_post(sem: *mut sem_t) -> ::c_int;
+    |                                 ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sem_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:757:31
+    |
+757 |       pub fn sem_init(sem: *mut sem_t,
+    |                                 ^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:761:33
+    |
+761 |       pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;
+    |                                   ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0573]: expected type, found function `statvfs`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:761:51
+    |
+761 |       pub fn statvfs(path: *const c_char, buf: *mut statvfs) -> ::c_int;
+    |                                                     ^^^^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0573]: expected type, found function `statvfs`
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:762:44
+    |
+762 |       pub fn fstatvfs(fd: ::c_int, buf: *mut statvfs) -> ::c_int;
+    |                                              ^^^^^^^ not a type
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:764:34
+    |
+764 |       pub fn readlink(path: *const c_char,
+    |                                    ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:765:31
+    |
+765 |                       buf: *mut c_char,
+    |                                 ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:770:34
+    |
+770 |       pub fn sigemptyset(set: *mut sigset_t) -> ::c_int;
+    |                                    ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:772:32
+    |
+772 |       pub fn sigaddset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;
+    |                                  ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:774:33
+    |
+774 |       pub fn sigfillset(set: *mut sigset_t) -> ::c_int;
+    |                                   ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:776:32
+    |
+776 |       pub fn sigdelset(set: *mut sigset_t, signum: ::c_int) -> ::c_int;
+    |                                  ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:778:36
+    |
+778 |       pub fn sigismember(set: *const sigset_t, signum: ::c_int) -> ::c_int;
+    |                                      ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `tm` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:781:30
+    |
+781 |       pub fn timegm(tm: *mut ::tm) -> time_t;
+    |                                ^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `time_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:781:37
+    |
+781 |       pub fn timegm(tm: *mut ::tm) -> time_t;
+    |                                       ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::time_t;`
+              `use core::os::unix::raw::time_t;`
+
+error[E0412]: cannot find type `c_long` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:785:40
+    |
+785 |       pub fn sysconf(name: ::c_int) -> ::c_long;
+    |                                          ^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_long;`
+
+error[E0412]: cannot find type `c_char` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:787:32
+    |
+787 |       pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                  ^^^^^^ did you mean `char`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `mode_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:787:46
+    |
+787 |       pub fn mkfifo(path: *const c_char, mode: mode_t) -> ::c_int;
+    |                                                ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::mode_t;`
+              `use core::os::unix::raw::mode_t;`
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:795:33
+    |
+795 |                      readfs: *mut fd_set,
+    |                                   ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:796:35
+    |
+796 |                      writefds: *mut fd_set,
+    |                                     ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `fd_set` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:797:35
+    |
+797 |                      errorfds: *mut fd_set,
+    |                                     ^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `sigset_t` in this scope
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:799:36
+    |
+799 |                      sigmask: *const sigset_t) -> ::c_int;
+    |                                      ^^^^^^^^ not found in this scope
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `off_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:801:29
+    |
+801 |                     offset: ::off_t,
+    |                               ^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `off_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:803:45
+    |
+803 |       pub fn ftello(stream: *mut ::FILE) -> ::off_t;
+    |                                               ^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidates are found in other modules, you can import them into scope:
+              `use core::os::linux::raw::off_t;`
+              `use core::os::unix::raw::off_t;`
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:807:42
+    |
+807 |       pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t;
+    |                                            ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `speed_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:807:56
+    |
+807 |       pub fn cfgetispeed(termios: *const ::termios) -> ::speed_t;
+    |                                                          ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:808:42
+    |
+808 |       pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t;
+    |                                            ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `speed_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:808:56
+    |
+808 |       pub fn cfgetospeed(termios: *const ::termios) -> ::speed_t;
+    |                                                          ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:809:38
+    |
+809 |       pub fn cfmakeraw(termios: *mut ::termios);
+    |                                        ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:810:40
+    |
+810 |       pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                          ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `speed_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:810:58
+    |
+810 |       pub fn cfsetispeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                                            ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:811:40
+    |
+811 |       pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                          ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `speed_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:811:58
+    |
+811 |       pub fn cfsetospeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                                            ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:812:39
+    |
+812 |       pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                         ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `speed_t` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:812:57
+    |
+812 |       pub fn cfsetspeed(termios: *mut ::termios, speed: ::speed_t) -> ::c_int;
+    |                                                           ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:813:51
+    |
+813 |       pub fn tcgetattr(fd: ::c_int, termios: *mut ::termios) -> ::c_int;
+    |                                                     ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `termios` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:816:40
+    |
+816 |                        termios: *const ::termios) -> ::c_int;
+    |                                          ^^^^^^^ not found in the crate root
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:820:37
+    |
+820 |       pub fn mkstemp(template: *mut ::c_char) -> ::c_int;
+    |                                       ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:821:37
+    |
+821 |       pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char;
+    |                                       ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:821:55
+    |
+821 |       pub fn mkdtemp(template: *mut ::c_char) -> *mut ::c_char;
+    |                                                         ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:823:31
+    |
+823 |       pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;
+    |                                 ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:823:49
+    |
+823 |       pub fn tmpnam(ptr: *mut ::c_char) -> *mut ::c_char;
+    |                                                   ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:825:36
+    |
+825 |       pub fn openlog(ident: *const ::c_char, logopt: ::c_int, facility: ::c_int);
+    |                                      ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:828:56
+    |
+828 |       pub fn syslog(priority: ::c_int, message: *const ::c_char, ...);
+    |                                                          ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0412]: cannot find type `c_char` in the crate root
+   --> /home/kelvin/repos/libc/src/unix/mod.rs:835:43
+    |
+835 |       pub fn ptsname(fd: ::c_int) -> *mut ::c_char;
+    |                                             ^^^^^^ did you mean `c_schar`?
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+    |
+    = help: possible candidate is found in another module, you can import it into scope:
+              `use core::os::raw::c_char;`
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+   --> /home/kelvin/repos/libc/src/macros.rs:44:14
+    |
+44  |           impl ::dox::Copy for $i {}
+    |                ^^^^^^^^^^^
+    | 
+   ::: /home/kelvin/repos/libc/src/unix/mod.rs
+    |
+28  |           pub actime: time_t,
+    |           ------------------ this field does not implement `Copy`
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+   --> /home/kelvin/repos/libc/src/macros.rs:44:14
+    |
+44  |           impl ::dox::Copy for $i {}
+    |                ^^^^^^^^^^^
+    | 
+   ::: /home/kelvin/repos/libc/src/unix/mod.rs
+    |
+33  |           pub tv_sec: time_t,
+    |           ------------------ this field does not implement `Copy`
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+   --> /home/kelvin/repos/libc/src/macros.rs:44:14
+    |
+44  |           impl ::dox::Copy for $i {}
+    |                ^^^^^^^^^^^
+    | 
+   ::: /home/kelvin/repos/libc/src/unix/mod.rs
+    |
+38  |           pub tv_sec: time_t,
+    |           ------------------ this field does not implement `Copy`
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+   --> /home/kelvin/repos/libc/src/macros.rs:44:14
+    |
+44  |           impl ::dox::Copy for $i {}
+    |                ^^^^^^^^^^^
+    | 
+   ::: /home/kelvin/repos/libc/src/unix/mod.rs
+    |
+43  |           pub rlim_cur: rlim_t,
+    |           -------------------- this field does not implement `Copy`
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error[E0204]: the trait `Copy` may not be implemented for this type
+   --> /home/kelvin/repos/libc/src/macros.rs:44:14
+    |
+44  |           impl ::dox::Copy for $i {}
+    |                ^^^^^^^^^^^
+    | 
+   ::: /home/kelvin/repos/libc/src/unix/mod.rs
+    |
+50  |           pub ru_maxrss: c_long,
+    |           --------------------- this field does not implement `Copy`
+    | 
+   ::: /home/kelvin/repos/libc/src/lib.rs
+    |
+266 | / cfg_if! {
+267 | |     if #[cfg(windows)] {
+268 | |         mod windows;
+269 | |         pub use windows::*;
+...   |
+278 | |     }
+279 | | }
+    | |_- in this macro invocation
+
+error: aborting due to 5 previous errors
+
+error: Could not compile `libc`.
+
+To learn more, run the command again with --verbose.
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 15152eb..5916028 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -837,7 +837,10 @@
 }
 
 cfg_if! {
-    if #[cfg(any(target_os = "linux",
+    if #[cfg(target_env = "uclibc")] {
+        mod uclibc;
+        pub use self::uclibc::*;
+    } else if #[cfg(any(target_os = "linux",
                  target_os = "android",
                  target_os = "emscripten",
                  target_os = "fuchsia"))] {
diff --git a/src/unix/notbsd/linux/mips/mips32.rs b/src/unix/notbsd/linux/mips/mips32.rs
index d632dd0..22bb33b 100644
--- a/src/unix/notbsd/linux/mips/mips32.rs
+++ b/src/unix/notbsd/linux/mips/mips32.rs
@@ -33,27 +33,15 @@
     }
 
     pub struct stat {
-        #[cfg(not(target_env = "uclibc"))]
         pub st_dev: ::c_ulong,
-        #[cfg(target_env = "uclibc")]
-        pub st_dev: ::dev_t,
-        #[cfg(not(target_env = "uclibc"))]
         st_pad1: [::c_long; 3],
-        #[cfg(target_env = "uclibc")]
-        st_pad1: [::c_long; 2],
         pub st_ino: ::ino_t,
         pub st_mode: ::mode_t,
         pub st_nlink: ::nlink_t,
         pub st_uid: ::uid_t,
         pub st_gid: ::gid_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub st_rdev: ::c_ulong,
-        #[cfg(target_env = "uclibc")]
-        pub st_rdev: ::dev_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub st_pad2: [::c_long; 2],
-        #[cfg(target_env = "uclibc")]
-        pub st_pad2: [::c_long; 1],
         pub st_size: ::off_t,
         st_pad3: ::c_long,
         pub st_atime: ::time_t,
@@ -68,23 +56,14 @@
     }
 
     pub struct stat64 {
-        #[cfg(not(target_env = "uclibc"))]
         pub st_dev: ::c_ulong,
-        #[cfg(target_env = "uclibc")]
-        pub st_dev: ::dev_t,
-        #[cfg(not(target_env = "uclibc"))]
         st_pad1: [::c_long; 3],
-        #[cfg(target_env = "uclibc")]
-        st_pad1: [::c_long; 2],
         pub st_ino: ::ino64_t,
         pub st_mode: ::mode_t,
         pub st_nlink: ::nlink_t,
         pub st_uid: ::uid_t,
         pub st_gid: ::gid_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub st_rdev: ::c_ulong,
-        #[cfg(target_env = "uclibc")]
-        pub st_rdev: ::dev_t,
         st_pad2: [::c_long; 2],
         pub st_size: ::off64_t,
         pub st_atime: ::time_t,
@@ -104,14 +83,10 @@
     }
 
     pub struct sigaction {
-        #[cfg(not(target_env = "uclibc"))]
         pub sa_flags: ::c_int,
-        #[cfg(target_env = "uclibc")]
-        pub sa_flags: ::c_uint,
         pub sa_sigaction: ::sighandler_t,
         pub sa_mask: sigset_t,
         _restorer: *mut ::c_void,
-        #[cfg(not(target_env = "uclibc"))]
         _resv: [::c_int; 1],
     }
 
@@ -122,10 +97,7 @@
     }
 
     pub struct sigset_t {
-        #[cfg(not(target_env = "uclibc"))]
         __val: [::c_ulong; 32],
-        #[cfg(target_env = "uclibc")]
-        __val: [::c_ulong; 4],
     }
 
     pub struct siginfo_t {
@@ -219,10 +191,7 @@
         pub msg_name: *mut ::c_void,
         pub msg_namelen: ::socklen_t,
         pub msg_iov: *mut ::iovec,
-        #[cfg(not(target_env = "uclibc"))]
         pub msg_iovlen: ::size_t,
-        #[cfg(target_env = "uclibc")]
-        pub msg_iovlen: ::c_int,
         pub msg_control: *mut ::c_void,
         pub msg_controllen: ::size_t,
         pub msg_flags: ::c_int,
diff --git a/src/unix/notbsd/linux/mips/mod.rs b/src/unix/notbsd/linux/mips/mod.rs
index 3d87ad5..db580c9 100644
--- a/src/unix/notbsd/linux/mips/mod.rs
+++ b/src/unix/notbsd/linux/mips/mod.rs
@@ -1,4 +1,3 @@
-#[cfg(not(target_env = "uclibc"))]
 pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
 
 pub const SFD_CLOEXEC: ::c_int = 0x080000;
@@ -33,10 +32,7 @@
 
 pub const EFD_CLOEXEC: ::c_int = 0x80000;
 
-#[cfg(not(target_env = "uclibc"))]
 pub const BUFSIZ: ::c_uint = 8192;
-#[cfg(target_env = "uclibc")]
-pub const BUFSIZ: ::c_uint = 4096;
 pub const TMP_MAX: ::c_uint = 238328;
 pub const FOPEN_MAX: ::c_uint = 16;
 pub const POSIX_FADV_DONTNEED: ::c_int = 4;
@@ -55,29 +51,17 @@
 pub const RLIMIT_RSS: ::c_int = 7;
 pub const RLIMIT_NPROC: ::c_int = 8;
 pub const RLIMIT_MEMLOCK: ::c_int = 9;
-#[cfg(not(target_env = "uclibc"))]
 pub const RLIMIT_NLIMITS: ::c_int = 16;
-#[cfg(target_env = "uclibc")]
-pub const RLIMIT_NLIMITS: ::c_int = 15;
 
 pub const O_APPEND: ::c_int = 8;
 pub const O_CREAT: ::c_int = 256;
 pub const O_EXCL: ::c_int = 1024;
 pub const O_NOCTTY: ::c_int = 2048;
 pub const O_NONBLOCK: ::c_int = 128;
-#[cfg(not(target_env = "uclibc"))]
 pub const O_SYNC: ::c_int = 0x4010;
-#[cfg(target_env = "uclibc")]
-pub const O_SYNC: ::c_int = 0x10;
-#[cfg(not(target_env = "uclibc"))]
 pub const O_RSYNC: ::c_int = 0x4010;
-#[cfg(target_env = "uclibc")]
-pub const O_RSYNC: ::c_int = 0x10;
 pub const O_DSYNC: ::c_int = 0x10;
-#[cfg(not(target_env = "uclibc"))]
 pub const O_FSYNC: ::c_int = 0x4010;
-#[cfg(target_env = "uclibc")]
-pub const O_FSYNC: ::c_int = 0x10;
 pub const O_ASYNC: ::c_int = 0x1000;
 pub const O_NDELAY: ::c_int = 0x80;
 
@@ -263,11 +247,8 @@
 pub const SO_BUSY_POLL: ::c_int = 46;
 pub const SO_MAX_PACING_RATE: ::c_int = 47;
 pub const SO_BPF_EXTENSIONS: ::c_int = 48;
-#[cfg(not(target_env = "uclibc"))]
 pub const SO_INCOMING_CPU: ::c_int = 49;
-#[cfg(not(target_env = "uclibc"))]
 pub const SO_ATTACH_BPF: ::c_int = 50;
-#[cfg(not(target_env = "uclibc"))]
 pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
 
 pub const FIOCLEX: ::c_ulong = 0x6601;
@@ -305,10 +286,7 @@
 pub const POLLRDBAND: ::c_short = 0x080;
 pub const POLLWRBAND: ::c_short = 0x100;
 
-#[cfg(not(target_env = "uclibc"))]
 pub const PTHREAD_STACK_MIN: ::size_t = 131072;
-#[cfg(target_env = "uclibc")]
-pub const PTHREAD_STACK_MIN: ::size_t = 16384;
 
 pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5;
 pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff;
diff --git a/src/unix/notbsd/linux/mod.rs b/src/unix/notbsd/linux/mod.rs
index dc3ad1a..9774f93 100644
--- a/src/unix/notbsd/linux/mod.rs
+++ b/src/unix/notbsd/linux/mod.rs
@@ -154,39 +154,14 @@
     }
 
     pub struct dqblk {
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_bhardlimit: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_bhardlimit: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_bsoftlimit: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_bsoftlimit: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_curspace: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_curblocks: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_ihardlimit: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_ihardlimit: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_isoftlimit: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_isoftlimit: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_curinodes: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_curinodes: ::uint32_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_btime: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_btime: ::time_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_itime: ::uint64_t,
-        #[cfg(target_env = "uclibc")]
-        pub dqb_itime: ::time_t,
-        #[cfg(not(target_env = "uclibc"))]
         pub dqb_valid: ::uint32_t,
     }
 
@@ -247,16 +222,78 @@
     }
 }
 
-cfg_if! {
-    if #[cfg(not(target_env = "uclibc"))] {
-        mod notuclibc;
-        pub use self::notuclibc::*;
-    } else {
-        mod uclibc;
-        pub use self::uclibc::*;
-    }
-}
+pub const ABDAY_1: ::nl_item = 0x20000;
+pub const ABDAY_2: ::nl_item = 0x20001;
+pub const ABDAY_3: ::nl_item = 0x20002;
+pub const ABDAY_4: ::nl_item = 0x20003;
+pub const ABDAY_5: ::nl_item = 0x20004;
+pub const ABDAY_6: ::nl_item = 0x20005;
+pub const ABDAY_7: ::nl_item = 0x20006;
 
+pub const DAY_1: ::nl_item = 0x20007;
+pub const DAY_2: ::nl_item = 0x20008;
+pub const DAY_3: ::nl_item = 0x20009;
+pub const DAY_4: ::nl_item = 0x2000A;
+pub const DAY_5: ::nl_item = 0x2000B;
+pub const DAY_6: ::nl_item = 0x2000C;
+pub const DAY_7: ::nl_item = 0x2000D;
+
+pub const ABMON_1: ::nl_item = 0x2000E;
+pub const ABMON_2: ::nl_item = 0x2000F;
+pub const ABMON_3: ::nl_item = 0x20010;
+pub const ABMON_4: ::nl_item = 0x20011;
+pub const ABMON_5: ::nl_item = 0x20012;
+pub const ABMON_6: ::nl_item = 0x20013;
+pub const ABMON_7: ::nl_item = 0x20014;
+pub const ABMON_8: ::nl_item = 0x20015;
+pub const ABMON_9: ::nl_item = 0x20016;
+pub const ABMON_10: ::nl_item = 0x20017;
+pub const ABMON_11: ::nl_item = 0x20018;
+pub const ABMON_12: ::nl_item = 0x20019;
+
+pub const MON_1: ::nl_item = 0x2001A;
+pub const MON_2: ::nl_item = 0x2001B;
+pub const MON_3: ::nl_item = 0x2001C;
+pub const MON_4: ::nl_item = 0x2001D;
+pub const MON_5: ::nl_item = 0x2001E;
+pub const MON_6: ::nl_item = 0x2001F;
+pub const MON_7: ::nl_item = 0x20020;
+pub const MON_8: ::nl_item = 0x20021;
+pub const MON_9: ::nl_item = 0x20022;
+pub const MON_10: ::nl_item = 0x20023;
+pub const MON_11: ::nl_item = 0x20024;
+pub const MON_12: ::nl_item = 0x20025;
+
+pub const AM_STR: ::nl_item = 0x20026;
+pub const PM_STR: ::nl_item = 0x20027;
+
+pub const D_T_FMT: ::nl_item = 0x20028;
+pub const D_FMT: ::nl_item = 0x20029;
+pub const T_FMT: ::nl_item = 0x2002A;
+pub const T_FMT_AMPM: ::nl_item = 0x2002B;
+
+pub const ERA: ::nl_item = 0x2002C;
+pub const ERA_D_FMT: ::nl_item = 0x2002E;
+pub const ALT_DIGITS: ::nl_item = 0x2002F;
+pub const ERA_D_T_FMT: ::nl_item = 0x20030;
+pub const ERA_T_FMT: ::nl_item = 0x20031;
+
+pub const CODESET: ::nl_item = 14;
+
+pub const CRNCYSTR: ::nl_item = 0x4000F;
+
+pub const RUSAGE_THREAD: ::c_int = 1;
+pub const RUSAGE_CHILDREN: ::c_int = -1;
+
+pub const RADIXCHAR: ::nl_item = 0x10000;
+pub const THOUSEP: ::nl_item = 0x10001;
+
+pub const YESEXPR: ::nl_item = 0x50000;
+pub const NOEXPR: ::nl_item = 0x50001;
+pub const YESSTR: ::nl_item = 0x50002;
+pub const NOSTR: ::nl_item = 0x50003;
+
+pub const FILENAME_MAX: ::c_uint = 4096;
 pub const L_tmpnam: ::c_uint = 20;
 pub const _PC_LINK_MAX: ::c_int = 0;
 pub const _PC_MAX_CANON: ::c_int = 1;
@@ -426,6 +463,19 @@
 pub const SCHED_BATCH: ::c_int = 3;
 pub const SCHED_IDLE: ::c_int = 5;
 
+pub const AF_IB: ::c_int = 27;
+pub const AF_MPLS: ::c_int = 28;
+pub const AF_NFC: ::c_int = 39;
+pub const AF_VSOCK: ::c_int = 40;
+#[doc(hidden)]
+pub const AF_MAX: ::c_int = 42;
+pub const PF_IB: ::c_int = AF_IB;
+pub const PF_MPLS: ::c_int = AF_MPLS;
+pub const PF_NFC: ::c_int = AF_NFC;
+pub const PF_VSOCK: ::c_int = AF_VSOCK;
+#[doc(hidden)]
+pub const PF_MAX: ::c_int = AF_MAX;
+
 // System V IPC
 pub const IPC_PRIVATE: ::key_t = 0;
 
@@ -442,6 +492,7 @@
 
 pub const MSG_NOERROR: ::c_int = 0o10000;
 pub const MSG_EXCEPT: ::c_int = 0o20000;
+pub const MSG_COPY: ::c_int = 0o40000;
 
 pub const SHM_R: ::c_int = 0o400;
 pub const SHM_W: ::c_int = 0o200;
@@ -449,6 +500,7 @@
 pub const SHM_RDONLY: ::c_int = 0o10000;
 pub const SHM_RND: ::c_int = 0o20000;
 pub const SHM_REMAP: ::c_int = 0o40000;
+pub const SHM_EXEC: ::c_int = 0o100000;
 
 pub const SHM_LOCK: ::c_int = 11;
 pub const SHM_UNLOCK: ::c_int = 12;
@@ -457,6 +509,7 @@
 pub const SHM_NORESERVE: ::c_int = 0o10000;
 
 pub const EPOLLRDHUP: ::c_int = 0x2000;
+pub const EPOLLEXCLUSIVE: ::c_int = 0x10000000;
 pub const EPOLLONESHOT: ::c_int = 0x40000000;
 
 pub const QFMT_VFS_OLD: ::c_int = 1;
@@ -473,6 +526,8 @@
 pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32;
 pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32;
 pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32;
+pub const RB_SW_SUSPEND: ::c_int = 0xd000fce2u32 as i32;
+pub const RB_KEXEC: ::c_int = 0x45584543u32 as i32;
 
 pub const AI_PASSIVE: ::c_int = 0x0001;
 pub const AI_CANONNAME: ::c_int = 0x0002;
@@ -505,6 +560,15 @@
 
 pub const EAI_SYSTEM: ::c_int = -11;
 
+pub const AIO_CANCELED: ::c_int = 0;
+pub const AIO_NOTCANCELED: ::c_int = 1;
+pub const AIO_ALLDONE: ::c_int = 2;
+pub const LIO_READ: ::c_int = 0;
+pub const LIO_WRITE: ::c_int = 1;
+pub const LIO_NOP: ::c_int = 2;
+pub const LIO_WAIT: ::c_int = 0;
+pub const LIO_NOWAIT: ::c_int = 1;
+
 pub const MREMAP_MAYMOVE: ::c_int = 1;
 pub const MREMAP_FIXED: ::c_int = 2;
 
@@ -614,6 +678,19 @@
 pub const PR_SET_THP_DISABLE: ::c_int = 41;
 pub const PR_GET_THP_DISABLE: ::c_int = 42;
 
+pub const PR_MPX_ENABLE_MANAGEMENT: ::c_int = 43;
+pub const PR_MPX_DISABLE_MANAGEMENT: ::c_int = 44;
+
+pub const PR_SET_FP_MODE: ::c_int = 45;
+pub const PR_GET_FP_MODE: ::c_int = 46;
+pub const PR_FP_MODE_FR: ::c_int = 1 << 0;
+pub const PR_FP_MODE_FRE: ::c_int = 1 << 1;
+
+pub const PR_CAP_AMBIENT: ::c_int = 47;
+pub const PR_CAP_AMBIENT_IS_SET: ::c_int = 1;
+pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2;
+pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3;
+pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4;
 
 f! {
     pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
@@ -648,6 +725,17 @@
 }
 
 extern {
+    pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
+    pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
+    pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
+    pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
+    pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
+    pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int,
+                       timeout: *const ::timespec) -> ::c_int;
+    pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
+    pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,
+                      nitems: ::c_int, sevp: *mut ::sigevent) -> ::c_int;
+
     pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
 
     pub fn setpwent();
@@ -692,6 +780,10 @@
                     offset: ::off64_t,
                     whence: ::c_int) -> ::c_int;
     pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
+    pub fn fallocate(fd: ::c_int, mode: ::c_int,
+                     offset: ::off_t, len: ::off_t) -> ::c_int;
+    pub fn posix_fallocate(fd: ::c_int, offset: ::off_t,
+                           len: ::off_t) -> ::c_int;
     pub fn readahead(fd: ::c_int, offset: ::off64_t,
                      count: ::size_t) -> ::ssize_t;
     pub fn getxattr(path: *const c_char, name: *const c_char,
@@ -721,6 +813,14 @@
     pub fn signalfd(fd: ::c_int,
                     mask: *const ::sigset_t,
                     flags: ::c_int) -> ::c_int;
+    pub fn pwritev(fd: ::c_int,
+                   iov: *const ::iovec,
+                   iovcnt: ::c_int,
+                   offset: ::off_t) -> ::ssize_t;
+    pub fn preadv(fd: ::c_int,
+                  iov: *const ::iovec,
+                  iovcnt: ::c_int,
+                  offset: ::off_t) -> ::ssize_t;
     pub fn quotactl(cmd: ::c_int,
                     special: *const ::c_char,
                     id: ::c_int,
@@ -745,19 +845,53 @@
                        maxevents: ::c_int,
                        timeout: ::c_int,
                        sigmask: *const ::sigset_t) -> ::c_int;
+    pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
     pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
+    pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
+    pub fn mkostemps(template: *mut ::c_char,
+                     suffixlen: ::c_int,
+                     flags: ::c_int) -> ::c_int;
     pub fn sigtimedwait(set: *const sigset_t,
                         info: *mut siginfo_t,
                         timeout: *const ::timespec) -> ::c_int;
     pub fn sigwaitinfo(set: *const sigset_t,
                        info: *mut siginfo_t) -> ::c_int;
+    pub fn openpty(amaster: *mut ::c_int,
+                   aslave: *mut ::c_int,
+                   name: *mut ::c_char,
+                   termp: *const termios,
+                   winp: *const ::winsize) -> ::c_int;
+    pub fn forkpty(amaster: *mut ::c_int,
+                   name: *mut ::c_char,
+                   termp: *const termios,
+                   winp: *const ::winsize) -> ::pid_t;
     pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
+    pub fn getnameinfo(sa: *const ::sockaddr,
+                       salen: ::socklen_t,
+                       host: *mut ::c_char,
+                       hostlen: ::socklen_t,
+                       serv: *mut ::c_char,
+                       sevlen: ::socklen_t,
+                       flags: ::c_int) -> ::c_int;
     pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit,
                    old_limit: *mut ::rlimit) -> ::c_int;
     pub fn prlimit64(pid: ::pid_t,
                      resource: ::c_int,
                      new_limit: *const ::rlimit64,
                      old_limit: *mut ::rlimit64) -> ::c_int;
+    pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
+    pub fn process_vm_readv(pid: ::pid_t,
+                            local_iov: *const ::iovec,
+                            liovcnt: ::c_ulong,
+                            remote_iov: *const ::iovec,
+                            riovcnt: ::c_ulong,
+                            flags: ::c_ulong) -> isize;
+    pub fn process_vm_writev(pid: ::pid_t,
+                             local_iov: *const ::iovec,
+                             liovcnt: ::c_ulong,
+                             remote_iov: *const ::iovec,
+                             riovcnt: ::c_ulong,
+                             flags: ::c_ulong) -> isize;
     pub fn reboot(how_to: ::c_int) -> ::c_int;
     pub fn setfsgid(gid: ::gid_t) -> ::c_int;
     pub fn setfsuid(uid: ::uid_t) -> ::c_int;
@@ -787,6 +921,9 @@
                 pglob: *mut ::glob_t) -> ::c_int;
     pub fn globfree(pglob: *mut ::glob_t);
 
+    pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int)
+                         -> ::c_int;
+
     pub fn shm_unlink(name: *const ::c_char) -> ::c_int;
 
     pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);
@@ -800,6 +937,8 @@
     pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
                     flags: ::c_int, addr: *mut ::sockaddr,
                     addrlen: *mut ::socklen_t) -> ::ssize_t;
+    pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;
+    pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int;
     pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
 
     pub fn bind(socket: ::c_int, address: *const ::sockaddr,
diff --git a/src/unix/notbsd/linux/notuclibc/mod.rs b/src/unix/notbsd/linux/notuclibc/mod.rs
deleted file mode 100644
index 098bee1..0000000
--- a/src/unix/notbsd/linux/notuclibc/mod.rs
+++ /dev/null
@@ -1,187 +0,0 @@
-pub const ABDAY_1: ::nl_item = 0x20000;
-pub const ABDAY_2: ::nl_item = 0x20001;
-pub const ABDAY_3: ::nl_item = 0x20002;
-pub const ABDAY_4: ::nl_item = 0x20003;
-pub const ABDAY_5: ::nl_item = 0x20004;
-pub const ABDAY_6: ::nl_item = 0x20005;
-pub const ABDAY_7: ::nl_item = 0x20006;
-
-pub const DAY_1: ::nl_item = 0x20007;
-pub const DAY_2: ::nl_item = 0x20008;
-pub const DAY_3: ::nl_item = 0x20009;
-pub const DAY_4: ::nl_item = 0x2000A;
-pub const DAY_5: ::nl_item = 0x2000B;
-pub const DAY_6: ::nl_item = 0x2000C;
-pub const DAY_7: ::nl_item = 0x2000D;
-
-pub const ABMON_1: ::nl_item = 0x2000E;
-pub const ABMON_2: ::nl_item = 0x2000F;
-pub const ABMON_3: ::nl_item = 0x20010;
-pub const ABMON_4: ::nl_item = 0x20011;
-pub const ABMON_5: ::nl_item = 0x20012;
-pub const ABMON_6: ::nl_item = 0x20013;
-pub const ABMON_7: ::nl_item = 0x20014;
-pub const ABMON_8: ::nl_item = 0x20015;
-pub const ABMON_9: ::nl_item = 0x20016;
-pub const ABMON_10: ::nl_item = 0x20017;
-pub const ABMON_11: ::nl_item = 0x20018;
-pub const ABMON_12: ::nl_item = 0x20019;
-
-pub const MON_1: ::nl_item = 0x2001A;
-pub const MON_2: ::nl_item = 0x2001B;
-pub const MON_3: ::nl_item = 0x2001C;
-pub const MON_4: ::nl_item = 0x2001D;
-pub const MON_5: ::nl_item = 0x2001E;
-pub const MON_6: ::nl_item = 0x2001F;
-pub const MON_7: ::nl_item = 0x20020;
-pub const MON_8: ::nl_item = 0x20021;
-pub const MON_9: ::nl_item = 0x20022;
-pub const MON_10: ::nl_item = 0x20023;
-pub const MON_11: ::nl_item = 0x20024;
-pub const MON_12: ::nl_item = 0x20025;
-
-pub const AM_STR: ::nl_item = 0x20026;
-pub const PM_STR: ::nl_item = 0x20027;
-
-pub const D_T_FMT: ::nl_item = 0x20028;
-pub const D_FMT: ::nl_item = 0x20029;
-pub const T_FMT: ::nl_item = 0x2002A;
-pub const T_FMT_AMPM: ::nl_item = 0x2002B;
-
-pub const ERA: ::nl_item = 0x2002C;
-pub const ERA_D_FMT: ::nl_item = 0x2002E;
-pub const ALT_DIGITS: ::nl_item = 0x2002F;
-pub const ERA_D_T_FMT: ::nl_item = 0x20030;
-pub const ERA_T_FMT: ::nl_item = 0x20031;
-
-pub const CODESET: ::nl_item = 14;
-
-pub const CRNCYSTR: ::nl_item = 0x4000F;
-
-pub const RADIXCHAR: ::nl_item = 0x10000;
-pub const THOUSEP: ::nl_item = 0x10001;
-
-pub const YESEXPR: ::nl_item = 0x50000;
-pub const NOEXPR: ::nl_item = 0x50001;
-pub const YESSTR: ::nl_item = 0x50002;
-pub const NOSTR: ::nl_item = 0x50003;
-
-pub const FILENAME_MAX: ::c_uint = 4096;
-
-pub const MSG_COPY: ::c_int = 0o40000;
-
-pub const AF_MAX: ::c_int = 42;
-pub const AF_IB: ::c_int = 27;
-pub const AF_MPLS: ::c_int = 28;
-pub const AF_NFC: ::c_int = 39;
-pub const AF_VSOCK: ::c_int = 40;
-#[doc(hidden)]
-pub const PF_IB: ::c_int = AF_IB;
-pub const PF_MPLS: ::c_int = AF_MPLS;
-pub const PF_NFC: ::c_int = AF_NFC;
-pub const PF_VSOCK: ::c_int = AF_VSOCK;
-#[doc(hidden)]
-pub const PF_MAX: ::c_int = AF_MAX;
-
-pub const EPOLLEXCLUSIVE: ::c_int = 0x10000000;
-
-pub const AIO_CANCELED: ::c_int = 0;
-pub const AIO_NOTCANCELED: ::c_int = 1;
-pub const AIO_ALLDONE: ::c_int = 2;
-pub const LIO_READ: ::c_int = 0;
-pub const LIO_WRITE: ::c_int = 1;
-pub const LIO_NOP: ::c_int = 2;
-pub const LIO_WAIT: ::c_int = 0;
-pub const LIO_NOWAIT: ::c_int = 1;
-
-pub const PR_MPX_ENABLE_MANAGEMENT: ::c_int = 43;
-pub const PR_MPX_DISABLE_MANAGEMENT: ::c_int = 44;
-
-pub const PR_FP_MODE_FR: ::c_int = 1 << 0;
-pub const PR_FP_MODE_FRE: ::c_int = 1 << 1;
-
-pub const PR_CAP_AMBIENT: ::c_int = 47;
-pub const PR_CAP_AMBIENT_IS_SET: ::c_int = 1;
-pub const PR_CAP_AMBIENT_RAISE: ::c_int = 2;
-pub const PR_CAP_AMBIENT_LOWER: ::c_int = 3;
-pub const PR_CAP_AMBIENT_CLEAR_ALL: ::c_int = 4;
-
-pub const SHM_EXEC: ::c_int = 0o100000;
-
-pub const RB_SW_SUSPEND: ::c_int = 0xd000fce2u32 as i32;
-pub const RB_KEXEC: ::c_int = 0x45584543u32 as i32;
-
-pub const PR_SET_FP_MODE: ::c_int = 45;
-pub const PR_GET_FP_MODE: ::c_int = 46;
-
-use super::aiocb;
-use super::termios;
-extern {
-    pub fn aio_read(aiocbp: *mut aiocb) -> ::c_int;
-    pub fn aio_write(aiocbp: *mut aiocb) -> ::c_int;
-    pub fn aio_fsync(op: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
-    pub fn aio_error(aiocbp: *const aiocb) -> ::c_int;
-    pub fn aio_return(aiocbp: *mut aiocb) -> ::ssize_t;
-    pub fn aio_suspend(aiocb_list: *const *const aiocb, nitems: ::c_int,
-                       timeout: *const ::timespec) -> ::c_int;
-    pub fn aio_cancel(fd: ::c_int, aiocbp: *mut aiocb) -> ::c_int;
-    pub fn lio_listio(mode: ::c_int, aiocb_list: *const *mut aiocb,
-                      nitems: ::c_int, sevp: *mut ::sigevent) -> ::c_int;
-
-    pub fn getnameinfo(sa: *const ::sockaddr,
-                       salen: ::socklen_t,
-                       host: *mut ::c_char,
-                       hostlen: ::socklen_t,
-                       serv: *mut ::c_char,
-                       sevlen: ::socklen_t,
-                       flags: ::c_int) -> ::c_int;
-    pub fn fallocate(fd: ::c_int, mode: ::c_int,
-                     offset: ::off_t, len: ::off_t) -> ::c_int;
-    pub fn posix_fallocate(fd: ::c_int, offset: ::off_t,
-                           len: ::off_t) -> ::c_int;
-    pub fn pwritev(fd: ::c_int,
-                   iov: *const ::iovec,
-                   iovcnt: ::c_int,
-                   offset: ::off_t) -> ::ssize_t;
-    pub fn preadv(fd: ::c_int,
-                  iov: *const ::iovec,
-                  iovcnt: ::c_int,
-                  offset: ::off_t) -> ::ssize_t;
-
-    pub fn dup3(oldfd: ::c_int, newfd: ::c_int, flags: ::c_int) -> ::c_int;
-
-    pub fn futimes(fd: ::c_int, times: *const ::timeval) -> ::c_int;
-    pub fn mkstemps(template: *mut ::c_char, suffixlen: ::c_int) -> ::c_int;
-    pub fn mkostemp(template: *mut ::c_char, flags: ::c_int) -> ::c_int;
-    pub fn mkostemps(template: *mut ::c_char,
-                     suffixlen: ::c_int,
-                     flags: ::c_int) -> ::c_int;
-
-    pub fn openpty(amaster: *mut ::c_int,
-                   aslave: *mut ::c_int,
-                   name: *mut ::c_char,
-                   termp: *const termios,
-                   winp: *const ::winsize) -> ::c_int;
-    pub fn forkpty(amaster: *mut ::c_int,
-                   name: *mut ::c_char,
-                   termp: *const termios,
-                   winp: *const ::winsize) -> ::pid_t;
-
-    pub fn posix_madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int)
-                         -> ::c_int;
-
-    pub fn getloadavg(loadavg: *mut ::c_double, nelem: ::c_int) -> ::c_int;
-    pub fn process_vm_readv(pid: ::pid_t,
-                            local_iov: *const ::iovec,
-                            liovcnt: ::c_ulong,
-                            remote_iov: *const ::iovec,
-                            riovcnt: ::c_ulong,
-                            flags: ::c_ulong) -> isize;
-    pub fn process_vm_writev(pid: ::pid_t,
-                             local_iov: *const ::iovec,
-                             liovcnt: ::c_ulong,
-                             remote_iov: *const ::iovec,
-                             riovcnt: ::c_ulong,
-                             flags: ::c_ulong) -> isize;
-
-}
diff --git a/src/unix/notbsd/linux/other/mod.rs b/src/unix/notbsd/linux/other/mod.rs
index 7e711b4..ad5cc69 100644
--- a/src/unix/notbsd/linux/other/mod.rs
+++ b/src/unix/notbsd/linux/other/mod.rs
@@ -476,7 +476,6 @@
                   newlen: ::size_t)
                   -> ::c_int;
     pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
-    #[cfg(not(target_env = "uclibc"))]
     pub fn backtrace(buf: *mut *mut ::c_void,
                      sz: ::c_int) -> ::c_int;
     pub fn glob64(pattern: *const ::c_char,
diff --git a/src/unix/notbsd/linux/uclibc/mod.rs b/src/unix/notbsd/linux/uclibc/mod.rs
deleted file mode 100644
index e32155a..0000000
--- a/src/unix/notbsd/linux/uclibc/mod.rs
+++ /dev/null
@@ -1,71 +0,0 @@
-pub const ABDAY_1: ::nl_item = 0x300;
-pub const ABDAY_2: ::nl_item = 0x301;
-pub const ABDAY_3: ::nl_item = 0x302;
-pub const ABDAY_4: ::nl_item = 0x303;
-pub const ABDAY_5: ::nl_item = 0x304;
-pub const ABDAY_6: ::nl_item = 0x305;
-pub const ABDAY_7: ::nl_item = 0x306;
-
-pub const DAY_1: ::nl_item = 0x307;
-pub const DAY_2: ::nl_item = 0x308;
-pub const DAY_3: ::nl_item = 0x309;
-pub const DAY_4: ::nl_item = 0x30A;
-pub const DAY_5: ::nl_item = 0x30B;
-pub const DAY_6: ::nl_item = 0x30C;
-pub const DAY_7: ::nl_item = 0x30D;
-
-pub const ABMON_1: ::nl_item = 0x30E;
-pub const ABMON_2: ::nl_item = 0x30F;
-pub const ABMON_3: ::nl_item = 0x310;
-pub const ABMON_4: ::nl_item = 0x311;
-pub const ABMON_5: ::nl_item = 0x312;
-pub const ABMON_6: ::nl_item = 0x313;
-pub const ABMON_7: ::nl_item = 0x314;
-pub const ABMON_8: ::nl_item = 0x315;
-pub const ABMON_9: ::nl_item = 0x316;
-pub const ABMON_10: ::nl_item = 0x317;
-pub const ABMON_11: ::nl_item = 0x318;
-pub const ABMON_12: ::nl_item = 0x319;
-
-pub const MON_1: ::nl_item = 0x31A;
-pub const MON_2: ::nl_item = 0x31B;
-pub const MON_3: ::nl_item = 0x31C;
-pub const MON_4: ::nl_item = 0x31D;
-pub const MON_5: ::nl_item = 0x31E;
-pub const MON_6: ::nl_item = 0x31F;
-pub const MON_7: ::nl_item = 0x320;
-pub const MON_8: ::nl_item = 0x321;
-pub const MON_9: ::nl_item = 0x322;
-pub const MON_10: ::nl_item = 0x323;
-pub const MON_11: ::nl_item = 0x324;
-pub const MON_12: ::nl_item = 0x325;
-
-pub const AM_STR: ::nl_item = 0x326;
-pub const PM_STR: ::nl_item = 0x327;
-
-pub const D_T_FMT: ::nl_item = 0x328;
-pub const D_FMT: ::nl_item = 0x329;
-pub const T_FMT: ::nl_item = 0x32A;
-pub const T_FMT_AMPM: ::nl_item = 0x32B;
-
-pub const ERA: ::nl_item = 0x32C;
-pub const ERA_D_FMT: ::nl_item = 0x32E;
-pub const ALT_DIGITS: ::nl_item = 0x32F;
-pub const ERA_D_T_FMT: ::nl_item = 0x330;
-pub const ERA_T_FMT: ::nl_item = 0x331;
-
-pub const CODESET: ::nl_item = 10;
-
-pub const CRNCYSTR: ::nl_item = 0x215;
-
-pub const RADIXCHAR: ::nl_item = 0x100;
-pub const THOUSEP: ::nl_item = 0x101;
-
-pub const NOEXPR: ::nl_item = 0x501;
-pub const YESSTR: ::nl_item = 0x502;
-pub const NOSTR: ::nl_item = 0x503;
-
-pub const FILENAME_MAX: ::c_uint = 4095;
-
-pub const AF_MAX: ::c_int = 39;
-
diff --git a/src/unix/uclibc/mips/mips32.rs b/src/unix/uclibc/mips/mips32.rs
new file mode 100644
index 0000000..a377322
--- /dev/null
+++ b/src/unix/uclibc/mips/mips32.rs
@@ -0,0 +1,286 @@
+pub type c_char = i8;
+pub type c_long = i32;
+pub type c_ulong = u32;
+pub type clock_t = i32;
+pub type time_t = i32;
+pub type suseconds_t = i32;
+pub type wchar_t = i32;
+pub type off_t = i32;
+pub type ino_t = u32;
+pub type blkcnt_t = i32;
+pub type blksize_t = i32;
+pub type nlink_t = u32;
+pub type fsblkcnt_t = ::c_ulong;
+pub type fsfilcnt_t = ::c_ulong;
+pub type rlim_t = c_ulong;
+
+s! {
+    pub struct aiocb {
+        pub aio_fildes: ::c_int,
+        pub aio_lio_opcode: ::c_int,
+        pub aio_reqprio: ::c_int,
+        pub aio_buf: *mut ::c_void,
+        pub aio_nbytes: ::size_t,
+        pub aio_sigevent: ::sigevent,
+        __next_prio: *mut aiocb,
+        __abs_prio: ::c_int,
+        __policy: ::c_int,
+        __error_code: ::c_int,
+        __return_value: ::ssize_t,
+        pub aio_offset: off_t,
+        __unused1: [::c_char; 4],
+        __glibc_reserved: [::c_char; 32]
+    }
+
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        st_pad1: [::c_long; 2],
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        pub st_pad2: [::c_long; 1],
+        pub st_size: ::off_t,
+        st_pad3: ::c_long,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        st_pad5: [::c_long; 14],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        st_pad1: [::c_long; 2],
+        pub st_ino: ::ino64_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        st_pad2: [::c_long; 2],
+        pub st_size: ::off64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        st_pad3: ::c_long,
+        pub st_blocks: ::blkcnt64_t,
+        st_pad5: [::c_long; 14],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u32; 9]
+    }
+
+    pub struct sigaction {
+        pub sa_flags: ::c_uint,
+        pub sa_sigaction: ::sighandler_t,
+        pub sa_mask: sigset_t,
+        _restorer: *mut ::c_void,
+    }
+
+    pub struct stack_t {
+        pub ss_sp: *mut ::c_void,
+        pub ss_size: ::size_t,
+        pub ss_flags: ::c_int,
+    }
+
+    pub struct sigset_t {
+        __val: [::c_ulong; 4],
+    }
+
+    pub struct siginfo_t {
+        pub si_signo: ::c_int,
+        pub si_code: ::c_int,
+        pub si_errno: ::c_int,
+        pub _pad: [::c_int; 29],
+    }
+
+    pub struct glob64_t {
+        pub gl_pathc: ::size_t,
+        pub gl_pathv: *mut *mut ::c_char,
+        pub gl_offs: ::size_t,
+        pub gl_flags: ::c_int,
+
+        __unused1: *mut ::c_void,
+        __unused2: *mut ::c_void,
+        __unused3: *mut ::c_void,
+        __unused4: *mut ::c_void,
+        __unused5: *mut ::c_void,
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_uint,
+        pub __seq: ::c_ushort,
+        __pad1: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        #[cfg(target_endian = "big")]
+        __glibc_reserved1: ::c_ulong,
+        pub msg_stime: ::time_t,
+        #[cfg(target_endian = "little")]
+        __glibc_reserved1: ::c_ulong,
+        #[cfg(target_endian = "big")]
+        __glibc_reserved2: ::c_ulong,
+        pub msg_rtime: ::time_t,
+        #[cfg(target_endian = "little")]
+        __glibc_reserved2: ::c_ulong,
+        #[cfg(target_endian = "big")]
+        __glibc_reserved3: ::c_ulong,
+        pub msg_ctime: ::time_t,
+        #[cfg(target_endian = "little")]
+        __glibc_reserved3: ::c_ulong,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+
+    pub struct statfs {
+        pub f_type: ::c_long,
+        pub f_bsize: ::c_long,
+        pub f_frsize: ::c_long,
+        pub f_blocks: ::fsblkcnt_t,
+        pub f_bfree: ::fsblkcnt_t,
+        pub f_files: ::fsblkcnt_t,
+        pub f_ffree: ::fsblkcnt_t,
+        pub f_bavail: ::fsblkcnt_t,
+        pub f_fsid: ::fsid_t,
+
+        pub f_namelen: ::c_long,
+        f_spare: [::c_long; 6],
+    }
+
+    pub struct msghdr {
+        pub msg_name: *mut ::c_void,
+        pub msg_namelen: ::socklen_t,
+        pub msg_iov: *mut ::iovec,
+        pub msg_iovlen: ::c_int,
+        pub msg_control: *mut ::c_void,
+        pub msg_controllen: ::size_t,
+        pub msg_flags: ::c_int,
+    }
+
+    pub struct cmsghdr {
+        pub cmsg_len: ::size_t,
+        pub cmsg_level: ::c_int,
+        pub cmsg_type: ::c_int,
+    }
+
+    pub struct termios {
+        pub c_iflag: ::tcflag_t,
+        pub c_oflag: ::tcflag_t,
+        pub c_cflag: ::tcflag_t,
+        pub c_lflag: ::tcflag_t,
+        pub c_line: ::cc_t,
+        pub c_cc: [::cc_t; ::NCCS],
+    }
+
+    pub struct flock {
+        pub l_type: ::c_short,
+        pub l_whence: ::c_short,
+        pub l_start: ::off_t,
+        pub l_len: ::off_t,
+        pub l_sysid: ::c_long,
+        pub l_pid: ::pid_t,
+        pad: [::c_long; 4],
+    }
+
+    pub struct sysinfo {
+        pub uptime: ::c_long,
+        pub loads: [::c_ulong; 3],
+        pub totalram: ::c_ulong,
+        pub freeram: ::c_ulong,
+        pub sharedram: ::c_ulong,
+        pub bufferram: ::c_ulong,
+        pub totalswap: ::c_ulong,
+        pub freeswap: ::c_ulong,
+        pub procs: ::c_ushort,
+        pub pad: ::c_ushort,
+        pub totalhigh: ::c_ulong,
+        pub freehigh: ::c_ulong,
+        pub mem_unit: ::c_uint,
+        pub _f: [::c_char; 8],
+    }
+
+    // FIXME this is actually a union
+    pub struct sem_t {
+        #[cfg(target_pointer_width = "32")]
+        __size: [::c_char; 16],
+        #[cfg(target_pointer_width = "64")]
+        __size: [::c_char; 32],
+        __align: [::c_long; 0],
+    }
+}
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const RLIM_INFINITY: ::rlim_t = 0x7fffffff;
+
+pub const SYS_gettid: ::c_long = 4222;   // Valid for O32
+
+#[link(name = "util")]
+extern {
+    pub fn sysctl(name: *mut ::c_int,
+                  namelen: ::c_int,
+                  oldp: *mut ::c_void,
+                  oldlenp: *mut ::size_t,
+                  newp: *mut ::c_void,
+                  newlen: ::size_t)
+                  -> ::c_int;
+    pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
+    pub fn backtrace(buf: *mut *mut ::c_void,
+                     sz: ::c_int) -> ::c_int;
+    pub fn glob64(pattern: *const ::c_char,
+                  flags: ::c_int,
+                  errfunc: ::dox::Option<extern fn(epath: *const ::c_char,
+                                                   errno: ::c_int)
+                                                   -> ::c_int>,
+                  pglob: *mut glob64_t) -> ::c_int;
+    pub fn globfree64(pglob: *mut glob64_t);
+    pub fn ptrace(request: ::c_uint, ...) -> ::c_long;
+    pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *mut ::cpu_set_t) -> ::c_int;
+    pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *const ::cpu_set_t) -> ::c_int;
+}
diff --git a/src/unix/uclibc/mips/mips64.rs b/src/unix/uclibc/mips/mips64.rs
new file mode 100644
index 0000000..9478599
--- /dev/null
+++ b/src/unix/uclibc/mips/mips64.rs
@@ -0,0 +1,225 @@
+pub type blkcnt_t = i64;
+pub type blksize_t = i64;
+pub type c_char = i8;
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type fsblkcnt_t = ::c_ulong;
+pub type fsfilcnt_t = ::c_ulong;
+pub type ino_t = u64;
+pub type nlink_t = u64;
+pub type off_t = i64;
+pub type rlim_t = ::c_ulong;
+pub type suseconds_t = i64;
+pub type time_t = i64;
+pub type wchar_t = i32;
+
+s! {
+    pub struct aiocb {
+        pub aio_fildes: ::c_int,
+        pub aio_lio_opcode: ::c_int,
+        pub aio_reqprio: ::c_int,
+        pub aio_buf: *mut ::c_void,
+        pub aio_nbytes: ::size_t,
+        pub aio_sigevent: ::sigevent,
+        __next_prio: *mut aiocb,
+        __abs_prio: ::c_int,
+        __policy: ::c_int,
+        __error_code: ::c_int,
+        __return_value: ::ssize_t,
+        pub aio_offset: off_t,
+        __glibc_reserved: [::c_char; 32]
+    }
+
+    pub struct stat {
+        pub st_dev: ::c_ulong,
+        st_pad1: [::c_long; 2],
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::c_ulong,
+        st_pad2: [::c_ulong; 1],
+        pub st_size: ::off_t,
+        st_pad3: ::c_long,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        st_pad4: ::c_long,
+        pub st_blocks: ::blkcnt_t,
+        st_pad5: [::c_long; 7],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::c_ulong,
+        st_pad1: [::c_long; 2],
+        pub st_ino: ::ino64_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::c_ulong,
+        st_pad2: [::c_long; 2],
+        pub st_size: ::off64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        st_pad3: ::c_long,
+        pub st_blocks: ::blkcnt64_t,
+        st_pad5: [::c_long; 7],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [::c_ulong; 7]
+    }
+
+    pub struct sigaction {
+        pub sa_flags: ::c_int,
+        pub sa_sigaction: ::sighandler_t,
+        pub sa_mask: sigset_t,
+        _restorer: *mut ::c_void,
+    }
+
+    pub struct stack_t {
+        pub ss_sp: *mut ::c_void,
+        pub ss_size: ::size_t,
+        pub ss_flags: ::c_int,
+    }
+
+    pub struct sigset_t {
+        __size: [::c_ulong; 16],
+    }
+
+    pub struct siginfo_t {
+        pub si_signo: ::c_int,
+        pub si_code: ::c_int,
+        pub si_errno: ::c_int,
+        _pad: ::c_int,
+        _pad2: [::c_long; 14],
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_uint,
+        pub __seq: ::c_ushort,
+        __pad1: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        pub msg_stime: ::time_t,
+        pub msg_rtime: ::time_t,
+        pub msg_ctime: ::time_t,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+
+    pub struct statfs {
+        pub f_type: ::c_long,
+        pub f_bsize: ::c_long,
+        pub f_frsize: ::c_long,
+        pub f_blocks: ::fsblkcnt_t,
+        pub f_bfree: ::fsblkcnt_t,
+        pub f_files: ::fsblkcnt_t,
+        pub f_ffree: ::fsblkcnt_t,
+        pub f_bavail: ::fsblkcnt_t,
+        pub f_fsid: ::fsid_t,
+
+        pub f_namelen: ::c_long,
+        f_spare: [::c_long; 6],
+    }
+
+    pub struct msghdr {
+        pub msg_name: *mut ::c_void,
+        pub msg_namelen: ::socklen_t,
+        pub msg_iov: *mut ::iovec,
+        pub msg_iovlen: ::size_t,
+        pub msg_control: *mut ::c_void,
+        pub msg_controllen: ::size_t,
+        pub msg_flags: ::c_int,
+    }
+
+    pub struct cmsghdr {
+        pub cmsg_len: ::size_t,
+        pub cmsg_level: ::c_int,
+        pub cmsg_type: ::c_int,
+    }
+
+    pub struct termios {
+        pub c_iflag: ::tcflag_t,
+        pub c_oflag: ::tcflag_t,
+        pub c_cflag: ::tcflag_t,
+        pub c_lflag: ::tcflag_t,
+        pub c_line: ::cc_t,
+        pub c_cc: [::cc_t; ::NCCS],
+    }
+
+    pub struct sysinfo {
+        pub uptime: ::c_long,
+        pub loads: [::c_ulong; 3],
+        pub totalram: ::c_ulong,
+        pub freeram: ::c_ulong,
+        pub sharedram: ::c_ulong,
+        pub bufferram: ::c_ulong,
+        pub totalswap: ::c_ulong,
+        pub freeswap: ::c_ulong,
+        pub procs: ::c_ushort,
+        pub pad: ::c_ushort,
+        pub totalhigh: ::c_ulong,
+        pub freehigh: ::c_ulong,
+        pub mem_unit: ::c_uint,
+        pub _f: [::c_char; 0],
+    }
+
+    // FIXME this is actually a union
+    pub struct sem_t {
+        __size: [::c_char; 32],
+        __align: [::c_long; 0],
+    }
+}
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+
+pub const RLIM_INFINITY: ::rlim_t = 0xffff_ffff_ffff_ffff;
+
+pub const SYS_gettid: ::c_long = 5178;   // Valid for n64
+
+#[link(name = "util")]
+extern {
+    pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
+}
diff --git a/src/unix/uclibc/mips/mod.rs b/src/unix/uclibc/mips/mod.rs
new file mode 100644
index 0000000..1429415
--- /dev/null
+++ b/src/unix/uclibc/mips/mod.rs
@@ -0,0 +1,503 @@
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const BUFSIZ: ::c_uint = 4096;
+pub const TMP_MAX: ::c_uint = 238328;
+pub const FOPEN_MAX: ::c_uint = 16;
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+pub const POSIX_MADV_DONTNEED: ::c_int = 4;
+pub const _SC_2_C_VERSION: ::c_int = 96;
+pub const O_ACCMODE: ::c_int = 3;
+pub const O_DIRECT: ::c_int = 0x8000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+pub const ST_RELATIME: ::c_ulong = 4096;
+pub const NI_MAXHOST: ::socklen_t = 1025;
+
+pub const RLIMIT_NOFILE: ::c_int = 5;
+pub const RLIMIT_AS: ::c_int = 6;
+pub const RLIMIT_RSS: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 8;
+pub const RLIMIT_MEMLOCK: ::c_int = 9;
+pub const RLIMIT_NLIMITS: ::c_int = 15;
+
+pub const O_APPEND: ::c_int = 8;
+pub const O_CREAT: ::c_int = 256;
+pub const O_EXCL: ::c_int = 1024;
+pub const O_NOCTTY: ::c_int = 2048;
+pub const O_NONBLOCK: ::c_int = 128;
+pub const O_SYNC: ::c_int = 0x10;
+pub const O_RSYNC: ::c_int = 0x10;
+pub const O_DSYNC: ::c_int = 0x10;
+pub const O_FSYNC: ::c_int = 0x10;
+pub const O_ASYNC: ::c_int = 0x1000;
+pub const O_NDELAY: ::c_int = 0x80;
+
+pub const SOCK_NONBLOCK: ::c_int = 128;
+
+pub const EDEADLK: ::c_int = 45;
+pub const ENAMETOOLONG: ::c_int = 78;
+pub const ENOLCK: ::c_int = 46;
+pub const ENOSYS: ::c_int = 89;
+pub const ENOTEMPTY: ::c_int = 93;
+pub const ELOOP: ::c_int = 90;
+pub const ENOMSG: ::c_int = 35;
+pub const EIDRM: ::c_int = 36;
+pub const ECHRNG: ::c_int = 37;
+pub const EL2NSYNC: ::c_int = 38;
+pub const EL3HLT: ::c_int = 39;
+pub const EL3RST: ::c_int = 40;
+pub const ELNRNG: ::c_int = 41;
+pub const EUNATCH: ::c_int = 42;
+pub const ENOCSI: ::c_int = 43;
+pub const EL2HLT: ::c_int = 44;
+pub const EBADE: ::c_int = 50;
+pub const EBADR: ::c_int = 51;
+pub const EXFULL: ::c_int = 52;
+pub const ENOANO: ::c_int = 53;
+pub const EBADRQC: ::c_int = 54;
+pub const EBADSLT: ::c_int = 55;
+pub const EDEADLOCK: ::c_int = 56;
+pub const EMULTIHOP: ::c_int = 74;
+pub const EOVERFLOW: ::c_int = 79;
+pub const ENOTUNIQ: ::c_int = 80;
+pub const EBADFD: ::c_int = 81;
+pub const EBADMSG: ::c_int = 77;
+pub const EREMCHG: ::c_int = 82;
+pub const ELIBACC: ::c_int = 83;
+pub const ELIBBAD: ::c_int = 84;
+pub const ELIBSCN: ::c_int = 85;
+pub const ELIBMAX: ::c_int = 86;
+pub const ELIBEXEC: ::c_int = 87;
+pub const EILSEQ: ::c_int = 88;
+pub const ERESTART: ::c_int = 91;
+pub const ESTRPIPE: ::c_int = 92;
+pub const EUSERS: ::c_int = 94;
+pub const ENOTSOCK: ::c_int = 95;
+pub const EDESTADDRREQ: ::c_int = 96;
+pub const EMSGSIZE: ::c_int = 97;
+pub const EPROTOTYPE: ::c_int = 98;
+pub const ENOPROTOOPT: ::c_int = 99;
+pub const EPROTONOSUPPORT: ::c_int = 120;
+pub const ESOCKTNOSUPPORT: ::c_int = 121;
+pub const EOPNOTSUPP: ::c_int = 122;
+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
+pub const EPFNOSUPPORT: ::c_int = 123;
+pub const EAFNOSUPPORT: ::c_int = 124;
+pub const EADDRINUSE: ::c_int = 125;
+pub const EADDRNOTAVAIL: ::c_int = 126;
+pub const ENETDOWN: ::c_int = 127;
+pub const ENETUNREACH: ::c_int = 128;
+pub const ENETRESET: ::c_int = 129;
+pub const ECONNABORTED: ::c_int = 130;
+pub const ECONNRESET: ::c_int = 131;
+pub const ENOBUFS: ::c_int = 132;
+pub const EISCONN: ::c_int = 133;
+pub const ENOTCONN: ::c_int = 134;
+pub const ESHUTDOWN: ::c_int = 143;
+pub const ETOOMANYREFS: ::c_int = 144;
+pub const ETIMEDOUT: ::c_int = 145;
+pub const ECONNREFUSED: ::c_int = 146;
+pub const EHOSTDOWN: ::c_int = 147;
+pub const EHOSTUNREACH: ::c_int = 148;
+pub const EALREADY: ::c_int = 149;
+pub const EINPROGRESS: ::c_int = 150;
+pub const ESTALE: ::c_int = 151;
+pub const EUCLEAN: ::c_int = 135;
+pub const ENOTNAM: ::c_int = 137;
+pub const ENAVAIL: ::c_int = 138;
+pub const EISNAM: ::c_int = 139;
+pub const EREMOTEIO: ::c_int = 140;
+pub const EDQUOT: ::c_int = 1133;
+pub const ENOMEDIUM: ::c_int = 159;
+pub const EMEDIUMTYPE: ::c_int = 160;
+pub const ECANCELED: ::c_int = 158;
+pub const ENOKEY: ::c_int = 161;
+pub const EKEYEXPIRED: ::c_int = 162;
+pub const EKEYREVOKED: ::c_int = 163;
+pub const EKEYREJECTED: ::c_int = 164;
+pub const EOWNERDEAD: ::c_int = 165;
+pub const ENOTRECOVERABLE: ::c_int = 166;
+pub const ERFKILL: ::c_int = 167;
+
+pub const LC_PAPER: ::c_int = 7;
+pub const LC_NAME: ::c_int = 8;
+pub const LC_ADDRESS: ::c_int = 9;
+pub const LC_TELEPHONE: ::c_int = 10;
+pub const LC_MEASUREMENT: ::c_int = 11;
+pub const LC_IDENTIFICATION: ::c_int = 12;
+pub const LC_PAPER_MASK: ::c_int = (1 << LC_PAPER);
+pub const LC_NAME_MASK: ::c_int = (1 << LC_NAME);
+pub const LC_ADDRESS_MASK: ::c_int = (1 << LC_ADDRESS);
+pub const LC_TELEPHONE_MASK: ::c_int = (1 << LC_TELEPHONE);
+pub const LC_MEASUREMENT_MASK: ::c_int = (1 << LC_MEASUREMENT);
+pub const LC_IDENTIFICATION_MASK: ::c_int = (1 << LC_IDENTIFICATION);
+pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
+                               | ::LC_NUMERIC_MASK
+                               | ::LC_TIME_MASK
+                               | ::LC_COLLATE_MASK
+                               | ::LC_MONETARY_MASK
+                               | ::LC_MESSAGES_MASK
+                               | LC_PAPER_MASK
+                               | LC_NAME_MASK
+                               | LC_ADDRESS_MASK
+                               | LC_TELEPHONE_MASK
+                               | LC_MEASUREMENT_MASK
+                               | LC_IDENTIFICATION_MASK;
+
+pub const MAP_NORESERVE: ::c_int = 0x400;
+pub const MAP_ANON: ::c_int = 0x800;
+pub const MAP_ANONYMOUS: ::c_int = 0x800;
+pub const MAP_GROWSDOWN: ::c_int = 0x1000;
+pub const MAP_DENYWRITE: ::c_int = 0x2000;
+pub const MAP_EXECUTABLE: ::c_int = 0x4000;
+pub const MAP_LOCKED: ::c_int = 0x8000;
+pub const MAP_POPULATE: ::c_int = 0x10000;
+pub const MAP_NONBLOCK: ::c_int = 0x20000;
+pub const MAP_STACK: ::c_int = 0x40000;
+
+pub const SOCK_STREAM: ::c_int = 2;
+pub const SOCK_DGRAM: ::c_int = 1;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+
+pub const SOL_SOCKET: ::c_int = 0xffff;
+
+pub const SO_REUSEADDR: ::c_int = 0x0004;
+pub const SO_KEEPALIVE: ::c_int = 0x0008;
+pub const SO_DONTROUTE: ::c_int = 0x0010;
+pub const SO_BROADCAST: ::c_int = 0x0020;
+pub const SO_LINGER: ::c_int = 0x0080;
+pub const SO_OOBINLINE: ::c_int = 0x0100;
+pub const SO_REUSEPORT: ::c_int = 0x0200;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_STYLE: ::c_int = SO_TYPE;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
+pub const SO_SNDLOWAT: ::c_int = 0x1003;
+pub const SO_RCVLOWAT: ::c_int = 0x1004;
+pub const SO_SNDTIMEO: ::c_int = 0x1005;
+pub const SO_RCVTIMEO: ::c_int = 0x1006;
+pub const SO_ACCEPTCONN: ::c_int = 0x1009;
+pub const SO_PROTOCOL: ::c_int = 0x1028;
+pub const SO_DOMAIN: ::c_int = 0x1029;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_PASSCRED: ::c_int = 17;
+pub const SO_PEERCRED: ::c_int = 18;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_BINDTODEVICE: ::c_int = 25;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_TIMESTAMP: ::c_int = 29;
+pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
+pub const SO_PEERSEC: ::c_int = 30;
+pub const SO_SNDBUFFORCE: ::c_int = 31;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+pub const SO_MARK: ::c_int = 36;
+pub const SO_TIMESTAMPING: ::c_int = 37;
+pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
+pub const SO_RXQ_OVFL: ::c_int = 40;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_PEEK_OFF: ::c_int = 42;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_BUSY_POLL: ::c_int = 46;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+
+pub const FIOCLEX: ::c_ulong = 0x6601;
+pub const FIONBIO: ::c_ulong = 0x667e;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000008;
+pub const SA_NOCLDWAIT: ::c_int = 0x00010000;
+
+pub const SIGCHLD: ::c_int = 18;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGTTIN: ::c_int = 26;
+pub const SIGTTOU: ::c_int = 27;
+pub const SIGXCPU: ::c_int = 30;
+pub const SIGXFSZ: ::c_int = 31;
+pub const SIGVTALRM: ::c_int = 28;
+pub const SIGPROF: ::c_int = 29;
+pub const SIGWINCH: ::c_int = 20;
+pub const SIGUSR1: ::c_int = 16;
+pub const SIGUSR2: ::c_int = 17;
+pub const SIGCONT: ::c_int = 25;
+pub const SIGSTOP: ::c_int = 23;
+pub const SIGTSTP: ::c_int = 24;
+pub const SIGURG: ::c_int = 21;
+pub const SIGIO: ::c_int = 22;
+pub const SIGSYS: ::c_int = 12;
+pub const SIGPOLL: ::c_int = 22;
+pub const SIGPWR: ::c_int = 19;
+pub const SIG_SETMASK: ::c_int = 3;
+pub const SIG_BLOCK: ::c_int = 0x1;
+pub const SIG_UNBLOCK: ::c_int = 0x2;
+
+pub const POLLRDNORM: ::c_short = 0x040;
+pub const POLLWRNORM: ::c_short = 0x004;
+pub const POLLRDBAND: ::c_short = 0x080;
+pub const POLLWRBAND: ::c_short = 0x100;
+
+pub const PTHREAD_STACK_MIN: ::size_t = 16384;
+
+pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5;
+pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff;
+pub const CODA_SUPER_MAGIC: ::c_long = 0x73757245;
+pub const CRAMFS_MAGIC: ::c_long = 0x28cd3d45;
+pub const EFS_SUPER_MAGIC: ::c_long = 0x00414a53;
+pub const EXT2_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const EXT3_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const EXT4_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const HPFS_SUPER_MAGIC: ::c_long = 0xf995e849;
+pub const HUGETLBFS_MAGIC: ::c_long = 0x958458f6;
+pub const ISOFS_SUPER_MAGIC: ::c_long = 0x00009660;
+pub const JFFS2_SUPER_MAGIC: ::c_long = 0x000072b6;
+pub const MINIX_SUPER_MAGIC: ::c_long = 0x0000137f;
+pub const MINIX_SUPER_MAGIC2: ::c_long = 0x0000138f;
+pub const MINIX2_SUPER_MAGIC: ::c_long = 0x00002468;
+pub const MINIX2_SUPER_MAGIC2: ::c_long = 0x00002478;
+pub const MSDOS_SUPER_MAGIC: ::c_long = 0x00004d44;
+pub const NCP_SUPER_MAGIC: ::c_long = 0x0000564c;
+pub const NFS_SUPER_MAGIC: ::c_long = 0x00006969;
+pub const OPENPROM_SUPER_MAGIC: ::c_long = 0x00009fa1;
+pub const PROC_SUPER_MAGIC: ::c_long = 0x00009fa0;
+pub const QNX4_SUPER_MAGIC: ::c_long = 0x0000002f;
+pub const REISERFS_SUPER_MAGIC: ::c_long = 0x52654973;
+pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b;
+pub const TMPFS_MAGIC: ::c_long = 0x01021994;
+pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
+
+pub const VEOF: usize = 16;
+pub const VEOL: usize = 17;
+pub const VEOL2: usize = 6;
+pub const VMIN: usize = 4;
+pub const IEXTEN: ::tcflag_t = 0x00000100;
+pub const TOSTOP: ::tcflag_t = 0x00008000;
+pub const FLUSHO: ::tcflag_t = 0x00002000;
+pub const IUTF8: ::tcflag_t = 0x00004000;
+pub const TCSANOW: ::c_int = 0x540e;
+pub const TCSADRAIN: ::c_int = 0x540f;
+pub const TCSAFLUSH: ::c_int = 0x5410;
+
+pub const CPU_SETSIZE: ::c_int = 0x400;
+
+pub const PTRACE_TRACEME: ::c_uint = 0;
+pub const PTRACE_PEEKTEXT: ::c_uint = 1;
+pub const PTRACE_PEEKDATA: ::c_uint = 2;
+pub const PTRACE_PEEKUSER: ::c_uint = 3;
+pub const PTRACE_POKETEXT: ::c_uint = 4;
+pub const PTRACE_POKEDATA: ::c_uint = 5;
+pub const PTRACE_POKEUSER: ::c_uint = 6;
+pub const PTRACE_CONT: ::c_uint = 7;
+pub const PTRACE_KILL: ::c_uint = 8;
+pub const PTRACE_SINGLESTEP: ::c_uint = 9;
+pub const PTRACE_ATTACH: ::c_uint = 16;
+pub const PTRACE_DETACH: ::c_uint = 17;
+pub const PTRACE_SYSCALL: ::c_uint = 24;
+pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200;
+pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201;
+pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202;
+pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203;
+pub const PTRACE_GETFPREGS: ::c_uint = 14;
+pub const PTRACE_SETFPREGS: ::c_uint = 15;
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+pub const PTRACE_GETREGS: ::c_uint = 12;
+pub const PTRACE_SETREGS: ::c_uint = 13;
+
+pub const MAP_HUGETLB: ::c_int = 0x080000;
+
+pub const EFD_NONBLOCK: ::c_int = 0x80;
+
+pub const F_GETLK: ::c_int = 14;
+pub const F_GETOWN: ::c_int = 23;
+pub const F_SETOWN: ::c_int = 24;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x80;
+
+pub const TCGETS: ::c_ulong = 0x540d;
+pub const TCSETS: ::c_ulong = 0x540e;
+pub const TCSETSW: ::c_ulong = 0x540f;
+pub const TCSETSF: ::c_ulong = 0x5410;
+pub const TCGETA: ::c_ulong = 0x5401;
+pub const TCSETA: ::c_ulong = 0x5402;
+pub const TCSETAW: ::c_ulong = 0x5403;
+pub const TCSETAF: ::c_ulong = 0x5404;
+pub const TCSBRK: ::c_ulong = 0x5405;
+pub const TCXONC: ::c_ulong = 0x5406;
+pub const TCFLSH: ::c_ulong = 0x5407;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5481;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x5482;
+pub const TIOCINQ: ::c_ulong = 0x467f;
+pub const TIOCLINUX: ::c_ulong = 0x5483;
+pub const TIOCGSERIAL: ::c_ulong = 0x5484;
+pub const TIOCEXCL: ::c_ulong = 0x740d;
+pub const TIOCNXCL: ::c_ulong = 0x740e;
+pub const TIOCSCTTY: ::c_ulong = 0x5480;
+pub const TIOCGPGRP: ::c_ulong = 0x40047477;
+pub const TIOCSPGRP: ::c_ulong = 0x80047476;
+pub const TIOCOUTQ: ::c_ulong = 0x7472;
+pub const TIOCSTI: ::c_ulong = 0x5472;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const TIOCMGET: ::c_ulong = 0x741d;
+pub const TIOCMBIS: ::c_ulong = 0x741b;
+pub const TIOCMBIC: ::c_ulong = 0x741c;
+pub const TIOCMSET: ::c_ulong = 0x741a;
+pub const FIONREAD: ::c_ulong = 0x467f;
+pub const TIOCCONS: ::c_ulong = 0x80047478;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x10;
+pub const RTLD_GLOBAL: ::c_int = 0x4;
+pub const RTLD_NOLOAD: ::c_int = 0x8;
+
+pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
+pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
+
+pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
+pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
+pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
+pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
+pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
+pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
+pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::c_int = 0x00000800;
+pub const TAB2: ::c_int = 0x00001000;
+pub const TAB3: ::c_int = 0x00001800;
+pub const CR1: ::c_int  = 0x00000200;
+pub const CR2: ::c_int  = 0x00000400;
+pub const CR3: ::c_int  = 0x00000600;
+pub const FF1: ::c_int  = 0x00008000;
+pub const BS1: ::c_int  = 0x00002000;
+pub const VT1: ::c_int  = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+cfg_if! {
+    if #[cfg(target_arch = "mips")] {
+        mod mips32;
+        pub use self::mips32::*;
+    } else if #[cfg(target_arch = "mips64")] {
+        mod mips64;
+        pub use self::mips64::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/uclibc/mod.rs b/src/unix/uclibc/mod.rs
new file mode 100644
index 0000000..8e092e2
--- /dev/null
+++ b/src/unix/uclibc/mod.rs
@@ -0,0 +1,1780 @@
+use dox::{mem, Option};
+
+pub type sa_family_t = u16;
+pub type pthread_key_t = ::c_uint;
+pub type speed_t = ::c_uint;
+pub type tcflag_t = ::c_uint;
+pub type loff_t = ::c_longlong;
+pub type clockid_t = ::c_int;
+pub type key_t = ::c_int;
+pub type id_t = ::c_uint;
+
+pub enum timezone {}
+
+s! {
+    pub struct sockaddr {
+        pub sa_family: sa_family_t,
+        pub sa_data: [::c_char; 14],
+    }
+
+    pub struct sockaddr_in {
+        pub sin_family: sa_family_t,
+        pub sin_port: ::in_port_t,
+        pub sin_addr: ::in_addr,
+        pub sin_zero: [u8; 8],
+    }
+
+    pub struct sockaddr_in6 {
+        pub sin6_family: sa_family_t,
+        pub sin6_port: ::in_port_t,
+        pub sin6_flowinfo: u32,
+        pub sin6_addr: ::in6_addr,
+        pub sin6_scope_id: u32,
+    }
+
+    pub struct sockaddr_un {
+        pub sun_family: sa_family_t,
+        pub sun_path: [::c_char; 108]
+    }
+
+    pub struct sockaddr_storage {
+        pub ss_family: sa_family_t,
+        __ss_align: ::size_t,
+        #[cfg(target_pointer_width = "32")]
+        __ss_pad2: [u8; 128 - 2 * 4],
+        #[cfg(target_pointer_width = "64")]
+        __ss_pad2: [u8; 128 - 2 * 8],
+    }
+
+    pub struct addrinfo {
+        pub ai_flags: ::c_int,
+        pub ai_family: ::c_int,
+        pub ai_socktype: ::c_int,
+        pub ai_protocol: ::c_int,
+        pub ai_addrlen: socklen_t,
+
+        pub ai_addr: *mut ::sockaddr,
+
+        pub ai_canonname: *mut c_char,
+
+        pub ai_next: *mut addrinfo,
+    }
+
+    pub struct sockaddr_nl {
+        pub nl_family: ::sa_family_t,
+        nl_pad: ::c_ushort,
+        pub nl_pid: u32,
+        pub nl_groups: u32
+    }
+
+    pub struct sockaddr_ll {
+        pub sll_family: ::c_ushort,
+        pub sll_protocol: ::c_ushort,
+        pub sll_ifindex: ::c_int,
+        pub sll_hatype: ::c_ushort,
+        pub sll_pkttype: ::c_uchar,
+        pub sll_halen: ::c_uchar,
+        pub sll_addr: [::c_uchar; 8]
+    }
+
+    pub struct fd_set {
+        fds_bits: [::c_ulong; FD_SETSIZE / ULONG_SIZE],
+    }
+
+    pub struct tm {
+        pub tm_sec: ::c_int,
+        pub tm_min: ::c_int,
+        pub tm_hour: ::c_int,
+        pub tm_mday: ::c_int,
+        pub tm_mon: ::c_int,
+        pub tm_year: ::c_int,
+        pub tm_wday: ::c_int,
+        pub tm_yday: ::c_int,
+        pub tm_isdst: ::c_int,
+        pub tm_gmtoff: ::c_long,
+        pub tm_zone: *const ::c_char,
+    }
+
+    pub struct sched_param {
+        pub sched_priority: ::c_int,
+    }
+
+    pub struct Dl_info {
+        pub dli_fname: *const ::c_char,
+        pub dli_fbase: *mut ::c_void,
+        pub dli_sname: *const ::c_char,
+        pub dli_saddr: *mut ::c_void,
+    }
+
+    #[cfg_attr(any(all(target_arch = "x86",
+                   target_arch = "x86_64")),
+               repr(packed))]
+    pub struct epoll_event {
+        pub events: ::uint32_t,
+        pub u64: ::uint64_t,
+    }
+
+    pub struct utsname {
+        pub sysname: [::c_char; 65],
+        pub nodename: [::c_char; 65],
+        pub release: [::c_char; 65],
+        pub version: [::c_char; 65],
+        pub machine: [::c_char; 65],
+        pub domainname: [::c_char; 65]
+    }
+
+    pub struct lconv {
+        pub decimal_point: *mut ::c_char,
+        pub thousands_sep: *mut ::c_char,
+        pub grouping: *mut ::c_char,
+        pub int_curr_symbol: *mut ::c_char,
+        pub currency_symbol: *mut ::c_char,
+        pub mon_decimal_point: *mut ::c_char,
+        pub mon_thousands_sep: *mut ::c_char,
+        pub mon_grouping: *mut ::c_char,
+        pub positive_sign: *mut ::c_char,
+        pub negative_sign: *mut ::c_char,
+        pub int_frac_digits: ::c_char,
+        pub frac_digits: ::c_char,
+        pub p_cs_precedes: ::c_char,
+        pub p_sep_by_space: ::c_char,
+        pub n_cs_precedes: ::c_char,
+        pub n_sep_by_space: ::c_char,
+        pub p_sign_posn: ::c_char,
+        pub n_sign_posn: ::c_char,
+        pub int_p_cs_precedes: ::c_char,
+        pub int_p_sep_by_space: ::c_char,
+        pub int_n_cs_precedes: ::c_char,
+        pub int_n_sep_by_space: ::c_char,
+        pub int_p_sign_posn: ::c_char,
+        pub int_n_sign_posn: ::c_char,
+    }
+
+    pub struct sigevent {
+        pub sigev_value: ::sigval,
+        pub sigev_signo: ::c_int,
+        pub sigev_notify: ::c_int,
+        // Actually a union.  We only expose sigev_notify_thread_id because it's
+        // the most useful member
+        pub sigev_notify_thread_id: ::c_int,
+        #[cfg(target_pointer_width = "64")]
+        __unused1: [::c_int; 11],
+        #[cfg(target_pointer_width = "32")]
+        __unused1: [::c_int; 12]
+    }
+}
+
+// intentionally not public, only used for fd_set
+cfg_if! {
+    if #[cfg(target_pointer_width = "32")] {
+        const ULONG_SIZE: usize = 32;
+    } else if #[cfg(target_pointer_width = "64")] {
+        const ULONG_SIZE: usize = 64;
+    } else {
+        // Unknown target_pointer_width
+    }
+}
+
+pub const EXIT_FAILURE: ::c_int = 1;
+pub const EXIT_SUCCESS: ::c_int = 0;
+pub const RAND_MAX: ::c_int = 2147483647;
+pub const EOF: ::c_int = -1;
+pub const SEEK_SET: ::c_int = 0;
+pub const SEEK_CUR: ::c_int = 1;
+pub const SEEK_END: ::c_int = 2;
+pub const _IOFBF: ::c_int = 0;
+pub const _IONBF: ::c_int = 2;
+pub const _IOLBF: ::c_int = 1;
+
+pub const F_DUPFD: ::c_int = 0;
+pub const F_GETFD: ::c_int = 1;
+pub const F_SETFD: ::c_int = 2;
+pub const F_GETFL: ::c_int = 3;
+pub const F_SETFL: ::c_int = 4;
+
+// Linux-specific fcntls
+pub const F_SETLEASE: ::c_int = 1024;
+pub const F_GETLEASE: ::c_int = 1025;
+pub const F_NOTIFY: ::c_int = 1026;
+pub const F_DUPFD_CLOEXEC: ::c_int = 1030;
+
+// TODO(#235): Include file sealing fcntls once we have a way to verify them.
+
+pub const SIGTRAP: ::c_int = 5;
+
+pub const PTHREAD_CREATE_JOINABLE: ::c_int = 0;
+pub const PTHREAD_CREATE_DETACHED: ::c_int = 1;
+
+pub const CLOCK_REALTIME: clockid_t = 0;
+pub const CLOCK_MONOTONIC: clockid_t = 1;
+pub const CLOCK_PROCESS_CPUTIME_ID: clockid_t = 2;
+pub const CLOCK_THREAD_CPUTIME_ID: clockid_t = 3;
+// TODO(#247) Someday our Travis shall have glibc 2.21 (released in Sep
+// 2014.) See also musl/mod.rs
+// pub const CLOCK_SGI_CYCLE: clockid_t = 10;
+// pub const CLOCK_TAI: clockid_t = 11;
+pub const TIMER_ABSTIME: ::c_int = 1;
+
+pub const RLIMIT_CPU: ::c_int = 0;
+pub const RLIMIT_FSIZE: ::c_int = 1;
+pub const RLIMIT_DATA: ::c_int = 2;
+pub const RLIMIT_STACK: ::c_int = 3;
+pub const RLIMIT_CORE: ::c_int = 4;
+pub const RLIMIT_LOCKS: ::c_int = 10;
+pub const RLIMIT_SIGPENDING: ::c_int = 11;
+pub const RLIMIT_MSGQUEUE: ::c_int = 12;
+pub const RLIMIT_NICE: ::c_int = 13;
+pub const RLIMIT_RTPRIO: ::c_int = 14;
+
+pub const RUSAGE_SELF: ::c_int = 0;
+
+pub const O_RDONLY: ::c_int = 0;
+pub const O_WRONLY: ::c_int = 1;
+pub const O_RDWR: ::c_int = 2;
+
+pub const SOCK_CLOEXEC: ::c_int = O_CLOEXEC;
+
+pub const S_IFIFO: ::mode_t = 4096;
+pub const S_IFCHR: ::mode_t = 8192;
+pub const S_IFBLK: ::mode_t = 24576;
+pub const S_IFDIR: ::mode_t = 16384;
+pub const S_IFREG: ::mode_t = 32768;
+pub const S_IFLNK: ::mode_t = 40960;
+pub const S_IFSOCK: ::mode_t = 49152;
+pub const S_IFMT: ::mode_t = 61440;
+pub const S_IRWXU: ::mode_t = 448;
+pub const S_IXUSR: ::mode_t = 64;
+pub const S_IWUSR: ::mode_t = 128;
+pub const S_IRUSR: ::mode_t = 256;
+pub const S_IRWXG: ::mode_t = 56;
+pub const S_IXGRP: ::mode_t = 8;
+pub const S_IWGRP: ::mode_t = 16;
+pub const S_IRGRP: ::mode_t = 32;
+pub const S_IRWXO: ::mode_t = 7;
+pub const S_IXOTH: ::mode_t = 1;
+pub const S_IWOTH: ::mode_t = 2;
+pub const S_IROTH: ::mode_t = 4;
+pub const F_OK: ::c_int = 0;
+pub const R_OK: ::c_int = 4;
+pub const W_OK: ::c_int = 2;
+pub const X_OK: ::c_int = 1;
+pub const STDIN_FILENO: ::c_int = 0;
+pub const STDOUT_FILENO: ::c_int = 1;
+pub const STDERR_FILENO: ::c_int = 2;
+pub const SIGHUP: ::c_int = 1;
+pub const SIGINT: ::c_int = 2;
+pub const SIGQUIT: ::c_int = 3;
+pub const SIGILL: ::c_int = 4;
+pub const SIGABRT: ::c_int = 6;
+pub const SIGFPE: ::c_int = 8;
+pub const SIGKILL: ::c_int = 9;
+pub const SIGSEGV: ::c_int = 11;
+pub const SIGPIPE: ::c_int = 13;
+pub const SIGALRM: ::c_int = 14;
+pub const SIGTERM: ::c_int = 15;
+
+pub const PROT_NONE: ::c_int = 0;
+pub const PROT_READ: ::c_int = 1;
+pub const PROT_WRITE: ::c_int = 2;
+pub const PROT_EXEC: ::c_int = 4;
+
+pub const LC_CTYPE: ::c_int = 0;
+pub const LC_NUMERIC: ::c_int = 1;
+pub const LC_MONETARY: ::c_int = 2;
+pub const LC_TIME: ::c_int = 3;
+pub const LC_COLLATE: ::c_int = 4;
+pub const LC_MESSAGES: ::c_int = 5;
+pub const LC_ALL: ::c_int = 6;
+pub const LC_CTYPE_MASK: ::c_int = (1 << LC_CTYPE);
+pub const LC_NUMERIC_MASK: ::c_int = (1 << LC_NUMERIC);
+pub const LC_TIME_MASK: ::c_int = (1 << LC_TIME);
+pub const LC_COLLATE_MASK: ::c_int = (1 << LC_COLLATE);
+pub const LC_MONETARY_MASK: ::c_int = (1 << LC_MONETARY);
+pub const LC_MESSAGES_MASK: ::c_int = (1 << LC_MESSAGES);
+// LC_ALL_MASK defined per platform
+
+
+pub const MAP_FILE: ::c_int = 0x0000;
+pub const MAP_SHARED: ::c_int = 0x0001;
+pub const MAP_PRIVATE: ::c_int = 0x0002;
+pub const MAP_FIXED: ::c_int = 0x0010;
+
+pub const MAP_FAILED: *mut ::c_void = !0 as *mut ::c_void;
+
+// MS_ flags for msync(2)
+pub const MS_ASYNC: ::c_int = 0x0001;
+pub const MS_INVALIDATE: ::c_int = 0x0002;
+pub const MS_SYNC: ::c_int = 0x0004;
+
+// MS_ flags for mount(2)
+pub const MS_RDONLY: ::c_ulong = 0x01;
+pub const MS_NOSUID: ::c_ulong = 0x02;
+pub const MS_NODEV: ::c_ulong = 0x04;
+pub const MS_NOEXEC: ::c_ulong = 0x08;
+pub const MS_SYNCHRONOUS: ::c_ulong = 0x10;
+pub const MS_REMOUNT: ::c_ulong = 0x20;
+pub const MS_MANDLOCK: ::c_ulong = 0x40;
+pub const MS_NOATIME: ::c_ulong = 0x0400;
+pub const MS_NODIRATIME: ::c_ulong = 0x0800;
+pub const MS_BIND: ::c_ulong = 0x1000;
+pub const MS_NOUSER: ::c_ulong = 0x80000000;
+pub const MS_MGC_VAL: ::c_ulong = 0xc0ed0000;
+pub const MS_MGC_MSK: ::c_ulong = 0xffff0000;
+pub const MS_RMT_MASK: ::c_ulong = 0x800051;
+
+pub const EPERM: ::c_int = 1;
+pub const ENOENT: ::c_int = 2;
+pub const ESRCH: ::c_int = 3;
+pub const EINTR: ::c_int = 4;
+pub const EIO: ::c_int = 5;
+pub const ENXIO: ::c_int = 6;
+pub const E2BIG: ::c_int = 7;
+pub const ENOEXEC: ::c_int = 8;
+pub const EBADF: ::c_int = 9;
+pub const ECHILD: ::c_int = 10;
+pub const EAGAIN: ::c_int = 11;
+pub const ENOMEM: ::c_int = 12;
+pub const EACCES: ::c_int = 13;
+pub const EFAULT: ::c_int = 14;
+pub const ENOTBLK: ::c_int = 15;
+pub const EBUSY: ::c_int = 16;
+pub const EEXIST: ::c_int = 17;
+pub const EXDEV: ::c_int = 18;
+pub const ENODEV: ::c_int = 19;
+pub const ENOTDIR: ::c_int = 20;
+pub const EISDIR: ::c_int = 21;
+pub const EINVAL: ::c_int = 22;
+pub const ENFILE: ::c_int = 23;
+pub const EMFILE: ::c_int = 24;
+pub const ENOTTY: ::c_int = 25;
+pub const ETXTBSY: ::c_int = 26;
+pub const EFBIG: ::c_int = 27;
+pub const ENOSPC: ::c_int = 28;
+pub const ESPIPE: ::c_int = 29;
+pub const EROFS: ::c_int = 30;
+pub const EMLINK: ::c_int = 31;
+pub const EPIPE: ::c_int = 32;
+pub const EDOM: ::c_int = 33;
+pub const ERANGE: ::c_int = 34;
+pub const EWOULDBLOCK: ::c_int = EAGAIN;
+
+pub const SCM_RIGHTS: ::c_int = 0x01;
+pub const SCM_CREDENTIALS: ::c_int = 0x02;
+
+pub const IPPROTO_RAW: ::c_int = 255;
+
+pub const PROT_GROWSDOWN: ::c_int = 0x1000000;
+pub const PROT_GROWSUP: ::c_int = 0x2000000;
+
+pub const MAP_TYPE: ::c_int = 0x000f;
+
+pub const MADV_NORMAL: ::c_int = 0;
+pub const MADV_RANDOM: ::c_int = 1;
+pub const MADV_SEQUENTIAL: ::c_int = 2;
+pub const MADV_WILLNEED: ::c_int = 3;
+pub const MADV_DONTNEED: ::c_int = 4;
+pub const MADV_REMOVE: ::c_int = 9;
+pub const MADV_DONTFORK: ::c_int = 10;
+pub const MADV_DOFORK: ::c_int = 11;
+pub const MADV_MERGEABLE: ::c_int = 12;
+pub const MADV_UNMERGEABLE: ::c_int = 13;
+pub const MADV_HWPOISON: ::c_int = 100;
+
+pub const IFF_UP: ::c_int = 0x1;
+pub const IFF_BROADCAST: ::c_int = 0x2;
+pub const IFF_DEBUG: ::c_int = 0x4;
+pub const IFF_LOOPBACK: ::c_int = 0x8;
+pub const IFF_POINTOPOINT: ::c_int = 0x10;
+pub const IFF_NOTRAILERS: ::c_int = 0x20;
+pub const IFF_RUNNING: ::c_int = 0x40;
+pub const IFF_NOARP: ::c_int = 0x80;
+pub const IFF_PROMISC: ::c_int = 0x100;
+pub const IFF_ALLMULTI: ::c_int = 0x200;
+pub const IFF_MASTER: ::c_int = 0x400;
+pub const IFF_SLAVE: ::c_int = 0x800;
+pub const IFF_MULTICAST: ::c_int = 0x1000;
+pub const IFF_PORTSEL: ::c_int = 0x2000;
+pub const IFF_AUTOMEDIA: ::c_int = 0x4000;
+pub const IFF_DYNAMIC: ::c_int = 0x8000;
+
+pub const SOL_IP: ::c_int = 0;
+pub const SOL_TCP: ::c_int = 6;
+pub const SOL_IPV6: ::c_int = 41;
+pub const SOL_ICMPV6: ::c_int = 58;
+pub const SOL_RAW: ::c_int = 255;
+pub const SOL_DECNET: ::c_int = 261;
+pub const SOL_X25: ::c_int = 262;
+pub const SOL_PACKET: ::c_int = 263;
+pub const SOL_ATM: ::c_int = 264;
+pub const SOL_AAL: ::c_int = 265;
+pub const SOL_IRDA: ::c_int = 266;
+
+pub const AF_UNSPEC: ::c_int = 0;
+pub const AF_UNIX: ::c_int = 1;
+pub const AF_LOCAL: ::c_int = 1;
+pub const AF_INET: ::c_int = 2;
+pub const AF_AX25: ::c_int = 3;
+pub const AF_IPX: ::c_int = 4;
+pub const AF_APPLETALK: ::c_int = 5;
+pub const AF_NETROM: ::c_int = 6;
+pub const AF_BRIDGE: ::c_int = 7;
+pub const AF_ATMPVC: ::c_int = 8;
+pub const AF_X25: ::c_int = 9;
+pub const AF_INET6: ::c_int = 10;
+pub const AF_ROSE: ::c_int = 11;
+pub const AF_DECnet: ::c_int = 12;
+pub const AF_NETBEUI: ::c_int = 13;
+pub const AF_SECURITY: ::c_int = 14;
+pub const AF_KEY: ::c_int = 15;
+pub const AF_NETLINK: ::c_int = 16;
+pub const AF_ROUTE: ::c_int = AF_NETLINK;
+pub const AF_PACKET: ::c_int = 17;
+pub const AF_ASH: ::c_int = 18;
+pub const AF_ECONET: ::c_int = 19;
+pub const AF_ATMSVC: ::c_int = 20;
+pub const AF_SNA: ::c_int = 22;
+pub const AF_IRDA: ::c_int = 23;
+pub const AF_PPPOX: ::c_int = 24;
+pub const AF_WANPIPE: ::c_int = 25;
+pub const AF_LLC: ::c_int = 26;
+pub const AF_CAN: ::c_int = 29;
+pub const AF_TIPC: ::c_int = 30;
+pub const AF_BLUETOOTH: ::c_int = 31;
+pub const AF_IUCV: ::c_int = 32;
+pub const AF_RXRPC: ::c_int = 33;
+pub const AF_ISDN: ::c_int = 34;
+pub const AF_PHONET: ::c_int = 35;
+pub const AF_IEEE802154: ::c_int = 36;
+pub const AF_CAIF: ::c_int = 37;
+pub const AF_ALG: ::c_int = 38;
+
+pub const PF_UNSPEC: ::c_int = AF_UNSPEC;
+pub const PF_UNIX: ::c_int = AF_UNIX;
+pub const PF_LOCAL: ::c_int = AF_LOCAL;
+pub const PF_INET: ::c_int = AF_INET;
+pub const PF_AX25: ::c_int = AF_AX25;
+pub const PF_IPX: ::c_int = AF_IPX;
+pub const PF_APPLETALK: ::c_int = AF_APPLETALK;
+pub const PF_NETROM: ::c_int = AF_NETROM;
+pub const PF_BRIDGE: ::c_int = AF_BRIDGE;
+pub const PF_ATMPVC: ::c_int = AF_ATMPVC;
+pub const PF_X25: ::c_int = AF_X25;
+pub const PF_INET6: ::c_int = AF_INET6;
+pub const PF_ROSE: ::c_int = AF_ROSE;
+pub const PF_DECnet: ::c_int = AF_DECnet;
+pub const PF_NETBEUI: ::c_int = AF_NETBEUI;
+pub const PF_SECURITY: ::c_int = AF_SECURITY;
+pub const PF_KEY: ::c_int = AF_KEY;
+pub const PF_NETLINK: ::c_int = AF_NETLINK;
+pub const PF_ROUTE: ::c_int = AF_ROUTE;
+pub const PF_PACKET: ::c_int = AF_PACKET;
+pub const PF_ASH: ::c_int = AF_ASH;
+pub const PF_ECONET: ::c_int = AF_ECONET;
+pub const PF_ATMSVC: ::c_int = AF_ATMSVC;
+pub const PF_SNA: ::c_int = AF_SNA;
+pub const PF_IRDA: ::c_int = AF_IRDA;
+pub const PF_PPPOX: ::c_int = AF_PPPOX;
+pub const PF_WANPIPE: ::c_int = AF_WANPIPE;
+pub const PF_LLC: ::c_int = AF_LLC;
+pub const PF_CAN: ::c_int = AF_CAN;
+pub const PF_TIPC: ::c_int = AF_TIPC;
+pub const PF_BLUETOOTH: ::c_int = AF_BLUETOOTH;
+pub const PF_IUCV: ::c_int = AF_IUCV;
+pub const PF_RXRPC: ::c_int = AF_RXRPC;
+pub const PF_ISDN: ::c_int = AF_ISDN;
+pub const PF_PHONET: ::c_int = AF_PHONET;
+pub const PF_IEEE802154: ::c_int = AF_IEEE802154;
+pub const PF_CAIF: ::c_int = AF_CAIF;
+pub const PF_ALG: ::c_int = AF_ALG;
+
+pub const SOMAXCONN: ::c_int = 128;
+
+pub const MSG_OOB: ::c_int = 1;
+pub const MSG_PEEK: ::c_int = 2;
+pub const MSG_DONTROUTE: ::c_int = 4;
+pub const MSG_CTRUNC: ::c_int = 8;
+pub const MSG_TRUNC: ::c_int = 0x20;
+pub const MSG_DONTWAIT: ::c_int = 0x40;
+pub const MSG_EOR: ::c_int = 0x80;
+pub const MSG_WAITALL: ::c_int = 0x100;
+pub const MSG_FIN: ::c_int = 0x200;
+pub const MSG_SYN: ::c_int = 0x400;
+pub const MSG_CONFIRM: ::c_int = 0x800;
+pub const MSG_RST: ::c_int = 0x1000;
+pub const MSG_ERRQUEUE: ::c_int = 0x2000;
+pub const MSG_NOSIGNAL: ::c_int = 0x4000;
+pub const MSG_MORE: ::c_int = 0x8000;
+pub const MSG_WAITFORONE: ::c_int = 0x10000;
+pub const MSG_CMSG_CLOEXEC: ::c_int = 0x40000000;
+
+pub const SOCK_RAW: ::c_int = 3;
+pub const IPPROTO_ICMP: ::c_int = 1;
+pub const IPPROTO_ICMPV6: ::c_int = 58;
+pub const IPPROTO_TCP: ::c_int = 6;
+pub const IPPROTO_IP: ::c_int = 0;
+pub const IPPROTO_IPV6: ::c_int = 41;
+pub const IP_MULTICAST_TTL: ::c_int = 33;
+pub const IP_MULTICAST_LOOP: ::c_int = 34;
+pub const IP_TTL: ::c_int = 2;
+pub const IP_HDRINCL: ::c_int = 3;
+pub const IP_ADD_MEMBERSHIP: ::c_int = 35;
+pub const IP_DROP_MEMBERSHIP: ::c_int = 36;
+
+pub const TCP_NODELAY: ::c_int = 1;
+pub const TCP_MAXSEG: ::c_int = 2;
+pub const TCP_CORK: ::c_int = 3;
+pub const TCP_KEEPIDLE: ::c_int = 4;
+pub const TCP_KEEPINTVL: ::c_int = 5;
+pub const TCP_KEEPCNT: ::c_int = 6;
+pub const TCP_SYNCNT: ::c_int = 7;
+pub const TCP_LINGER2: ::c_int = 8;
+pub const TCP_DEFER_ACCEPT: ::c_int = 9;
+pub const TCP_WINDOW_CLAMP: ::c_int = 10;
+pub const TCP_INFO: ::c_int = 11;
+pub const TCP_QUICKACK: ::c_int = 12;
+pub const TCP_CONGESTION: ::c_int = 13;
+
+pub const IPV6_MULTICAST_LOOP: ::c_int = 19;
+pub const IPV6_V6ONLY: ::c_int = 26;
+
+pub const SO_DEBUG: ::c_int = 1;
+
+pub const SHUT_RD: ::c_int = 0;
+pub const SHUT_WR: ::c_int = 1;
+pub const SHUT_RDWR: ::c_int = 2;
+
+pub const LOCK_SH: ::c_int = 1;
+pub const LOCK_EX: ::c_int = 2;
+pub const LOCK_NB: ::c_int = 4;
+pub const LOCK_UN: ::c_int = 8;
+
+pub const SS_ONSTACK: ::c_int = 1;
+pub const SS_DISABLE: ::c_int = 2;
+
+pub const PATH_MAX: ::c_int = 4096;
+
+pub const FD_SETSIZE: usize = 1024;
+
+pub const EPOLLIN: ::c_int = 0x1;
+pub const EPOLLPRI: ::c_int = 0x2;
+pub const EPOLLOUT: ::c_int = 0x4;
+pub const EPOLLRDNORM: ::c_int = 0x40;
+pub const EPOLLRDBAND: ::c_int = 0x80;
+pub const EPOLLWRNORM: ::c_int = 0x100;
+pub const EPOLLWRBAND: ::c_int = 0x200;
+pub const EPOLLMSG: ::c_int = 0x400;
+pub const EPOLLERR: ::c_int = 0x8;
+pub const EPOLLHUP: ::c_int = 0x10;
+pub const EPOLLET: ::c_int = 0x80000000;
+
+pub const EPOLL_CTL_ADD: ::c_int = 1;
+pub const EPOLL_CTL_MOD: ::c_int = 3;
+pub const EPOLL_CTL_DEL: ::c_int = 2;
+
+pub const MNT_DETACH: ::c_int = 0x2;
+pub const MNT_EXPIRE: ::c_int = 0x4;
+
+pub const MNT_FORCE: ::c_int = 0x1;
+
+pub const Q_SYNC: ::c_int = 0x600;
+pub const Q_QUOTAON: ::c_int = 0x100;
+pub const Q_QUOTAOFF: ::c_int = 0x200;
+pub const Q_GETQUOTA: ::c_int = 0x300;
+pub const Q_SETQUOTA: ::c_int = 0x400;
+
+pub const TCIOFF: ::c_int = 2;
+pub const TCION: ::c_int = 3;
+pub const TCOOFF: ::c_int = 0;
+pub const TCOON: ::c_int = 1;
+pub const TCIFLUSH: ::c_int = 0;
+pub const TCOFLUSH: ::c_int = 1;
+pub const TCIOFLUSH: ::c_int = 2;
+pub const NL0: ::c_int  = 0x00000000;
+pub const NL1: ::c_int  = 0x00000100;
+pub const TAB0: ::c_int = 0x00000000;
+pub const CR0: ::c_int  = 0x00000000;
+pub const FF0: ::c_int  = 0x00000000;
+pub const BS0: ::c_int  = 0x00000000;
+pub const VT0: ::c_int  = 0x00000000;
+pub const VERASE: usize = 2;
+pub const VKILL: usize = 3;
+pub const VINTR: usize = 0;
+pub const VQUIT: usize = 1;
+pub const VLNEXT: usize = 15;
+pub const IGNBRK: ::tcflag_t = 0x00000001;
+pub const BRKINT: ::tcflag_t = 0x00000002;
+pub const IGNPAR: ::tcflag_t = 0x00000004;
+pub const PARMRK: ::tcflag_t = 0x00000008;
+pub const INPCK: ::tcflag_t = 0x00000010;
+pub const ISTRIP: ::tcflag_t = 0x00000020;
+pub const INLCR: ::tcflag_t = 0x00000040;
+pub const IGNCR: ::tcflag_t = 0x00000080;
+pub const ICRNL: ::tcflag_t = 0x00000100;
+pub const IXANY: ::tcflag_t = 0x00000800;
+pub const IMAXBEL: ::tcflag_t = 0x00002000;
+pub const OPOST: ::tcflag_t = 0x1;
+pub const CS5: ::tcflag_t = 0x00000000;
+pub const CRTSCTS: ::tcflag_t = 0x80000000;
+pub const ECHO: ::tcflag_t = 0x00000008;
+
+pub const CLONE_VM: ::c_int = 0x100;
+pub const CLONE_FS: ::c_int = 0x200;
+pub const CLONE_FILES: ::c_int = 0x400;
+pub const CLONE_SIGHAND: ::c_int = 0x800;
+pub const CLONE_PTRACE: ::c_int = 0x2000;
+pub const CLONE_VFORK: ::c_int = 0x4000;
+pub const CLONE_PARENT: ::c_int = 0x8000;
+pub const CLONE_THREAD: ::c_int = 0x10000;
+pub const CLONE_NEWNS: ::c_int = 0x20000;
+pub const CLONE_SYSVSEM: ::c_int = 0x40000;
+pub const CLONE_SETTLS: ::c_int = 0x80000;
+pub const CLONE_PARENT_SETTID: ::c_int = 0x100000;
+pub const CLONE_CHILD_CLEARTID: ::c_int = 0x200000;
+pub const CLONE_DETACHED: ::c_int = 0x400000;
+pub const CLONE_UNTRACED: ::c_int = 0x800000;
+pub const CLONE_CHILD_SETTID: ::c_int = 0x01000000;
+pub const CLONE_NEWUTS: ::c_int = 0x04000000;
+pub const CLONE_NEWIPC: ::c_int = 0x08000000;
+pub const CLONE_NEWUSER: ::c_int = 0x10000000;
+pub const CLONE_NEWPID: ::c_int = 0x20000000;
+pub const CLONE_NEWNET: ::c_int = 0x40000000;
+pub const CLONE_IO: ::c_int = 0x80000000;
+
+pub const WNOHANG: ::c_int = 0x00000001;
+pub const WUNTRACED: ::c_int = 0x00000002;
+pub const WSTOPPED: ::c_int = WUNTRACED;
+pub const WEXITED: ::c_int = 0x00000004;
+pub const WCONTINUED: ::c_int = 0x00000008;
+pub const WNOWAIT: ::c_int = 0x01000000;
+
+pub const __WNOTHREAD: ::c_int = 0x20000000;
+pub const __WALL: ::c_int = 0x40000000;
+pub const __WCLONE: ::c_int = 0x80000000;
+
+pub const SPLICE_F_MOVE: ::c_uint = 0x01;
+pub const SPLICE_F_NONBLOCK: ::c_uint = 0x02;
+pub const SPLICE_F_MORE: ::c_uint = 0x04;
+pub const SPLICE_F_GIFT: ::c_uint = 0x08;
+
+pub const RTLD_LOCAL: ::c_int = 0;
+
+pub const POSIX_FADV_NORMAL: ::c_int = 0;
+pub const POSIX_FADV_RANDOM: ::c_int = 1;
+pub const POSIX_FADV_SEQUENTIAL: ::c_int = 2;
+pub const POSIX_FADV_WILLNEED: ::c_int = 3;
+
+pub const AT_FDCWD: ::c_int = -100;
+pub const AT_SYMLINK_NOFOLLOW: ::c_int = 0x100;
+pub const AT_REMOVEDIR: ::c_int = 0x200;
+pub const AT_SYMLINK_FOLLOW: ::c_int = 0x400;
+
+pub const LOG_CRON: ::c_int = 9 << 3;
+pub const LOG_AUTHPRIV: ::c_int = 10 << 3;
+pub const LOG_FTP: ::c_int = 11 << 3;
+pub const LOG_PERROR: ::c_int = 0x20;
+
+pub const PIPE_BUF: usize = 4096;
+
+pub const SI_LOAD_SHIFT: ::c_uint = 16;
+
+pub const SIGEV_SIGNAL: ::c_int = 0;
+pub const SIGEV_NONE: ::c_int = 1;
+pub const SIGEV_THREAD: ::c_int = 2;
+
+pub const P_ALL: idtype_t = 0;
+pub const P_PID: idtype_t = 1;
+pub const P_PGID: idtype_t = 2;
+
+pub const UTIME_OMIT: c_long = 1073741822;
+pub const UTIME_NOW: c_long = 1073741823;
+
+f! {
+    pub fn FD_CLR(fd: ::c_int, set: *mut fd_set) -> () {
+        let fd = fd as usize;
+        let size = mem::size_of_val(&(*set).fds_bits[0]) * 8;
+        (*set).fds_bits[fd / size] &= !(1 << (fd % size));
+        return
+    }
+
+    pub fn FD_ISSET(fd: ::c_int, set: *mut fd_set) -> bool {
+        let fd = fd as usize;
+        let size = mem::size_of_val(&(*set).fds_bits[0]) * 8;
+        return ((*set).fds_bits[fd / size] & (1 << (fd % size))) != 0
+    }
+
+    pub fn FD_SET(fd: ::c_int, set: *mut fd_set) -> () {
+        let fd = fd as usize;
+        let size = mem::size_of_val(&(*set).fds_bits[0]) * 8;
+        (*set).fds_bits[fd / size] |= 1 << (fd % size);
+        return
+    }
+
+    pub fn FD_ZERO(set: *mut fd_set) -> () {
+        for slot in (*set).fds_bits.iter_mut() {
+            *slot = 0;
+        }
+    }
+
+    pub fn WIFSTOPPED(status: ::c_int) -> bool {
+        (status & 0xff) == 0x7f
+    }
+
+    pub fn WSTOPSIG(status: ::c_int) -> ::c_int {
+        (status >> 8) & 0xff
+    }
+
+    pub fn WIFCONTINUED(status: ::c_int) -> bool {
+        status == 0xffff
+    }
+
+    pub fn WIFSIGNALED(status: ::c_int) -> bool {
+        ((status & 0x7f) + 1) as i8 >= 2
+    }
+
+    pub fn WTERMSIG(status: ::c_int) -> ::c_int {
+        status & 0x7f
+    }
+
+    pub fn WIFEXITED(status: ::c_int) -> bool {
+        (status & 0x7f) == 0
+    }
+
+    pub fn WEXITSTATUS(status: ::c_int) -> ::c_int {
+        (status >> 8) & 0xff
+    }
+
+    pub fn WCOREDUMP(status: ::c_int) -> bool {
+        (status & 0x80) != 0
+    }
+}
+
+extern {
+    pub fn getpwnam_r(name: *const ::c_char,
+                      pwd: *mut passwd,
+                      buf: *mut ::c_char,
+                      buflen: ::size_t,
+                      result: *mut *mut passwd) -> ::c_int;
+    pub fn getpwuid_r(uid: ::uid_t,
+                      pwd: *mut passwd,
+                      buf: *mut ::c_char,
+                      buflen: ::size_t,
+                      result: *mut *mut passwd) -> ::c_int;
+    pub fn fdatasync(fd: ::c_int) -> ::c_int;
+    pub fn mincore(addr: *mut ::c_void, len: ::size_t,
+                   vec: *mut ::c_uchar) -> ::c_int;
+    pub fn clock_getres(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int;
+    pub fn clock_gettime(clk_id: clockid_t, tp: *mut ::timespec) -> ::c_int;
+    pub fn clock_nanosleep(clk_id: clockid_t,
+                           flags: ::c_int,
+                           rqtp: *const ::timespec,
+                           rmtp:  *mut ::timespec) -> ::c_int;
+    pub fn clock_settime(clk_id: clockid_t, tp: *const ::timespec) -> ::c_int;
+    pub fn prctl(option: ::c_int, ...) -> ::c_int;
+    pub fn pthread_getattr_np(native: ::pthread_t,
+                              attr: *mut ::pthread_attr_t) -> ::c_int;
+    pub fn pthread_attr_getguardsize(attr: *const ::pthread_attr_t,
+                                     guardsize: *mut ::size_t) -> ::c_int;
+    pub fn pthread_attr_getstack(attr: *const ::pthread_attr_t,
+                                 stackaddr: *mut *mut ::c_void,
+                                 stacksize: *mut ::size_t) -> ::c_int;
+    pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;
+    pub fn setgroups(ngroups: ::size_t,
+                     ptr: *const ::gid_t) -> ::c_int;
+    pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;
+    pub fn sched_setscheduler(pid: ::pid_t,
+                              policy: ::c_int,
+                              param: *const sched_param) -> ::c_int;
+    pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;
+    pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;
+    pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
+    pub fn epoll_create(size: ::c_int) -> ::c_int;
+    pub fn epoll_create1(flags: ::c_int) -> ::c_int;
+    pub fn epoll_ctl(epfd: ::c_int,
+                     op: ::c_int,
+                     fd: ::c_int,
+                     event: *mut epoll_event) -> ::c_int;
+    pub fn epoll_wait(epfd: ::c_int,
+                      events: *mut epoll_event,
+                      maxevents: ::c_int,
+                      timeout: ::c_int) -> ::c_int;
+    pub fn pipe2(fds: *mut ::c_int, flags: ::c_int) -> ::c_int;
+    pub fn mount(src: *const ::c_char,
+                 target: *const ::c_char,
+                 fstype: *const ::c_char,
+                 flags: ::c_ulong,
+                 data: *const ::c_void) -> ::c_int;
+    pub fn umount(target: *const ::c_char) -> ::c_int;
+    pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int;
+    pub fn clone(cb: extern fn(*mut ::c_void) -> ::c_int,
+                 child_stack: *mut ::c_void,
+                 flags: ::c_int,
+                 arg: *mut ::c_void, ...) -> ::c_int;
+    pub fn statfs(path: *const ::c_char, buf: *mut statfs) -> ::c_int;
+    pub fn fstatfs(fd: ::c_int, buf: *mut statfs) -> ::c_int;
+    pub fn memrchr(cx: *const ::c_void,
+                   c: ::c_int,
+                   n: ::size_t) -> *mut ::c_void;
+    pub fn syscall(num: ::c_long, ...) -> ::c_long;
+    pub fn sendfile(out_fd: ::c_int,
+                    in_fd: ::c_int,
+                    offset: *mut off_t,
+                    count: ::size_t) -> ::ssize_t;
+    pub fn splice(fd_in: ::c_int,
+                  off_in: *mut ::loff_t,
+                  fd_out: ::c_int,
+                  off_out: *mut ::loff_t,
+                  len: ::size_t,
+                  flags: ::c_uint) -> ::ssize_t;
+    pub fn tee(fd_in: ::c_int,
+               fd_out: ::c_int,
+               len: ::size_t,
+               flags: ::c_uint) -> ::ssize_t;
+    pub fn vmsplice(fd: ::c_int,
+                    iov: *const ::iovec,
+                    nr_segs: ::size_t,
+                    flags: ::c_uint) -> ::ssize_t;
+
+    pub fn posix_fadvise(fd: ::c_int, offset: ::off_t, len: ::off_t,
+                         advise: ::c_int) -> ::c_int;
+    pub fn futimens(fd: ::c_int, times: *const ::timespec) -> ::c_int;
+    pub fn utimensat(dirfd: ::c_int, path: *const ::c_char,
+                     times: *const ::timespec, flag: ::c_int) -> ::c_int;
+    pub fn duplocale(base: ::locale_t) -> ::locale_t;
+    pub fn freelocale(loc: ::locale_t);
+    pub fn newlocale(mask: ::c_int,
+                     locale: *const ::c_char,
+                     base: ::locale_t) -> ::locale_t;
+    pub fn uselocale(loc: ::locale_t) -> ::locale_t;
+    pub fn creat64(path: *const c_char, mode: mode_t) -> ::c_int;
+    pub fn fstat64(fildes: ::c_int, buf: *mut stat64) -> ::c_int;
+    pub fn ftruncate64(fd: ::c_int, length: off64_t) -> ::c_int;
+    pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;
+    pub fn lseek64(fd: ::c_int, offset: off64_t, whence: ::c_int) -> off64_t;
+    pub fn lstat64(path: *const c_char, buf: *mut stat64) -> ::c_int;
+    pub fn mmap64(addr: *mut ::c_void,
+                  len: ::size_t,
+                  prot: ::c_int,
+                  flags: ::c_int,
+                  fd: ::c_int,
+                  offset: off64_t)
+                  -> *mut ::c_void;
+    pub fn open64(path: *const c_char, oflag: ::c_int, ...) -> ::c_int;
+    pub fn openat64(fd: ::c_int,
+                    path: *const c_char,
+                    oflag: ::c_int, ...) -> ::c_int;
+    pub fn pread64(fd: ::c_int, buf: *mut ::c_void, count: ::size_t,
+                   offset: off64_t) -> ::ssize_t;
+    pub fn pwrite64(fd: ::c_int, buf: *const ::c_void, count: ::size_t,
+                    offset: off64_t) -> ::ssize_t;
+    pub fn readdir64(dirp: *mut ::DIR) -> *mut ::dirent64;
+    pub fn readdir64_r(dirp: *mut ::DIR, entry: *mut ::dirent64,
+                       result: *mut *mut ::dirent64) -> ::c_int;
+    pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;
+    pub fn stat64(path: *const c_char, buf: *mut stat64) -> ::c_int;
+    pub fn truncate64(path: *const c_char, length: off64_t) -> ::c_int;
+    pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
+
+    pub fn fdopendir(fd: ::c_int) -> *mut ::DIR;
+
+    pub fn mknodat(dirfd: ::c_int, pathname: *const ::c_char,
+                   mode: ::mode_t, dev: dev_t) -> ::c_int;
+    pub fn ppoll(fds: *mut ::pollfd,
+                 nfds: nfds_t,
+                 timeout: *const ::timespec,
+                 sigmask: *const sigset_t) -> ::c_int;
+    pub fn pthread_condattr_getclock(attr: *const pthread_condattr_t,
+                                     clock_id: *mut clockid_t) -> ::c_int;
+    pub fn pthread_condattr_setclock(attr: *mut pthread_condattr_t,
+                                     clock_id: clockid_t) -> ::c_int;
+    pub fn pthread_condattr_setpshared(attr: *mut pthread_condattr_t,
+                                       pshared: ::c_int) -> ::c_int;
+    pub fn pthread_condattr_getpshared(attr: *const pthread_condattr_t,
+                                       pshared: *mut ::c_int) -> ::c_int;
+    pub fn sched_getaffinity(pid: ::pid_t,
+                             cpusetsize: ::size_t,
+                             cpuset: *mut cpu_set_t) -> ::c_int;
+    pub fn sched_setaffinity(pid: ::pid_t,
+                             cpusetsize: ::size_t,
+                             cpuset: *const cpu_set_t) -> ::c_int;
+    pub fn unshare(flags: ::c_int) -> ::c_int;
+    pub fn sem_timedwait(sem: *mut sem_t,
+                         abstime: *const ::timespec) -> ::c_int;
+    pub fn accept4(fd: ::c_int, addr: *mut ::sockaddr, len: *mut ::socklen_t,
+                   flg: ::c_int) -> ::c_int;
+    pub fn pthread_mutex_timedlock(lock: *mut pthread_mutex_t,
+                                   abstime: *const ::timespec) -> ::c_int;
+    pub fn pthread_mutexattr_setpshared(attr: *mut pthread_mutexattr_t,
+                                        pshared: ::c_int) -> ::c_int;
+    pub fn pthread_mutexattr_getpshared(attr: *const pthread_mutexattr_t,
+                                        pshared: *mut ::c_int) -> ::c_int;
+    pub fn ptsname_r(fd: ::c_int,
+                     buf: *mut ::c_char,
+                     buflen: ::size_t) -> ::c_int;
+    pub fn clearenv() -> ::c_int;
+    pub fn waitid(idtype: idtype_t, id: id_t, infop: *mut ::siginfo_t,
+                  options: ::c_int) -> ::c_int;
+}
+
+
+pub type useconds_t = u32;
+pub type dev_t = u64;
+pub type socklen_t = u32;
+pub type pthread_t = c_ulong;
+pub type mode_t = u32;
+pub type ino64_t = u64;
+pub type off64_t = i64;
+pub type blkcnt64_t = i64;
+pub type rlim64_t = u64;
+pub type shmatt_t = ::c_ulong;
+pub type mqd_t = ::c_int;
+pub type msgqnum_t = ::c_ulong;
+pub type msglen_t = ::c_ulong;
+pub type nfds_t = ::c_ulong;
+pub type nl_item = ::c_int;
+pub type idtype_t = ::c_uint;
+
+pub enum fpos64_t {} // TODO: fill this out with a struct
+
+s! {
+    pub struct dirent {
+        pub d_ino: ::ino_t,
+        pub d_off: ::off_t,
+        pub d_reclen: ::c_ushort,
+        pub d_type: ::c_uchar,
+        pub d_name: [::c_char; 256],
+    }
+
+    pub struct dirent64 {
+        pub d_ino: ::ino64_t,
+        pub d_off: ::off64_t,
+        pub d_reclen: ::c_ushort,
+        pub d_type: ::c_uchar,
+        pub d_name: [::c_char; 256],
+    }
+
+    pub struct rlimit64 {
+        pub rlim_cur: rlim64_t,
+        pub rlim_max: rlim64_t,
+    }
+
+    pub struct glob_t {
+        pub gl_pathc: ::size_t,
+        pub gl_pathv: *mut *mut c_char,
+        pub gl_offs: ::size_t,
+        pub gl_flags: ::c_int,
+
+        __unused1: *mut ::c_void,
+        __unused2: *mut ::c_void,
+        __unused3: *mut ::c_void,
+        __unused4: *mut ::c_void,
+        __unused5: *mut ::c_void,
+    }
+
+    pub struct ifaddrs {
+        pub ifa_next: *mut ifaddrs,
+        pub ifa_name: *mut c_char,
+        pub ifa_flags: ::c_uint,
+        pub ifa_addr: *mut ::sockaddr,
+        pub ifa_netmask: *mut ::sockaddr,
+        pub ifa_ifu: *mut ::sockaddr, // FIXME This should be a union
+        pub ifa_data: *mut ::c_void
+    }
+
+    pub struct pthread_mutex_t {
+        #[cfg(any(target_arch = "mips", target_arch = "arm",
+                  target_arch = "powerpc"))]
+        __align: [::c_long; 0],
+        #[cfg(not(any(target_arch = "mips", target_arch = "arm",
+                      target_arch = "powerpc")))]
+        __align: [::c_longlong; 0],
+        size: [u8; __SIZEOF_PTHREAD_MUTEX_T],
+    }
+
+    pub struct pthread_rwlock_t {
+        #[cfg(any(target_arch = "mips", target_arch = "arm",
+                  target_arch = "powerpc"))]
+        __align: [::c_long; 0],
+        #[cfg(not(any(target_arch = "mips", target_arch = "arm",
+                      target_arch = "powerpc")))]
+        __align: [::c_longlong; 0],
+        size: [u8; __SIZEOF_PTHREAD_RWLOCK_T],
+    }
+
+    pub struct pthread_mutexattr_t {
+        #[cfg(any(target_arch = "x86_64", target_arch = "powerpc64",
+                  target_arch = "mips64", target_arch = "s390x",
+                  target_arch = "sparc64"))]
+        __align: [::c_int; 0],
+        #[cfg(not(any(target_arch = "x86_64", target_arch = "powerpc64",
+                      target_arch = "mips64", target_arch = "s390x",
+                      target_arch = "sparc64")))]
+        __align: [::c_long; 0],
+        size: [u8; __SIZEOF_PTHREAD_MUTEXATTR_T],
+    }
+
+    pub struct pthread_cond_t {
+        __align: [::c_longlong; 0],
+        size: [u8; __SIZEOF_PTHREAD_COND_T],
+    }
+
+    pub struct pthread_condattr_t {
+        __align: [::c_int; 0],
+        size: [u8; __SIZEOF_PTHREAD_CONDATTR_T],
+    }
+
+    pub struct passwd {
+        pub pw_name: *mut ::c_char,
+        pub pw_passwd: *mut ::c_char,
+        pub pw_uid: ::uid_t,
+        pub pw_gid: ::gid_t,
+        pub pw_gecos: *mut ::c_char,
+        pub pw_dir: *mut ::c_char,
+        pub pw_shell: *mut ::c_char,
+    }
+
+    pub struct spwd {
+        pub sp_namp: *mut ::c_char,
+        pub sp_pwdp: *mut ::c_char,
+        pub sp_lstchg: ::c_long,
+        pub sp_min: ::c_long,
+        pub sp_max: ::c_long,
+        pub sp_warn: ::c_long,
+        pub sp_inact: ::c_long,
+        pub sp_expire: ::c_long,
+        pub sp_flag: ::c_ulong,
+    }
+
+    pub struct statvfs {
+        pub f_bsize: ::c_ulong,
+        pub f_frsize: ::c_ulong,
+        pub f_blocks: ::fsblkcnt_t,
+        pub f_bfree: ::fsblkcnt_t,
+        pub f_bavail: ::fsblkcnt_t,
+        pub f_files: ::fsfilcnt_t,
+        pub f_ffree: ::fsfilcnt_t,
+        pub f_favail: ::fsfilcnt_t,
+        #[cfg(target_endian = "little")]
+        pub f_fsid: ::c_ulong,
+        #[cfg(target_pointer_width = "32")]
+        __f_unused: ::c_int,
+        #[cfg(target_endian = "big")]
+        pub f_fsid: ::c_ulong,
+        pub f_flag: ::c_ulong,
+        pub f_namemax: ::c_ulong,
+        __f_spare: [::c_int; 6],
+    }
+
+    pub struct dqblk {
+        pub dqb_bhardlimit: ::uint32_t,
+        pub dqb_bsoftlimit: ::uint32_t,
+        pub dqb_curblocks: ::uint32_t,
+        pub dqb_ihardlimit: ::uint32_t,
+        pub dqb_isoftlimit: ::uint32_t,
+        pub dqb_curinodes: ::uint32_t,
+        pub dqb_btime: ::time_t,
+        pub dqb_itime: ::time_t,
+    }
+
+    pub struct signalfd_siginfo {
+        pub ssi_signo: ::uint32_t,
+        pub ssi_errno: ::int32_t,
+        pub ssi_code: ::int32_t,
+        pub ssi_pid: ::uint32_t,
+        pub ssi_uid: ::uint32_t,
+        pub ssi_fd: ::int32_t,
+        pub ssi_tid: ::uint32_t,
+        pub ssi_band: ::uint32_t,
+        pub ssi_overrun: ::uint32_t,
+        pub ssi_trapno: ::uint32_t,
+        pub ssi_status: ::int32_t,
+        pub ssi_int: ::int32_t,
+        pub ssi_ptr: ::uint64_t,
+        pub ssi_utime: ::uint64_t,
+        pub ssi_stime: ::uint64_t,
+        pub ssi_addr: ::uint64_t,
+        _pad: [::uint8_t; 48],
+    }
+
+    pub struct fsid_t {
+        __val: [::c_int; 2],
+    }
+
+    pub struct mq_attr {
+        pub mq_flags: ::c_long,
+        pub mq_maxmsg: ::c_long,
+        pub mq_msgsize: ::c_long,
+        pub mq_curmsgs: ::c_long,
+        pad: [::c_long; 4]
+    }
+
+    pub struct cpu_set_t {
+        #[cfg(target_pointer_width = "32")]
+        bits: [u32; 32],
+        #[cfg(target_pointer_width = "64")]
+        bits: [u64; 16],
+    }
+
+    pub struct if_nameindex {
+        pub if_index: ::c_uint,
+        pub if_name: *mut ::c_char,
+    }
+
+    // System V IPC
+    pub struct msginfo {
+        pub msgpool: ::c_int,
+        pub msgmap: ::c_int,
+        pub msgmax: ::c_int,
+        pub msgmnb: ::c_int,
+        pub msgmni: ::c_int,
+        pub msgssz: ::c_int,
+        pub msgtql: ::c_int,
+        pub msgseg: ::c_ushort,
+    }
+}
+
+pub const L_tmpnam: ::c_uint = 20;
+pub const _PC_LINK_MAX: ::c_int = 0;
+pub const _PC_MAX_CANON: ::c_int = 1;
+pub const _PC_MAX_INPUT: ::c_int = 2;
+pub const _PC_NAME_MAX: ::c_int = 3;
+pub const _PC_PATH_MAX: ::c_int = 4;
+pub const _PC_PIPE_BUF: ::c_int = 5;
+pub const _PC_CHOWN_RESTRICTED: ::c_int = 6;
+pub const _PC_NO_TRUNC: ::c_int = 7;
+pub const _PC_VDISABLE: ::c_int = 8;
+
+pub const _SC_ARG_MAX: ::c_int = 0;
+pub const _SC_CHILD_MAX: ::c_int = 1;
+pub const _SC_CLK_TCK: ::c_int = 2;
+pub const _SC_NGROUPS_MAX: ::c_int = 3;
+pub const _SC_OPEN_MAX: ::c_int = 4;
+pub const _SC_STREAM_MAX: ::c_int = 5;
+pub const _SC_TZNAME_MAX: ::c_int = 6;
+pub const _SC_JOB_CONTROL: ::c_int = 7;
+pub const _SC_SAVED_IDS: ::c_int = 8;
+pub const _SC_REALTIME_SIGNALS: ::c_int = 9;
+pub const _SC_PRIORITY_SCHEDULING: ::c_int = 10;
+pub const _SC_TIMERS: ::c_int = 11;
+pub const _SC_ASYNCHRONOUS_IO: ::c_int = 12;
+pub const _SC_PRIORITIZED_IO: ::c_int = 13;
+pub const _SC_SYNCHRONIZED_IO: ::c_int = 14;
+pub const _SC_FSYNC: ::c_int = 15;
+pub const _SC_MAPPED_FILES: ::c_int = 16;
+pub const _SC_MEMLOCK: ::c_int = 17;
+pub const _SC_MEMLOCK_RANGE: ::c_int = 18;
+pub const _SC_MEMORY_PROTECTION: ::c_int = 19;
+pub const _SC_MESSAGE_PASSING: ::c_int = 20;
+pub const _SC_SEMAPHORES: ::c_int = 21;
+pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 22;
+pub const _SC_AIO_LISTIO_MAX: ::c_int = 23;
+pub const _SC_AIO_MAX: ::c_int = 24;
+pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 25;
+pub const _SC_DELAYTIMER_MAX: ::c_int = 26;
+pub const _SC_MQ_OPEN_MAX: ::c_int = 27;
+pub const _SC_MQ_PRIO_MAX: ::c_int = 28;
+pub const _SC_VERSION: ::c_int = 29;
+pub const _SC_PAGESIZE: ::c_int = 30;
+pub const _SC_PAGE_SIZE: ::c_int = _SC_PAGESIZE;
+pub const _SC_RTSIG_MAX: ::c_int = 31;
+pub const _SC_SEM_NSEMS_MAX: ::c_int = 32;
+pub const _SC_SEM_VALUE_MAX: ::c_int = 33;
+pub const _SC_SIGQUEUE_MAX: ::c_int = 34;
+pub const _SC_TIMER_MAX: ::c_int = 35;
+pub const _SC_BC_BASE_MAX: ::c_int = 36;
+pub const _SC_BC_DIM_MAX: ::c_int = 37;
+pub const _SC_BC_SCALE_MAX: ::c_int = 38;
+pub const _SC_BC_STRING_MAX: ::c_int = 39;
+pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 40;
+pub const _SC_EXPR_NEST_MAX: ::c_int = 42;
+pub const _SC_LINE_MAX: ::c_int = 43;
+pub const _SC_RE_DUP_MAX: ::c_int = 44;
+pub const _SC_2_VERSION: ::c_int = 46;
+pub const _SC_2_C_BIND: ::c_int = 47;
+pub const _SC_2_C_DEV: ::c_int = 48;
+pub const _SC_2_FORT_DEV: ::c_int = 49;
+pub const _SC_2_FORT_RUN: ::c_int = 50;
+pub const _SC_2_SW_DEV: ::c_int = 51;
+pub const _SC_2_LOCALEDEF: ::c_int = 52;
+pub const _SC_IOV_MAX: ::c_int = 60;
+pub const _SC_THREADS: ::c_int = 67;
+pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 68;
+pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 69;
+pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 70;
+pub const _SC_LOGIN_NAME_MAX: ::c_int = 71;
+pub const _SC_TTY_NAME_MAX: ::c_int = 72;
+pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 73;
+pub const _SC_THREAD_KEYS_MAX: ::c_int = 74;
+pub const _SC_THREAD_STACK_MIN: ::c_int = 75;
+pub const _SC_THREAD_THREADS_MAX: ::c_int = 76;
+pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 77;
+pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 78;
+pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 79;
+pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 80;
+pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 81;
+pub const _SC_NPROCESSORS_ONLN: ::c_int = 84;
+pub const _SC_ATEXIT_MAX: ::c_int = 87;
+pub const _SC_XOPEN_VERSION: ::c_int = 89;
+pub const _SC_XOPEN_XCU_VERSION: ::c_int = 90;
+pub const _SC_XOPEN_UNIX: ::c_int = 91;
+pub const _SC_XOPEN_CRYPT: ::c_int = 92;
+pub const _SC_XOPEN_ENH_I18N: ::c_int = 93;
+pub const _SC_XOPEN_SHM: ::c_int = 94;
+pub const _SC_2_CHAR_TERM: ::c_int = 95;
+pub const _SC_2_UPE: ::c_int = 97;
+pub const _SC_XBS5_ILP32_OFF32: ::c_int = 125;
+pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 126;
+pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 128;
+pub const _SC_XOPEN_LEGACY: ::c_int = 129;
+pub const _SC_XOPEN_REALTIME: ::c_int = 130;
+pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 131;
+pub const _SC_HOST_NAME_MAX: ::c_int = 180;
+
+pub const RLIM_SAVED_MAX: ::rlim_t = RLIM_INFINITY;
+pub const RLIM_SAVED_CUR: ::rlim_t = RLIM_INFINITY;
+
+pub const GLOB_ERR: ::c_int = 1 << 0;
+pub const GLOB_MARK: ::c_int = 1 << 1;
+pub const GLOB_NOSORT: ::c_int = 1 << 2;
+pub const GLOB_DOOFFS: ::c_int = 1 << 3;
+pub const GLOB_NOCHECK: ::c_int = 1 << 4;
+pub const GLOB_APPEND: ::c_int = 1 << 5;
+pub const GLOB_NOESCAPE: ::c_int = 1 << 6;
+
+pub const GLOB_NOSPACE: ::c_int = 1;
+pub const GLOB_ABORTED: ::c_int = 2;
+pub const GLOB_NOMATCH: ::c_int = 3;
+
+pub const POSIX_MADV_NORMAL: ::c_int = 0;
+pub const POSIX_MADV_RANDOM: ::c_int = 1;
+pub const POSIX_MADV_SEQUENTIAL: ::c_int = 2;
+pub const POSIX_MADV_WILLNEED: ::c_int = 3;
+
+pub const S_IEXEC: mode_t = 64;
+pub const S_IWRITE: mode_t = 128;
+pub const S_IREAD: mode_t = 256;
+
+pub const F_LOCK: ::c_int = 1;
+pub const F_TEST: ::c_int = 3;
+pub const F_TLOCK: ::c_int = 2;
+pub const F_ULOCK: ::c_int = 0;
+
+pub const ST_RDONLY: ::c_ulong = 1;
+pub const ST_NOSUID: ::c_ulong = 2;
+pub const ST_NODEV: ::c_ulong = 4;
+pub const ST_NOEXEC: ::c_ulong = 8;
+pub const ST_SYNCHRONOUS: ::c_ulong = 16;
+pub const ST_MANDLOCK: ::c_ulong = 64;
+pub const ST_WRITE: ::c_ulong = 128;
+pub const ST_APPEND: ::c_ulong = 256;
+pub const ST_IMMUTABLE: ::c_ulong = 512;
+pub const ST_NOATIME: ::c_ulong = 1024;
+pub const ST_NODIRATIME: ::c_ulong = 2048;
+
+pub const RTLD_NEXT: *mut ::c_void = -1i64 as *mut ::c_void;
+pub const RTLD_DEFAULT: *mut ::c_void = 0i64 as *mut ::c_void;
+pub const RTLD_NODELETE: ::c_int = 0x1000;
+pub const RTLD_NOW: ::c_int = 0x2;
+
+pub const TCP_MD5SIG: ::c_int = 14;
+
+pub const PTHREAD_MUTEX_INITIALIZER: pthread_mutex_t = pthread_mutex_t {
+    __align: [],
+    size: [0; __SIZEOF_PTHREAD_MUTEX_T],
+};
+pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
+    __align: [],
+    size: [0; __SIZEOF_PTHREAD_COND_T],
+};
+pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
+    __align: [],
+    size: [0; __SIZEOF_PTHREAD_RWLOCK_T],
+};
+pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
+pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
+pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
+pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
+pub const __SIZEOF_PTHREAD_COND_T: usize = 48;
+
+pub const SCHED_OTHER: ::c_int = 0;
+pub const SCHED_FIFO: ::c_int = 1;
+pub const SCHED_RR: ::c_int = 2;
+pub const SCHED_BATCH: ::c_int = 3;
+pub const SCHED_IDLE: ::c_int = 5;
+
+// System V IPC
+pub const IPC_PRIVATE: ::key_t = 0;
+
+pub const IPC_CREAT: ::c_int = 0o1000;
+pub const IPC_EXCL: ::c_int = 0o2000;
+pub const IPC_NOWAIT: ::c_int = 0o4000;
+
+pub const IPC_RMID: ::c_int = 0;
+pub const IPC_SET: ::c_int = 1;
+pub const IPC_STAT: ::c_int = 2;
+pub const IPC_INFO: ::c_int = 3;
+pub const MSG_STAT: ::c_int = 11;
+pub const MSG_INFO: ::c_int = 12;
+
+pub const MSG_NOERROR: ::c_int = 0o10000;
+pub const MSG_EXCEPT: ::c_int = 0o20000;
+
+pub const SHM_R: ::c_int = 0o400;
+pub const SHM_W: ::c_int = 0o200;
+
+pub const SHM_RDONLY: ::c_int = 0o10000;
+pub const SHM_RND: ::c_int = 0o20000;
+pub const SHM_REMAP: ::c_int = 0o40000;
+
+pub const SHM_LOCK: ::c_int = 11;
+pub const SHM_UNLOCK: ::c_int = 12;
+
+pub const SHM_HUGETLB: ::c_int = 0o4000;
+pub const SHM_NORESERVE: ::c_int = 0o10000;
+
+pub const EPOLLRDHUP: ::c_int = 0x2000;
+pub const EPOLLONESHOT: ::c_int = 0x40000000;
+
+pub const QFMT_VFS_OLD: ::c_int = 1;
+pub const QFMT_VFS_V0: ::c_int = 2;
+
+pub const EFD_SEMAPHORE: ::c_int = 0x1;
+
+pub const LOG_NFACILITIES: ::c_int = 24;
+
+pub const SEM_FAILED: *mut ::sem_t = 0 as *mut sem_t;
+
+pub const RB_AUTOBOOT: ::c_int = 0x01234567u32 as i32;
+pub const RB_HALT_SYSTEM: ::c_int = 0xcdef0123u32 as i32;
+pub const RB_ENABLE_CAD: ::c_int = 0x89abcdefu32 as i32;
+pub const RB_DISABLE_CAD: ::c_int = 0x00000000u32 as i32;
+pub const RB_POWER_OFF: ::c_int = 0x4321fedcu32 as i32;
+
+pub const AI_PASSIVE: ::c_int = 0x0001;
+pub const AI_CANONNAME: ::c_int = 0x0002;
+pub const AI_NUMERICHOST: ::c_int = 0x0004;
+pub const AI_V4MAPPED: ::c_int = 0x0008;
+pub const AI_ALL: ::c_int = 0x0010;
+pub const AI_ADDRCONFIG: ::c_int = 0x0020;
+
+pub const AI_NUMERICSERV: ::c_int = 0x0400;
+
+pub const EAI_BADFLAGS: ::c_int = -1;
+pub const EAI_NONAME: ::c_int = -2;
+pub const EAI_AGAIN: ::c_int = -3;
+pub const EAI_FAIL: ::c_int = -4;
+pub const EAI_FAMILY: ::c_int = -6;
+pub const EAI_SOCKTYPE: ::c_int = -7;
+pub const EAI_SERVICE: ::c_int = -8;
+pub const EAI_MEMORY: ::c_int = -10;
+pub const EAI_OVERFLOW: ::c_int = -12;
+
+pub const NI_NUMERICHOST: ::c_int = 1;
+pub const NI_NUMERICSERV: ::c_int = 2;
+pub const NI_NOFQDN: ::c_int = 4;
+pub const NI_NAMEREQD: ::c_int = 8;
+pub const NI_DGRAM: ::c_int = 16;
+
+pub const SYNC_FILE_RANGE_WAIT_BEFORE: ::c_uint = 1;
+pub const SYNC_FILE_RANGE_WRITE: ::c_uint = 2;
+pub const SYNC_FILE_RANGE_WAIT_AFTER: ::c_uint = 4;
+
+pub const EAI_SYSTEM: ::c_int = -11;
+
+pub const MREMAP_MAYMOVE: ::c_int = 1;
+pub const MREMAP_FIXED: ::c_int = 2;
+
+pub const PR_SET_PDEATHSIG: ::c_int = 1;
+pub const PR_GET_PDEATHSIG: ::c_int = 2;
+
+pub const PR_GET_DUMPABLE: ::c_int = 3;
+pub const PR_SET_DUMPABLE: ::c_int = 4;
+
+pub const PR_GET_UNALIGN: ::c_int = 5;
+pub const PR_SET_UNALIGN: ::c_int = 6;
+pub const PR_UNALIGN_NOPRINT: ::c_int = 1;
+pub const PR_UNALIGN_SIGBUS: ::c_int = 2;
+
+pub const PR_GET_KEEPCAPS: ::c_int = 7;
+pub const PR_SET_KEEPCAPS: ::c_int = 8;
+
+pub const PR_GET_FPEMU: ::c_int = 9;
+pub const PR_SET_FPEMU: ::c_int = 10;
+pub const PR_FPEMU_NOPRINT: ::c_int = 1;
+pub const PR_FPEMU_SIGFPE: ::c_int = 2;
+
+pub const PR_GET_FPEXC: ::c_int = 11;
+pub const PR_SET_FPEXC: ::c_int = 12;
+pub const PR_FP_EXC_SW_ENABLE: ::c_int = 0x80;
+pub const PR_FP_EXC_DIV: ::c_int = 0x010000;
+pub const PR_FP_EXC_OVF: ::c_int = 0x020000;
+pub const PR_FP_EXC_UND: ::c_int = 0x040000;
+pub const PR_FP_EXC_RES: ::c_int = 0x080000;
+pub const PR_FP_EXC_INV: ::c_int = 0x100000;
+pub const PR_FP_EXC_DISABLED: ::c_int = 0;
+pub const PR_FP_EXC_NONRECOV: ::c_int = 1;
+pub const PR_FP_EXC_ASYNC: ::c_int = 2;
+pub const PR_FP_EXC_PRECISE: ::c_int = 3;
+
+pub const PR_GET_TIMING: ::c_int = 13;
+pub const PR_SET_TIMING: ::c_int = 14;
+pub const PR_TIMING_STATISTICAL: ::c_int = 0;
+pub const PR_TIMING_TIMESTAMP: ::c_int = 1;
+
+pub const PR_SET_NAME: ::c_int = 15;
+pub const PR_GET_NAME: ::c_int = 16;
+
+pub const PR_GET_ENDIAN: ::c_int = 19;
+pub const PR_SET_ENDIAN: ::c_int = 20;
+pub const PR_ENDIAN_BIG: ::c_int = 0;
+pub const PR_ENDIAN_LITTLE: ::c_int = 1;
+pub const PR_ENDIAN_PPC_LITTLE: ::c_int = 2;
+
+pub const PR_GET_SECCOMP: ::c_int = 21;
+pub const PR_SET_SECCOMP: ::c_int = 22;
+
+pub const PR_CAPBSET_READ: ::c_int = 23;
+pub const PR_CAPBSET_DROP: ::c_int = 24;
+
+pub const PR_GET_TSC: ::c_int = 25;
+pub const PR_SET_TSC: ::c_int = 26;
+pub const PR_TSC_ENABLE: ::c_int = 1;
+pub const PR_TSC_SIGSEGV: ::c_int = 2;
+
+pub const PR_GET_SECUREBITS: ::c_int = 27;
+pub const PR_SET_SECUREBITS: ::c_int = 28;
+
+pub const PR_SET_TIMERSLACK: ::c_int = 29;
+pub const PR_GET_TIMERSLACK: ::c_int = 30;
+
+pub const PR_TASK_PERF_EVENTS_DISABLE: ::c_int = 31;
+pub const PR_TASK_PERF_EVENTS_ENABLE: ::c_int = 32;
+
+pub const PR_MCE_KILL: ::c_int = 33;
+pub const PR_MCE_KILL_CLEAR: ::c_int = 0;
+pub const PR_MCE_KILL_SET: ::c_int = 1;
+
+pub const PR_MCE_KILL_LATE: ::c_int = 0;
+pub const PR_MCE_KILL_EARLY: ::c_int = 1;
+pub const PR_MCE_KILL_DEFAULT: ::c_int = 2;
+
+pub const PR_MCE_KILL_GET: ::c_int = 34;
+
+pub const PR_SET_MM: ::c_int = 35;
+pub const PR_SET_MM_START_CODE: ::c_int = 1;
+pub const PR_SET_MM_END_CODE: ::c_int = 2;
+pub const PR_SET_MM_START_DATA: ::c_int = 3;
+pub const PR_SET_MM_END_DATA: ::c_int = 4;
+pub const PR_SET_MM_START_STACK: ::c_int = 5;
+pub const PR_SET_MM_START_BRK: ::c_int = 6;
+pub const PR_SET_MM_BRK: ::c_int = 7;
+pub const PR_SET_MM_ARG_START: ::c_int = 8;
+pub const PR_SET_MM_ARG_END: ::c_int = 9;
+pub const PR_SET_MM_ENV_START: ::c_int = 10;
+pub const PR_SET_MM_ENV_END: ::c_int = 11;
+pub const PR_SET_MM_AUXV: ::c_int = 12;
+pub const PR_SET_MM_EXE_FILE: ::c_int = 13;
+pub const PR_SET_MM_MAP: ::c_int = 14;
+pub const PR_SET_MM_MAP_SIZE: ::c_int = 15;
+
+pub const PR_SET_PTRACER: ::c_int = 0x59616d61;
+
+pub const PR_SET_CHILD_SUBREAPER: ::c_int = 36;
+pub const PR_GET_CHILD_SUBREAPER: ::c_int = 37;
+
+pub const PR_SET_NO_NEW_PRIVS: ::c_int = 38;
+pub const PR_GET_NO_NEW_PRIVS: ::c_int = 39;
+
+pub const PR_GET_TID_ADDRESS: ::c_int = 40;
+
+pub const PR_SET_THP_DISABLE: ::c_int = 41;
+pub const PR_GET_THP_DISABLE: ::c_int = 42;
+
+
+f! {
+    pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
+        for slot in cpuset.bits.iter_mut() {
+            *slot = 0;
+        }
+    }
+
+    pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () {
+        let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
+        let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
+        cpuset.bits[idx] |= 1 << offset;
+        ()
+    }
+
+    pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () {
+        let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]); // 32, 64 etc
+        let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
+        cpuset.bits[idx] &= !(1 << offset);
+        ()
+    }
+
+    pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool {
+        let size_in_bits = 8 * mem::size_of_val(&cpuset.bits[0]);
+        let (idx, offset) = (cpu / size_in_bits, cpu % size_in_bits);
+        0 != (cpuset.bits[idx] & (1 << offset))
+    }
+
+    pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
+        set1.bits == set2.bits
+    }
+}
+
+extern {
+    pub fn lutimes(file: *const ::c_char, times: *const ::timeval) -> ::c_int;
+
+    pub fn setpwent();
+    pub fn getpwent() -> *mut passwd;
+    pub fn setspent();
+    pub fn endspent();
+    pub fn getspent() -> *mut spwd;
+    pub fn getspnam(__name: *const ::c_char) -> *mut spwd;
+
+    pub fn shm_open(name: *const c_char, oflag: ::c_int,
+                    mode: mode_t) -> ::c_int;
+
+    // System V IPC
+    pub fn shmget(key: ::key_t, size: ::size_t, shmflg: ::c_int) -> ::c_int;
+    pub fn shmat(shmid: ::c_int,
+                 shmaddr: *const ::c_void,
+                 shmflg: ::c_int) -> *mut ::c_void;
+    pub fn shmdt(shmaddr: *const ::c_void) -> ::c_int;
+    pub fn shmctl(shmid: ::c_int,
+                  cmd: ::c_int,
+                  buf: *mut ::shmid_ds) -> ::c_int;
+    pub fn ftok(pathname: *const ::c_char, proj_id: ::c_int) -> ::key_t;
+    pub fn msgctl(msqid: ::c_int, cmd: ::c_int, buf: *mut msqid_ds) -> ::c_int;
+    pub fn msgget(key: ::key_t, msgflg: ::c_int) -> ::c_int;
+    pub fn msgrcv(msqid: ::c_int, msgp: *mut ::c_void, msgsz: ::size_t,
+                  msgtyp: ::c_long, msgflg: ::c_int) -> ::ssize_t;
+    pub fn msgsnd(msqid: ::c_int, msgp: *const ::c_void, msgsz: ::size_t,
+                  msgflg: ::c_int) -> ::c_int;
+
+    pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int)
+                    -> ::c_int;
+    pub fn __errno_location() -> *mut ::c_int;
+
+    pub fn fopen64(filename: *const c_char,
+                   mode: *const c_char) -> *mut ::FILE;
+    pub fn freopen64(filename: *const c_char, mode: *const c_char,
+                     file: *mut ::FILE) -> *mut ::FILE;
+    pub fn tmpfile64() -> *mut ::FILE;
+    pub fn fgetpos64(stream: *mut ::FILE, ptr: *mut fpos64_t) -> ::c_int;
+    pub fn fsetpos64(stream: *mut ::FILE, ptr: *const fpos64_t) -> ::c_int;
+    pub fn fseeko64(stream: *mut ::FILE,
+                    offset: ::off64_t,
+                    whence: ::c_int) -> ::c_int;
+    pub fn ftello64(stream: *mut ::FILE) -> ::off64_t;
+    pub fn readahead(fd: ::c_int, offset: ::off64_t,
+                     count: ::size_t) -> ::ssize_t;
+    pub fn getxattr(path: *const c_char, name: *const c_char,
+                    value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
+    pub fn lgetxattr(path: *const c_char, name: *const c_char,
+                     value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
+    pub fn fgetxattr(filedes: ::c_int, name: *const c_char,
+                     value: *mut ::c_void, size: ::size_t) -> ::ssize_t;
+    pub fn setxattr(path: *const c_char, name: *const c_char,
+                    value: *const ::c_void, size: ::size_t,
+                    flags: ::c_int) -> ::c_int;
+    pub fn lsetxattr(path: *const c_char, name: *const c_char,
+                     value: *const ::c_void, size: ::size_t,
+                     flags: ::c_int) -> ::c_int;
+    pub fn fsetxattr(filedes: ::c_int, name: *const c_char,
+                     value: *const ::c_void, size: ::size_t,
+                     flags: ::c_int) -> ::c_int;
+    pub fn listxattr(path: *const c_char, list: *mut c_char,
+                     size: ::size_t) -> ::ssize_t;
+    pub fn llistxattr(path: *const c_char, list: *mut c_char,
+                      size: ::size_t) -> ::ssize_t;
+    pub fn flistxattr(filedes: ::c_int, list: *mut c_char,
+                      size: ::size_t) -> ::ssize_t;
+    pub fn removexattr(path: *const c_char, name: *const c_char) -> ::c_int;
+    pub fn lremovexattr(path: *const c_char, name: *const c_char) -> ::c_int;
+    pub fn fremovexattr(filedes: ::c_int, name: *const c_char) -> ::c_int;
+    pub fn signalfd(fd: ::c_int,
+                    mask: *const ::sigset_t,
+                    flags: ::c_int) -> ::c_int;
+    pub fn quotactl(cmd: ::c_int,
+                    special: *const ::c_char,
+                    id: ::c_int,
+                    data: *mut ::c_char) -> ::c_int;
+    pub fn mq_open(name: *const ::c_char, oflag: ::c_int, ...) -> ::mqd_t;
+    pub fn mq_close(mqd: ::mqd_t) -> ::c_int;
+    pub fn mq_unlink(name: *const ::c_char) -> ::c_int;
+    pub fn mq_receive(mqd: ::mqd_t,
+                      msg_ptr: *mut ::c_char,
+                      msg_len: ::size_t,
+                      msq_prio: *mut ::c_uint) -> ::ssize_t;
+    pub fn mq_send(mqd: ::mqd_t,
+                   msg_ptr: *const ::c_char,
+                   msg_len: ::size_t,
+                   msq_prio: ::c_uint) -> ::c_int;
+    pub fn mq_getattr(mqd: ::mqd_t, attr: *mut ::mq_attr) -> ::c_int;
+    pub fn mq_setattr(mqd: ::mqd_t,
+                      newattr: *const ::mq_attr,
+                      oldattr: *mut ::mq_attr) -> ::c_int;
+    pub fn epoll_pwait(epfd: ::c_int,
+                       events: *mut ::epoll_event,
+                       maxevents: ::c_int,
+                       timeout: ::c_int,
+                       sigmask: *const ::sigset_t) -> ::c_int;
+    pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
+    pub fn sigtimedwait(set: *const sigset_t,
+                        info: *mut siginfo_t,
+                        timeout: *const ::timespec) -> ::c_int;
+    pub fn sigwaitinfo(set: *const sigset_t,
+                       info: *mut siginfo_t) -> ::c_int;
+    pub fn nl_langinfo_l(item: ::nl_item, locale: ::locale_t) -> *mut ::c_char;
+    pub fn prlimit(pid: ::pid_t, resource: ::c_int, new_limit: *const ::rlimit,
+                   old_limit: *mut ::rlimit) -> ::c_int;
+    pub fn prlimit64(pid: ::pid_t,
+                     resource: ::c_int,
+                     new_limit: *const ::rlimit64,
+                     old_limit: *mut ::rlimit64) -> ::c_int;
+    pub fn reboot(how_to: ::c_int) -> ::c_int;
+    pub fn setfsgid(gid: ::gid_t) -> ::c_int;
+    pub fn setfsuid(uid: ::uid_t) -> ::c_int;
+    pub fn setresgid(rgid: ::gid_t, egid: ::gid_t, sgid: ::gid_t) -> ::c_int;
+    pub fn setresuid(ruid: ::uid_t, euid: ::uid_t, suid: ::uid_t) -> ::c_int;
+
+    // Not available now on Android
+    pub fn mkfifoat(dirfd: ::c_int, pathname: *const ::c_char,
+                    mode: ::mode_t) -> ::c_int;
+    pub fn if_nameindex() -> *mut if_nameindex;
+    pub fn if_freenameindex(ptr: *mut if_nameindex);
+    pub fn sync_file_range(fd: ::c_int, offset: ::off64_t,
+                           nbytes: ::off64_t, flags: ::c_uint) -> ::c_int;
+    pub fn getifaddrs(ifap: *mut *mut ::ifaddrs) -> ::c_int;
+    pub fn freeifaddrs(ifa: *mut ::ifaddrs);
+
+    pub fn mremap(addr: *mut ::c_void,
+                  len: ::size_t,
+                  new_len: ::size_t,
+                  flags: ::c_int,
+                  ...) -> *mut ::c_void;
+
+    pub fn glob(pattern: *const c_char,
+                flags: ::c_int,
+                errfunc: Option<extern fn(epath: *const c_char,
+                                          errno: ::c_int) -> ::c_int>,
+                pglob: *mut ::glob_t) -> ::c_int;
+    pub fn globfree(pglob: *mut ::glob_t);
+
+    pub fn shm_unlink(name: *const ::c_char) -> ::c_int;
+
+    pub fn seekdir(dirp: *mut ::DIR, loc: ::c_long);
+
+    pub fn telldir(dirp: *mut ::DIR) -> ::c_long;
+    pub fn madvise(addr: *mut ::c_void, len: ::size_t, advice: ::c_int)
+                  -> ::c_int;
+
+    pub fn msync(addr: *mut ::c_void, len: ::size_t, flags: ::c_int) -> ::c_int;
+
+    pub fn recvfrom(socket: ::c_int, buf: *mut ::c_void, len: ::size_t,
+                    flags: ::c_int, addr: *mut ::sockaddr,
+                    addrlen: *mut ::socklen_t) -> ::ssize_t;
+    pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
+
+    pub fn bind(socket: ::c_int, address: *const ::sockaddr,
+                address_len: ::socklen_t) -> ::c_int;
+
+    pub fn writev(fd: ::c_int,
+                  iov: *const ::iovec,
+                  iovcnt: ::c_int) -> ::ssize_t;
+    pub fn readv(fd: ::c_int,
+                 iov: *const ::iovec,
+                 iovcnt: ::c_int) -> ::ssize_t;
+
+    pub fn sendmsg(fd: ::c_int,
+                   msg: *const ::msghdr,
+                   flags: ::c_int) -> ::ssize_t;
+    pub fn recvmsg(fd: ::c_int, msg: *mut ::msghdr, flags: ::c_int)
+                   -> ::ssize_t;
+}
+
+cfg_if! {
+    if #[cfg(any(target_arch = "mips",
+            target_arch = "mips64"))] {
+        mod mips;
+        pub use self::mips::*;
+    } else if #[cfg(any(target_arch = "s390x"))] {
+        mod s390x;
+        pub use self::s390x::*;
+    } else {
+        mod other;
+        pub use self::other::*;
+    }
+}
+pub const ABDAY_1: ::nl_item = 0x300;
+pub const ABDAY_2: ::nl_item = 0x301;
+pub const ABDAY_3: ::nl_item = 0x302;
+pub const ABDAY_4: ::nl_item = 0x303;
+pub const ABDAY_5: ::nl_item = 0x304;
+pub const ABDAY_6: ::nl_item = 0x305;
+pub const ABDAY_7: ::nl_item = 0x306;
+
+pub const DAY_1: ::nl_item = 0x307;
+pub const DAY_2: ::nl_item = 0x308;
+pub const DAY_3: ::nl_item = 0x309;
+pub const DAY_4: ::nl_item = 0x30A;
+pub const DAY_5: ::nl_item = 0x30B;
+pub const DAY_6: ::nl_item = 0x30C;
+pub const DAY_7: ::nl_item = 0x30D;
+
+pub const ABMON_1: ::nl_item = 0x30E;
+pub const ABMON_2: ::nl_item = 0x30F;
+pub const ABMON_3: ::nl_item = 0x310;
+pub const ABMON_4: ::nl_item = 0x311;
+pub const ABMON_5: ::nl_item = 0x312;
+pub const ABMON_6: ::nl_item = 0x313;
+pub const ABMON_7: ::nl_item = 0x314;
+pub const ABMON_8: ::nl_item = 0x315;
+pub const ABMON_9: ::nl_item = 0x316;
+pub const ABMON_10: ::nl_item = 0x317;
+pub const ABMON_11: ::nl_item = 0x318;
+pub const ABMON_12: ::nl_item = 0x319;
+
+pub const MON_1: ::nl_item = 0x31A;
+pub const MON_2: ::nl_item = 0x31B;
+pub const MON_3: ::nl_item = 0x31C;
+pub const MON_4: ::nl_item = 0x31D;
+pub const MON_5: ::nl_item = 0x31E;
+pub const MON_6: ::nl_item = 0x31F;
+pub const MON_7: ::nl_item = 0x320;
+pub const MON_8: ::nl_item = 0x321;
+pub const MON_9: ::nl_item = 0x322;
+pub const MON_10: ::nl_item = 0x323;
+pub const MON_11: ::nl_item = 0x324;
+pub const MON_12: ::nl_item = 0x325;
+
+pub const AM_STR: ::nl_item = 0x326;
+pub const PM_STR: ::nl_item = 0x327;
+
+pub const D_T_FMT: ::nl_item = 0x328;
+pub const D_FMT: ::nl_item = 0x329;
+pub const T_FMT: ::nl_item = 0x32A;
+pub const T_FMT_AMPM: ::nl_item = 0x32B;
+
+pub const ERA: ::nl_item = 0x32C;
+pub const ERA_D_FMT: ::nl_item = 0x32E;
+pub const ALT_DIGITS: ::nl_item = 0x32F;
+pub const ERA_D_T_FMT: ::nl_item = 0x330;
+pub const ERA_T_FMT: ::nl_item = 0x331;
+
+pub const CODESET: ::nl_item = 10;
+
+pub const CRNCYSTR: ::nl_item = 0x215;
+
+pub const RADIXCHAR: ::nl_item = 0x100;
+pub const THOUSEP: ::nl_item = 0x101;
+
+pub const NOEXPR: ::nl_item = 0x501;
+pub const YESSTR: ::nl_item = 0x502;
+pub const NOSTR: ::nl_item = 0x503;
+
+pub const FILENAME_MAX: ::c_uint = 4095;
+
+pub const AF_MAX: ::c_int = 39;
+
diff --git a/src/unix/uclibc/other/b32/arm.rs b/src/unix/uclibc/other/b32/arm.rs
new file mode 100644
index 0000000..cbd9e40
--- /dev/null
+++ b/src/unix/uclibc/other/b32/arm.rs
@@ -0,0 +1,202 @@
+pub type c_char = u8;
+pub type wchar_t = u32;
+
+s! {
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_ushort,
+        __pad1: ::c_ushort,
+        pub __seq: ::c_ushort,
+        __pad2: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        __pad1: ::c_uint,
+        __st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad2: ::c_uint,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_ino: ::ino64_t,
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        __unused1: ::c_ulong,
+        pub shm_dtime: ::time_t,
+        __unused2: ::c_ulong,
+        pub shm_ctime: ::time_t,
+        __unused3: ::c_ulong,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        pub msg_stime: ::time_t,
+        __glibc_reserved1: ::c_ulong,
+        pub msg_rtime: ::time_t,
+        __glibc_reserved2: ::c_ulong,
+        pub msg_ctime: ::time_t,
+        __glibc_reserved3: ::c_ulong,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+}
+
+pub const O_DIRECT: ::c_int = 0x10000;
+pub const O_DIRECTORY: ::c_int = 0x4000;
+pub const O_NOFOLLOW: ::c_int = 0x8000;
+
+pub const MAP_LOCKED: ::c_int = 0x02000;
+pub const MAP_NORESERVE: ::c_int = 0x04000;
+
+pub const EDEADLOCK: ::c_int = 35;
+
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_SNDTIMEO: ::c_int = 21;
+
+pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+
+pub const SYS_gettid: ::c_long = 224;
+pub const SYS_perf_event_open: ::c_long = 364;
+
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::c_int = 0x00000800;
+pub const TAB2: ::c_int = 0x00001000;
+pub const TAB3: ::c_int = 0x00001800;
+pub const CR1: ::c_int  = 0x00000200;
+pub const CR2: ::c_int  = 0x00000400;
+pub const CR3: ::c_int  = 0x00000600;
+pub const FF1: ::c_int  = 0x00008000;
+pub const BS1: ::c_int  = 0x00002000;
+pub const VT1: ::c_int  = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const VEOL: usize = 11;
+pub const VEOL2: usize = 16;
+pub const VMIN: usize = 6;
+pub const IEXTEN: ::tcflag_t = 0x00008000;
+pub const TOSTOP: ::tcflag_t = 0x00000100;
+pub const FLUSHO: ::tcflag_t = 0x00001000;
+pub const EXTPROC: ::tcflag_t = 0x00010000;
+pub const TCGETS: ::c_ulong = 0x5401;
+pub const TCSETS: ::c_ulong = 0x5402;
+pub const TCSETSW: ::c_ulong = 0x5403;
+pub const TCSETSF: ::c_ulong = 0x5404;
+pub const TCGETA: ::c_ulong = 0x5405;
+pub const TCSETA: ::c_ulong = 0x5406;
+pub const TCSETAW: ::c_ulong = 0x5407;
+pub const TCSETAF: ::c_ulong = 0x5408;
+pub const TCSBRK: ::c_ulong = 0x5409;
+pub const TCXONC: ::c_ulong = 0x540A;
+pub const TCFLSH: ::c_ulong = 0x540B;
+pub const TIOCINQ: ::c_ulong = 0x541B;
+pub const TIOCGPGRP: ::c_ulong = 0x540F;
+pub const TIOCSPGRP: ::c_ulong = 0x5410;
+pub const TIOCOUTQ: ::c_ulong = 0x5411;
+pub const TIOCGWINSZ: ::c_ulong = 0x5413;
+pub const TIOCSWINSZ: ::c_ulong = 0x5414;
+pub const FIONREAD: ::c_ulong = 0x541B;
diff --git a/src/unix/uclibc/other/b32/mod.rs b/src/unix/uclibc/other/b32/mod.rs
new file mode 100644
index 0000000..0f936c7
--- /dev/null
+++ b/src/unix/uclibc/other/b32/mod.rs
@@ -0,0 +1,284 @@
+//! 32-bit specific definitions for linux-like values
+
+pub type c_long = i32;
+pub type c_ulong = u32;
+pub type clock_t = i32;
+pub type time_t = i32;
+pub type suseconds_t = i32;
+pub type ino_t = u32;
+pub type off_t = i32;
+pub type blkcnt_t = i32;
+pub type __fsword_t = i32;
+
+pub type blksize_t = i32;
+pub type nlink_t = u32;
+
+s! {
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        __pad1: ::c_short,
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad2: ::c_short,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused4: ::c_long,
+        __unused5: ::c_long,
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u32; 9]
+    }
+
+    pub struct sigset_t {
+        __val: [::c_ulong; 32],
+    }
+
+    pub struct sysinfo {
+        pub uptime: ::c_long,
+        pub loads: [::c_ulong; 3],
+        pub totalram: ::c_ulong,
+        pub freeram: ::c_ulong,
+        pub sharedram: ::c_ulong,
+        pub bufferram: ::c_ulong,
+        pub totalswap: ::c_ulong,
+        pub freeswap: ::c_ulong,
+        pub procs: ::c_ushort,
+        pub pad: ::c_ushort,
+        pub totalhigh: ::c_ulong,
+        pub freehigh: ::c_ulong,
+        pub mem_unit: ::c_uint,
+        pub _f: [::c_char; 8],
+    }
+}
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 6;
+
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const EPROTONOSUPPORT: ::c_int = 93;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+
+pub const SOL_SOCKET: ::c_int = 1;
+
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+
+pub const PTRACE_DETACH: ::c_uint = 17;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 24;
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 32;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const PTRACE_GETFPREGS: ::c_uint = 14;
+pub const PTRACE_SETFPREGS: ::c_uint = 15;
+pub const PTRACE_GETREGS: ::c_uint = 12;
+pub const PTRACE_SETREGS: ::c_uint = 13;
+
+cfg_if! {
+    if #[cfg(target_arch = "x86")] {
+        mod x86;
+        pub use self::x86::*;
+    } else if #[cfg(target_arch = "arm")] {
+        mod arm;
+        pub use self::arm::*;
+    } else if #[cfg(target_arch = "powerpc")] {
+        mod powerpc;
+        pub use self::powerpc::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/uclibc/other/b32/powerpc.rs b/src/unix/uclibc/other/b32/powerpc.rs
new file mode 100644
index 0000000..13e9d36
--- /dev/null
+++ b/src/unix/uclibc/other/b32/powerpc.rs
@@ -0,0 +1,206 @@
+pub type c_char = u8;
+pub type wchar_t = i32;
+
+s! {
+    pub struct ipc_perm {
+        __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::mode_t,
+        __seq: ::uint32_t,
+        __pad1: ::uint32_t,
+        __glibc_reserved1: ::uint64_t,
+        __glibc_reserved2: ::uint64_t,
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino64_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad2: ::c_ushort,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        __glibc_reserved1: ::c_uint,
+        pub shm_atime: ::time_t,
+        __glibc_reserved2: ::c_uint,
+        pub shm_dtime: ::time_t,
+        __glibc_reserved3: ::c_uint,
+        pub shm_ctime: ::time_t,
+        __glibc_reserved4: ::c_uint,
+        pub shm_segsz: ::size_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __glibc_reserved5: ::c_ulong,
+        __glibc_reserved6: ::c_ulong,
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        __glibc_reserved1: ::c_uint,
+        pub msg_stime: ::time_t,
+        __glibc_reserved2: ::c_uint,
+        pub msg_rtime: ::time_t,
+        __glibc_reserved3: ::c_uint,
+        pub msg_ctime: ::time_t,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+}
+
+pub const O_DIRECT: ::c_int = 0x20000;
+pub const O_DIRECTORY: ::c_int = 0x4000;
+pub const O_NOFOLLOW: ::c_int = 0x8000;
+
+pub const MAP_LOCKED: ::c_int = 0x00080;
+pub const MAP_NORESERVE: ::c_int = 0x00040;
+
+pub const EDEADLOCK: ::c_int = 58;
+
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_RCVLOWAT: ::c_int = 16;
+pub const SO_SNDLOWAT: ::c_int = 17;
+pub const SO_RCVTIMEO: ::c_int = 18;
+pub const SO_SNDTIMEO: ::c_int = 19;
+pub const SO_PASSCRED: ::c_int = 20;
+pub const SO_PEERCRED: ::c_int = 21;
+
+pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONBIO: ::c_ulong = 0x8004667e;
+
+pub const SYS_gettid: ::c_long = 207;
+pub const SYS_perf_event_open: ::c_long = 319;
+
+pub const MCL_CURRENT: ::c_int = 0x2000;
+pub const MCL_FUTURE: ::c_int = 0x4000;
+
+pub const SIGSTKSZ: ::size_t = 0x4000;
+pub const CBAUD: ::tcflag_t = 0xff;
+pub const TAB1: ::c_int = 0x400;
+pub const TAB2: ::c_int = 0x800;
+pub const TAB3: ::c_int = 0xc00;
+pub const CR1: ::c_int  = 0x1000;
+pub const CR2: ::c_int  = 0x2000;
+pub const CR3: ::c_int  = 0x3000;
+pub const FF1: ::c_int  = 0x4000;
+pub const BS1: ::c_int  = 0x8000;
+pub const VT1: ::c_int  = 0x10000;
+pub const VWERASE: usize = 0xa;
+pub const VREPRINT: usize = 0xb;
+pub const VSUSP: usize = 0xc;
+pub const VSTART: usize = 0xd;
+pub const VSTOP: usize = 0xe;
+pub const VDISCARD: usize = 0x10;
+pub const VTIME: usize = 0x7;
+pub const IXON: ::tcflag_t = 0x200;
+pub const IXOFF: ::tcflag_t = 0x400;
+pub const ONLCR: ::tcflag_t = 0x2;
+pub const CSIZE: ::tcflag_t = 0x300;
+pub const CS6: ::tcflag_t = 0x100;
+pub const CS7: ::tcflag_t = 0x200;
+pub const CS8: ::tcflag_t = 0x300;
+pub const CSTOPB: ::tcflag_t = 0x400;
+pub const CREAD: ::tcflag_t = 0x800;
+pub const PARENB: ::tcflag_t = 0x1000;
+pub const PARODD: ::tcflag_t = 0x2000;
+pub const HUPCL: ::tcflag_t = 0x4000;
+pub const CLOCAL: ::tcflag_t = 0x8000;
+pub const ECHOKE: ::tcflag_t = 0x1;
+pub const ECHOE: ::tcflag_t = 0x2;
+pub const ECHOK: ::tcflag_t = 0x4;
+pub const ECHONL: ::tcflag_t = 0x10;
+pub const ECHOPRT: ::tcflag_t = 0x20;
+pub const ECHOCTL: ::tcflag_t = 0x40;
+pub const ISIG: ::tcflag_t = 0x80;
+pub const ICANON: ::tcflag_t = 0x100;
+pub const PENDIN: ::tcflag_t = 0x20000000;
+pub const NOFLSH: ::tcflag_t = 0x80000000;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const CBAUDEX: ::speed_t = 0o000020;
+pub const B57600: ::speed_t = 0o0020;
+pub const B115200: ::speed_t = 0o0021;
+pub const B230400: ::speed_t = 0o0022;
+pub const B460800: ::speed_t = 0o0023;
+pub const B500000: ::speed_t = 0o0024;
+pub const B576000: ::speed_t = 0o0025;
+pub const B921600: ::speed_t = 0o0026;
+pub const B1000000: ::speed_t = 0o0027;
+pub const B1152000: ::speed_t = 0o0030;
+pub const B1500000: ::speed_t = 0o0031;
+pub const B2000000: ::speed_t = 0o0032;
+pub const B2500000: ::speed_t = 0o0033;
+pub const B3000000: ::speed_t = 0o0034;
+pub const B3500000: ::speed_t = 0o0035;
+pub const B4000000: ::speed_t = 0o0036;
+
+pub const VEOL: usize = 6;
+pub const VEOL2: usize = 8;
+pub const VMIN: usize = 5;
+pub const IEXTEN: ::tcflag_t = 0x400;
+pub const TOSTOP: ::tcflag_t = 0x400000;
+pub const FLUSHO: ::tcflag_t = 0x800000;
+pub const EXTPROC: ::tcflag_t = 0x10000000;
+pub const TCGETS: ::c_ulong = 0x403c7413;
+pub const TCSETS: ::c_ulong = 0x803c7414;
+pub const TCSETSW: ::c_ulong = 0x803c7415;
+pub const TCSETSF: ::c_ulong = 0x803c7416;
+pub const TCGETA: ::c_ulong = 0x40147417;
+pub const TCSETA: ::c_ulong = 0x80147418;
+pub const TCSETAW: ::c_ulong = 0x80147419;
+pub const TCSETAF: ::c_ulong = 0x8014741c;
+pub const TCSBRK: ::c_ulong = 0x2000741d;
+pub const TCXONC: ::c_ulong = 0x2000741e;
+pub const TCFLSH: ::c_ulong = 0x2000741f;
+pub const TIOCINQ: ::c_ulong = 0x4004667f;
+pub const TIOCGPGRP: ::c_ulong = 0x40047477;
+pub const TIOCSPGRP: ::c_ulong = 0x80047476;
+pub const TIOCOUTQ: ::c_ulong = 0x40047473;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const FIONREAD: ::c_ulong = 0x4004667f;
diff --git a/src/unix/uclibc/other/b32/x86.rs b/src/unix/uclibc/other/b32/x86.rs
new file mode 100644
index 0000000..68218ff
--- /dev/null
+++ b/src/unix/uclibc/other/b32/x86.rs
@@ -0,0 +1,253 @@
+pub type c_char = i8;
+pub type wchar_t = i32;
+pub type greg_t = i32;
+
+s! {
+    pub struct _libc_fpreg {
+        pub significand: [u16; 4],
+        pub exponent: u16,
+    }
+
+    pub struct _libc_fpstate {
+        pub cw: ::c_ulong,
+        pub sw: ::c_ulong,
+        pub tag: ::c_ulong,
+        pub ipoff: ::c_ulong,
+        pub cssel: ::c_ulong,
+        pub dataoff: ::c_ulong,
+        pub datasel: ::c_ulong,
+        pub _st: [_libc_fpreg; 8],
+        pub status: ::c_ulong,
+    }
+
+    pub struct mcontext_t {
+        pub gregs: [greg_t; 19],
+        pub fpregs: *mut _libc_fpstate,
+        pub oldmask: ::c_ulong,
+        pub cr2: ::c_ulong,
+    }
+
+    pub struct ucontext_t {
+        pub uc_flags: ::c_ulong,
+        pub uc_link: *mut ucontext_t,
+        pub uc_stack: ::stack_t,
+        pub uc_mcontext: mcontext_t,
+        pub uc_sigmask: ::sigset_t,
+        __private: [u8; 112],
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_ushort,
+        __pad1: ::c_ushort,
+        pub __seq: ::c_ushort,
+        __pad2: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        __pad1: ::c_uint,
+        __st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad2: ::c_uint,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_ino: ::ino64_t,
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        __unused1: ::c_ulong,
+        pub shm_dtime: ::time_t,
+        __unused2: ::c_ulong,
+        pub shm_ctime: ::time_t,
+        __unused3: ::c_ulong,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        pub msg_stime: ::time_t,
+        __glibc_reserved1: ::c_ulong,
+        pub msg_rtime: ::time_t,
+        __glibc_reserved2: ::c_ulong,
+        pub msg_ctime: ::time_t,
+        __glibc_reserved3: ::c_ulong,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+}
+
+pub const O_DIRECT: ::c_int = 0x4000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+
+pub const MAP_LOCKED: ::c_int = 0x02000;
+pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_32BIT: ::c_int = 0x0040;
+
+pub const EDEADLOCK: ::c_int = 35;
+
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_PASSCRED: ::c_int = 16;
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_SNDTIMEO: ::c_int = 21;
+
+pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+
+pub const SYS_gettid: ::c_long = 224;
+pub const SYS_perf_event_open: ::c_long = 336;
+
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::c_int = 0x00000800;
+pub const TAB2: ::c_int = 0x00001000;
+pub const TAB3: ::c_int = 0x00001800;
+pub const CR1: ::c_int  = 0x00000200;
+pub const CR2: ::c_int  = 0x00000400;
+pub const CR3: ::c_int  = 0x00000600;
+pub const FF1: ::c_int  = 0x00008000;
+pub const BS1: ::c_int  = 0x00002000;
+pub const VT1: ::c_int  = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const VEOL: usize = 11;
+pub const VEOL2: usize = 16;
+pub const VMIN: usize = 6;
+pub const IEXTEN: ::tcflag_t = 0x00008000;
+pub const TOSTOP: ::tcflag_t = 0x00000100;
+pub const FLUSHO: ::tcflag_t = 0x00001000;
+pub const EXTPROC: ::tcflag_t = 0x00010000;
+pub const TCGETS: ::c_ulong = 0x5401;
+pub const TCSETS: ::c_ulong = 0x5402;
+pub const TCSETSW: ::c_ulong = 0x5403;
+pub const TCSETSF: ::c_ulong = 0x5404;
+pub const TCGETA: ::c_ulong = 0x5405;
+pub const TCSETA: ::c_ulong = 0x5406;
+pub const TCSETAW: ::c_ulong = 0x5407;
+pub const TCSETAF: ::c_ulong = 0x5408;
+pub const TCSBRK: ::c_ulong = 0x5409;
+pub const TCXONC: ::c_ulong = 0x540A;
+pub const TCFLSH: ::c_ulong = 0x540B;
+pub const TIOCINQ: ::c_ulong = 0x541B;
+pub const TIOCGPGRP: ::c_ulong = 0x540F;
+pub const TIOCSPGRP: ::c_ulong = 0x5410;
+pub const TIOCOUTQ: ::c_ulong = 0x5411;
+pub const TIOCGWINSZ: ::c_ulong = 0x5413;
+pub const TIOCSWINSZ: ::c_ulong = 0x5414;
+pub const FIONREAD: ::c_ulong = 0x541B;
+
+extern {
+    pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;
+    pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;
+    pub fn makecontext(ucp: *mut ucontext_t,
+                       func:  extern fn (),
+                       argc: ::c_int, ...);
+    pub fn swapcontext(uocp: *mut ucontext_t,
+                       ucp: *const ucontext_t) -> ::c_int;
+}
diff --git a/src/unix/uclibc/other/b64/aarch64.rs b/src/unix/uclibc/other/b64/aarch64.rs
new file mode 100644
index 0000000..26898c5
--- /dev/null
+++ b/src/unix/uclibc/other/b64/aarch64.rs
@@ -0,0 +1,446 @@
+//! AArch64-specific definitions for 64-bit linux-like values
+
+pub type c_char = u8;
+pub type wchar_t = u32;
+pub type nlink_t = u32;
+pub type blksize_t = i32;
+pub type suseconds_t = i64;
+
+s! {
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad1: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        __pad2: ::c_int,
+        pub st_blocks: ::blkcnt_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused: [::c_int; 2],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad1: ::dev_t,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        __pad2: ::c_int,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused: [::c_int; 2],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u64; 8]
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_uint,
+        pub __seq: ::c_ushort,
+        __pad1: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+}
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 6;
+
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const EPROTONOSUPPORT: ::c_int = 93;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+
+pub const SOL_SOCKET: ::c_int = 1;
+
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_PASSCRED: ::c_int = 16;
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_SNDTIMEO: ::c_int = 21;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_BINDTODEVICE: ::c_int = 25;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_TIMESTAMP: ::c_int = 29;
+pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PEERSEC: ::c_int = 31;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+pub const SO_MARK: ::c_int = 36;
+pub const SO_TIMESTAMPING: ::c_int = 37;
+pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
+pub const SO_RXQ_OVFL: ::c_int = 40;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_PEEK_OFF: ::c_int = 42;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_BUSY_POLL: ::c_int = 46;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+
+pub const PTRACE_DETACH: ::c_uint = 17;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 8;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 48;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 8;
+
+pub const O_DIRECT: ::c_int = 0x10000;
+pub const O_DIRECTORY: ::c_int = 0x4000;
+pub const O_NOFOLLOW: ::c_int = 0x8000;
+
+pub const MAP_LOCKED: ::c_int = 0x02000;
+pub const MAP_NORESERVE: ::c_int = 0x04000;
+
+pub const EDEADLOCK: ::c_int = 35;
+
+pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+
+pub const SYS_gettid: ::c_long = 178;
+pub const SYS_perf_event_open: ::c_long = 241;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 16384;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::c_int = 0x00000800;
+pub const TAB2: ::c_int = 0x00001000;
+pub const TAB3: ::c_int = 0x00001800;
+pub const CR1: ::c_int  = 0x00000200;
+pub const CR2: ::c_int  = 0x00000400;
+pub const CR3: ::c_int  = 0x00000600;
+pub const FF1: ::c_int  = 0x00008000;
+pub const BS1: ::c_int  = 0x00002000;
+pub const VT1: ::c_int  = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const VEOL: usize = 11;
+pub const VEOL2: usize = 16;
+pub const VMIN: usize = 6;
+pub const IEXTEN: ::tcflag_t = 0x00008000;
+pub const TOSTOP: ::tcflag_t = 0x00000100;
+pub const FLUSHO: ::tcflag_t = 0x00001000;
+pub const EXTPROC: ::tcflag_t = 0x00010000;
+pub const TCGETS: ::c_ulong = 0x5401;
+pub const TCSETS: ::c_ulong = 0x5402;
+pub const TCSETSW: ::c_ulong = 0x5403;
+pub const TCSETSF: ::c_ulong = 0x5404;
+pub const TCGETA: ::c_ulong = 0x5405;
+pub const TCSETA: ::c_ulong = 0x5406;
+pub const TCSETAW: ::c_ulong = 0x5407;
+pub const TCSETAF: ::c_ulong = 0x5408;
+pub const TCSBRK: ::c_ulong = 0x5409;
+pub const TCXONC: ::c_ulong = 0x540A;
+pub const TCFLSH: ::c_ulong = 0x540B;
+pub const TIOCINQ: ::c_ulong = 0x541B;
+pub const TIOCGPGRP: ::c_ulong = 0x540F;
+pub const TIOCSPGRP: ::c_ulong = 0x5410;
+pub const TIOCOUTQ: ::c_ulong = 0x5411;
+pub const TIOCGWINSZ: ::c_ulong = 0x5413;
+pub const TIOCSWINSZ: ::c_ulong = 0x5414;
+pub const FIONREAD: ::c_ulong = 0x541B;
diff --git a/src/unix/uclibc/other/b64/mod.rs b/src/unix/uclibc/other/b64/mod.rs
new file mode 100644
index 0000000..2fcec73
--- /dev/null
+++ b/src/unix/uclibc/other/b64/mod.rs
@@ -0,0 +1,67 @@
+//! 64-bit specific definitions for linux-like values
+
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type clock_t = i64;
+pub type time_t = i64;
+pub type ino_t = u64;
+pub type off_t = i64;
+pub type blkcnt_t = i64;
+pub type __fsword_t = ::c_long;
+
+s! {
+    pub struct sigset_t {
+        __val: [::c_ulong; 16],
+    }
+
+    pub struct sysinfo {
+        pub uptime: ::c_long,
+        pub loads: [::c_ulong; 3],
+        pub totalram: ::c_ulong,
+        pub freeram: ::c_ulong,
+        pub sharedram: ::c_ulong,
+        pub bufferram: ::c_ulong,
+        pub totalswap: ::c_ulong,
+        pub freeswap: ::c_ulong,
+        pub procs: ::c_ushort,
+        pub pad: ::c_ushort,
+        pub totalhigh: ::c_ulong,
+        pub freehigh: ::c_ulong,
+        pub mem_unit: ::c_uint,
+        pub _f: [::c_char; 0],
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        pub msg_stime: ::time_t,
+        pub msg_rtime: ::time_t,
+        pub msg_ctime: ::time_t,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+}
+
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+
+cfg_if! {
+    if #[cfg(target_arch = "aarch64")] {
+        mod aarch64;
+        pub use self::aarch64::*;
+    } else if #[cfg(any(target_arch = "powerpc64"))] {
+        mod powerpc64;
+        pub use self::powerpc64::*;
+    } else if #[cfg(any(target_arch = "sparc64"))] {
+        mod sparc64;
+        pub use self::sparc64::*;
+    } else if #[cfg(any(target_arch = "x86_64"))] {
+        mod x86_64;
+        pub use self::x86_64::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/uclibc/other/b64/powerpc64.rs b/src/unix/uclibc/other/b64/powerpc64.rs
new file mode 100644
index 0000000..1257023
--- /dev/null
+++ b/src/unix/uclibc/other/b64/powerpc64.rs
@@ -0,0 +1,445 @@
+//! PowerPC64-specific definitions for 64-bit linux-like values
+
+pub type c_char = u8;
+pub type wchar_t = i32;
+pub type nlink_t = u64;
+pub type blksize_t = i64;
+pub type suseconds_t = i64;
+
+s! {
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        __pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused: [::c_long; 3],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino64_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        __pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __reserved: [::c_long; 3],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u64; 7]
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::mode_t,
+        pub __seq: ::uint32_t,
+        __pad1: ::uint32_t,
+        __unused1: ::uint64_t,
+        __unused2: ::c_ulong,
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_segsz: ::size_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+}
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 6;
+
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const EPROTONOSUPPORT: ::c_int = 93;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+
+pub const SOL_SOCKET: ::c_int = 1;
+
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_PASSCRED: ::c_int = 20;
+pub const SO_PEERCRED: ::c_int = 21;
+pub const SO_RCVLOWAT: ::c_int = 16;
+pub const SO_SNDLOWAT: ::c_int = 17;
+pub const SO_RCVTIMEO: ::c_int = 18;
+pub const SO_SNDTIMEO: ::c_int = 19;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_BINDTODEVICE: ::c_int = 25;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_TIMESTAMP: ::c_int = 29;
+pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PEERSEC: ::c_int = 31;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+pub const SO_MARK: ::c_int = 36;
+pub const SO_TIMESTAMPING: ::c_int = 37;
+pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
+pub const SO_RXQ_OVFL: ::c_int = 40;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_PEEK_OFF: ::c_int = 42;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_BUSY_POLL: ::c_int = 46;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+
+pub const PTRACE_DETACH: ::c_uint = 17;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const O_DIRECTORY: ::c_int = 0x4000;
+pub const O_NOFOLLOW: ::c_int = 0x8000;
+pub const O_DIRECT: ::c_int = 0x20000;
+
+pub const MAP_LOCKED: ::c_int = 0x00080;
+pub const MAP_NORESERVE: ::c_int = 0x00040;
+
+pub const EDEADLOCK: ::c_int = 58;
+
+pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONBIO: ::c_ulong = 0x8004667e;
+
+pub const SYS_gettid: ::c_long = 207;
+pub const SYS_perf_event_open: ::c_long = 319;
+
+pub const MCL_CURRENT: ::c_int = 0x2000;
+pub const MCL_FUTURE: ::c_int = 0x4000;
+
+pub const SIGSTKSZ: ::size_t = 0x4000;
+pub const CBAUD: ::tcflag_t = 0xff;
+pub const TAB1: ::c_int = 0x400;
+pub const TAB2: ::c_int = 0x800;
+pub const TAB3: ::c_int = 0xc00;
+pub const CR1: ::c_int  = 0x1000;
+pub const CR2: ::c_int  = 0x2000;
+pub const CR3: ::c_int  = 0x3000;
+pub const FF1: ::c_int  = 0x4000;
+pub const BS1: ::c_int  = 0x8000;
+pub const VT1: ::c_int  = 0x10000;
+pub const VWERASE: usize = 0xa;
+pub const VREPRINT: usize = 0xb;
+pub const VSUSP: usize = 0xc;
+pub const VSTART: usize = 0xd;
+pub const VSTOP: usize = 0xe;
+pub const VDISCARD: usize = 0x10;
+pub const VTIME: usize = 0x7;
+pub const IXON: ::tcflag_t = 0x200;
+pub const IXOFF: ::tcflag_t = 0x400;
+pub const ONLCR: ::tcflag_t = 0x2;
+pub const CSIZE: ::tcflag_t = 0x300;
+pub const CS6: ::tcflag_t = 0x100;
+pub const CS7: ::tcflag_t = 0x200;
+pub const CS8: ::tcflag_t = 0x300;
+pub const CSTOPB: ::tcflag_t = 0x400;
+pub const CREAD: ::tcflag_t = 0x800;
+pub const PARENB: ::tcflag_t = 0x1000;
+pub const PARODD: ::tcflag_t = 0x2000;
+pub const HUPCL: ::tcflag_t = 0x4000;
+pub const CLOCAL: ::tcflag_t = 0x8000;
+pub const ECHOKE: ::tcflag_t = 0x1;
+pub const ECHOE: ::tcflag_t = 0x2;
+pub const ECHOK: ::tcflag_t = 0x4;
+pub const ECHONL: ::tcflag_t = 0x10;
+pub const ECHOPRT: ::tcflag_t = 0x20;
+pub const ECHOCTL: ::tcflag_t = 0x40;
+pub const ISIG: ::tcflag_t = 0x80;
+pub const ICANON: ::tcflag_t = 0x100;
+pub const PENDIN: ::tcflag_t = 0x20000000;
+pub const NOFLSH: ::tcflag_t = 0x80000000;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const CBAUDEX: ::speed_t = 0o000020;
+pub const B57600: ::speed_t = 0o0020;
+pub const B115200: ::speed_t = 0o0021;
+pub const B230400: ::speed_t = 0o0022;
+pub const B460800: ::speed_t = 0o0023;
+pub const B500000: ::speed_t = 0o0024;
+pub const B576000: ::speed_t = 0o0025;
+pub const B921600: ::speed_t = 0o0026;
+pub const B1000000: ::speed_t = 0o0027;
+pub const B1152000: ::speed_t = 0o0030;
+pub const B1500000: ::speed_t = 0o0031;
+pub const B2000000: ::speed_t = 0o0032;
+pub const B2500000: ::speed_t = 0o0033;
+pub const B3000000: ::speed_t = 0o0034;
+pub const B3500000: ::speed_t = 0o0035;
+pub const B4000000: ::speed_t = 0o0036;
+
+pub const VEOL: usize = 6;
+pub const VEOL2: usize = 8;
+pub const VMIN: usize = 5;
+pub const IEXTEN: ::tcflag_t = 0x400;
+pub const TOSTOP: ::tcflag_t = 0x400000;
+pub const FLUSHO: ::tcflag_t = 0x800000;
+pub const EXTPROC: ::tcflag_t = 0x10000000;
+pub const TCGETS: ::c_ulong = 0x403c7413;
+pub const TCSETS: ::c_ulong = 0x803c7414;
+pub const TCSETSW: ::c_ulong = 0x803c7415;
+pub const TCSETSF: ::c_ulong = 0x803c7416;
+pub const TCGETA: ::c_ulong = 0x40147417;
+pub const TCSETA: ::c_ulong = 0x80147418;
+pub const TCSETAW: ::c_ulong = 0x80147419;
+pub const TCSETAF: ::c_ulong = 0x8014741c;
+pub const TCSBRK: ::c_ulong = 0x2000741d;
+pub const TCXONC: ::c_ulong = 0x2000741e;
+pub const TCFLSH: ::c_ulong = 0x2000741f;
+pub const TIOCINQ: ::c_ulong = 0x4004667f;
+pub const TIOCGPGRP: ::c_ulong = 0x40047477;
+pub const TIOCSPGRP: ::c_ulong = 0x80047476;
+pub const TIOCOUTQ: ::c_ulong = 0x40047473;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const FIONREAD: ::c_ulong = 0x4004667f;
diff --git a/src/unix/uclibc/other/b64/sparc64.rs b/src/unix/uclibc/other/b64/sparc64.rs
new file mode 100644
index 0000000..a1ac4f5
--- /dev/null
+++ b/src/unix/uclibc/other/b64/sparc64.rs
@@ -0,0 +1,369 @@
+//! SPARC64-specific definitions for 64-bit linux-like values
+
+pub type c_char = i8;
+pub type wchar_t = i32;
+pub type nlink_t = u32;
+pub type blksize_t = i64;
+pub type suseconds_t = i32;
+
+s! {
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        __pad0: u64,
+        pub st_ino: ::ino_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad1: u64,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused: [::c_long; 2],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        __pad0: u64,
+        pub st_ino: ::ino64_t,
+        pub st_mode: ::mode_t,
+        pub st_nlink: ::nlink_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        pub st_rdev: ::dev_t,
+        __pad2: ::c_int,
+        pub st_size: ::off64_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __reserved: [::c_long; 2],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u64; 7]
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::mode_t,
+        __pad0: u16,
+        pub __seq: ::c_ushort,
+        __unused1: ::c_ulonglong,
+        __unused2: ::c_ulonglong,
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_segsz: ::size_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __reserved1: ::c_ulong,
+        __reserved2: ::c_ulong
+    }
+}
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x40047464;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x80047465;
+
+pub const RLIMIT_NOFILE: ::c_int = 6;
+pub const RLIMIT_NPROC: ::c_int = 7;
+
+pub const O_APPEND: ::c_int = 0x8;
+pub const O_CREAT: ::c_int = 0x200;
+pub const O_EXCL: ::c_int = 0x800;
+pub const O_NOCTTY: ::c_int = 0x8000;
+pub const O_NONBLOCK: ::c_int = 0x4000;
+pub const O_SYNC: ::c_int = 0x802000;
+pub const O_RSYNC: ::c_int = 0x802000;
+pub const O_DSYNC: ::c_int = 0x2000;
+pub const O_FSYNC: ::c_int = 0x802000;
+
+pub const MAP_GROWSDOWN: ::c_int = 0x0200;
+
+pub const EDEADLK: ::c_int = 78;
+pub const ENAMETOOLONG: ::c_int = 63;
+pub const ENOLCK: ::c_int = 79;
+pub const ENOSYS: ::c_int = 90;
+pub const ENOTEMPTY: ::c_int = 66;
+pub const ELOOP: ::c_int = 62;
+pub const ENOMSG: ::c_int = 75;
+pub const EIDRM: ::c_int = 77;
+pub const ECHRNG: ::c_int = 94;
+pub const EL2NSYNC: ::c_int = 95;
+pub const EL3HLT: ::c_int = 96;
+pub const EL3RST: ::c_int = 97;
+pub const ELNRNG: ::c_int = 98;
+pub const EUNATCH: ::c_int = 99;
+pub const ENOCSI: ::c_int = 100;
+pub const EL2HLT: ::c_int = 101;
+pub const EBADE: ::c_int = 102;
+pub const EBADR: ::c_int = 103;
+pub const EXFULL: ::c_int = 104;
+pub const ENOANO: ::c_int = 105;
+pub const EBADRQC: ::c_int = 106;
+pub const EBADSLT: ::c_int = 107;
+pub const EMULTIHOP: ::c_int = 87;
+pub const EOVERFLOW: ::c_int = 92;
+pub const ENOTUNIQ: ::c_int = 115;
+pub const EBADFD: ::c_int = 93;
+pub const EBADMSG: ::c_int = 76;
+pub const EREMCHG: ::c_int = 89;
+pub const ELIBACC: ::c_int = 114;
+pub const ELIBBAD: ::c_int = 112;
+pub const ELIBSCN: ::c_int = 124;
+pub const ELIBMAX: ::c_int = 123;
+pub const ELIBEXEC: ::c_int = 110;
+pub const EILSEQ: ::c_int = 122;
+pub const ERESTART: ::c_int = 116;
+pub const ESTRPIPE: ::c_int = 91;
+pub const EUSERS: ::c_int = 68;
+pub const ENOTSOCK: ::c_int = 38;
+pub const EDESTADDRREQ: ::c_int = 39;
+pub const EMSGSIZE: ::c_int = 40;
+pub const EPROTOTYPE: ::c_int = 41;
+pub const ENOPROTOOPT: ::c_int = 42;
+pub const EPROTONOSUPPORT: ::c_int = 43;
+pub const ESOCKTNOSUPPORT: ::c_int = 44;
+pub const EOPNOTSUPP: ::c_int = 45;
+pub const EPFNOSUPPORT: ::c_int = 46;
+pub const EAFNOSUPPORT: ::c_int = 47;
+pub const EADDRINUSE: ::c_int = 48;
+pub const EADDRNOTAVAIL: ::c_int = 49;
+pub const ENETDOWN: ::c_int = 50;
+pub const ENETUNREACH: ::c_int = 51;
+pub const ENETRESET: ::c_int = 52;
+pub const ECONNABORTED: ::c_int = 53;
+pub const ECONNRESET: ::c_int = 54;
+pub const ENOBUFS: ::c_int = 55;
+pub const EISCONN: ::c_int = 56;
+pub const ENOTCONN: ::c_int = 57;
+pub const ESHUTDOWN: ::c_int = 58;
+pub const ETOOMANYREFS: ::c_int = 59;
+pub const ETIMEDOUT: ::c_int = 60;
+pub const ECONNREFUSED: ::c_int = 61;
+pub const EHOSTDOWN: ::c_int = 64;
+pub const EHOSTUNREACH: ::c_int = 65;
+pub const EALREADY: ::c_int = 37;
+pub const EINPROGRESS: ::c_int = 36;
+pub const ESTALE: ::c_int = 70;
+pub const EDQUOT: ::c_int = 69;
+pub const ENOMEDIUM: ::c_int = 125;
+pub const EMEDIUMTYPE: ::c_int = 126;
+pub const ECANCELED: ::c_int = 127;
+pub const ENOKEY: ::c_int = 128;
+pub const EKEYEXPIRED: ::c_int = 129;
+pub const EKEYREVOKED: ::c_int = 130;
+pub const EKEYREJECTED: ::c_int = 131;
+pub const EOWNERDEAD: ::c_int = 132;
+pub const ENOTRECOVERABLE: ::c_int = 133;
+pub const EHWPOISON: ::c_int = 135;
+pub const ERFKILL: ::c_int = 134;
+
+pub const SOL_SOCKET: ::c_int = 0xffff;
+
+pub const SO_REUSEADDR: ::c_int = 4;
+pub const SO_TYPE: ::c_int = 0x1008;
+pub const SO_ERROR: ::c_int = 0x1007;
+pub const SO_DONTROUTE: ::c_int = 16;
+pub const SO_BROADCAST: ::c_int = 32;
+pub const SO_SNDBUF: ::c_int = 0x1001;
+pub const SO_RCVBUF: ::c_int = 0x1002;
+pub const SO_KEEPALIVE: ::c_int = 8;
+pub const SO_OOBINLINE: ::c_int = 0x100;
+pub const SO_LINGER: ::c_int = 128;
+pub const SO_REUSEPORT: ::c_int = 0x200;
+pub const SO_ACCEPTCONN: ::c_int = 0x8000;
+
+pub const SA_ONSTACK: ::c_int = 1;
+pub const SA_SIGINFO: ::c_int = 0x200;
+pub const SA_NOCLDWAIT: ::c_int = 0x100;
+
+pub const SIGCHLD: ::c_int = 20;
+pub const SIGBUS: ::c_int = 10;
+pub const SIGUSR1: ::c_int = 30;
+pub const SIGUSR2: ::c_int = 31;
+pub const SIGCONT: ::c_int = 19;
+pub const SIGSTOP: ::c_int = 17;
+pub const SIGTSTP: ::c_int = 18;
+pub const SIGURG: ::c_int = 16;
+pub const SIGIO: ::c_int = 23;
+pub const SIGSYS: ::c_int = 12;
+pub const SIGPOLL: ::c_int = 23;
+pub const SIGPWR: ::c_int = 29;
+pub const SIG_SETMASK: ::c_int = 4;
+pub const SIG_BLOCK: ::c_int = 1;
+pub const SIG_UNBLOCK: ::c_int = 2;
+
+pub const POLLWRNORM: ::c_short = 4;
+pub const POLLWRBAND: ::c_short = 0x100;
+
+pub const O_ASYNC: ::c_int = 0x40;
+pub const O_NDELAY: ::c_int = 0x4004;
+
+pub const PTRACE_DETACH: ::c_uint = 11;
+
+pub const EFD_NONBLOCK: ::c_int = 0x4000;
+
+pub const F_GETLK: ::c_int = 7;
+pub const F_GETOWN: ::c_int = 5;
+pub const F_SETOWN: ::c_int = 6;
+pub const F_SETLK: ::c_int = 8;
+pub const F_SETLKW: ::c_int = 9;
+
+pub const SFD_NONBLOCK: ::c_int = 0x4000;
+
+pub const TIOCEXCL: ::c_ulong = 0x2000740d;
+pub const TIOCNXCL: ::c_ulong = 0x2000740e;
+pub const TIOCSCTTY: ::c_ulong = 0x20007484;
+pub const TIOCSTI: ::c_ulong = 0x80017472;
+pub const TIOCMGET: ::c_ulong = 0x4004746a;
+pub const TIOCMBIS: ::c_ulong = 0x8004746c;
+pub const TIOCMBIC: ::c_ulong = 0x8004746b;
+pub const TIOCMSET: ::c_ulong = 0x8004746d;
+pub const TIOCCONS: ::c_ulong = 0x20007424;
+
+pub const SFD_CLOEXEC: ::c_int = 0x400000;
+
+pub const NCCS: usize = 17;
+pub const O_TRUNC: ::c_int = 0x400;
+
+pub const O_CLOEXEC: ::c_int = 0x400000;
+
+pub const EBFONT: ::c_int = 109;
+pub const ENOSTR: ::c_int = 72;
+pub const ENODATA: ::c_int = 111;
+pub const ETIME: ::c_int = 73;
+pub const ENOSR: ::c_int = 74;
+pub const ENONET: ::c_int = 80;
+pub const ENOPKG: ::c_int = 113;
+pub const EREMOTE: ::c_int = 71;
+pub const ENOLINK: ::c_int = 82;
+pub const EADV: ::c_int = 83;
+pub const ESRMNT: ::c_int = 84;
+pub const ECOMM: ::c_int = 85;
+pub const EPROTO: ::c_int = 86;
+pub const EDOTDOT: ::c_int = 88;
+
+pub const SA_NODEFER: ::c_int = 0x20;
+pub const SA_RESETHAND: ::c_int = 0x4;
+pub const SA_RESTART: ::c_int = 0x2;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000008;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x400000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x400000;
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const O_DIRECTORY: ::c_int = 0o200000;
+pub const O_NOFOLLOW: ::c_int = 0o400000;
+pub const O_DIRECT: ::c_int = 0x100000;
+
+pub const MAP_LOCKED: ::c_int = 0x0100;
+pub const MAP_NORESERVE: ::c_int = 0x00040;
+
+pub const EDEADLOCK: ::c_int = 108;
+
+pub const SO_PEERCRED: ::c_int = 0x40;
+pub const SO_RCVLOWAT: ::c_int = 0x800;
+pub const SO_SNDLOWAT: ::c_int = 0x1000;
+pub const SO_RCVTIMEO: ::c_int = 0x2000;
+pub const SO_SNDTIMEO: ::c_int = 0x4000;
+
+pub const FIOCLEX: ::c_ulong = 0x20006601;
+pub const FIONBIO: ::c_ulong = 0x8004667e;
+
+pub const SYS_gettid: ::c_long = 143;
+pub const SYS_perf_event_open: ::c_long = 327;
+
+pub const MCL_CURRENT: ::c_int = 0x2000;
+pub const MCL_FUTURE: ::c_int = 0x4000;
+
+pub const SIGSTKSZ: ::size_t = 16384;
+pub const CBAUD: ::tcflag_t = 0x0000100f;
+pub const TAB1: ::c_int = 0x800;
+pub const TAB2: ::c_int = 0x1000;
+pub const TAB3: ::c_int = 0x1800;
+pub const CR1: ::c_int  = 0x200;
+pub const CR2: ::c_int  = 0x400;
+pub const CR3: ::c_int  = 0x600;
+pub const FF1: ::c_int  = 0x8000;
+pub const BS1: ::c_int  = 0x2000;
+pub const VT1: ::c_int  = 0x4000;
+pub const VWERASE: usize = 0xe;
+pub const VREPRINT: usize = 0xc;
+pub const VSUSP: usize = 0xa;
+pub const VSTART: usize = 0x8;
+pub const VSTOP: usize = 0x9;
+pub const VDISCARD: usize = 0xd;
+pub const VTIME: usize = 0x5;
+pub const IXON: ::tcflag_t = 0x400;
+pub const IXOFF: ::tcflag_t = 0x1000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x30;
+pub const CS6: ::tcflag_t = 0x10;
+pub const CS7: ::tcflag_t = 0x20;
+pub const CS8: ::tcflag_t = 0x30;
+pub const CSTOPB: ::tcflag_t = 0x40;
+pub const CREAD: ::tcflag_t = 0x80;
+pub const PARENB: ::tcflag_t = 0x100;
+pub const PARODD: ::tcflag_t = 0x200;
+pub const HUPCL: ::tcflag_t = 0x400;
+pub const CLOCAL: ::tcflag_t = 0x800;
+pub const ECHOKE: ::tcflag_t = 0x800;
+pub const ECHOE: ::tcflag_t = 0x10;
+pub const ECHOK: ::tcflag_t = 0x20;
+pub const ECHONL: ::tcflag_t = 0x40;
+pub const ECHOPRT: ::tcflag_t = 0x400;
+pub const ECHOCTL: ::tcflag_t = 0x200;
+pub const ISIG: ::tcflag_t = 0x1;
+pub const ICANON: ::tcflag_t = 0x2;
+pub const PENDIN: ::tcflag_t = 0x4000;
+pub const NOFLSH: ::tcflag_t = 0x80;
+
+pub const VEOL: usize = 5;
+pub const VEOL2: usize = 6;
+pub const VMIN: usize = 4;
+pub const IEXTEN: ::tcflag_t = 0x8000;
+pub const TOSTOP: ::tcflag_t = 0x100;
+pub const FLUSHO: ::tcflag_t = 0x2000;
+pub const EXTPROC: ::tcflag_t = 0x10000;
+pub const TCGETS: ::c_ulong = 0x40245408;
+pub const TCSETS: ::c_ulong = 0x80245409;
+pub const TCSETSW: ::c_ulong = 0x8024540a;
+pub const TCSETSF: ::c_ulong = 0x8024540b;
+pub const TCGETA: ::c_ulong = 0x40125401;
+pub const TCSETA: ::c_ulong = 0x80125402;
+pub const TCSETAW: ::c_ulong = 0x80125403;
+pub const TCSETAF: ::c_ulong = 0x80125404;
+pub const TCSBRK: ::c_ulong = 0x20005405;
+pub const TCXONC: ::c_ulong = 0x20005406;
+pub const TCFLSH: ::c_ulong = 0x20005407;
+pub const TIOCINQ: ::c_ulong = 0x4004667f;
+pub const TIOCGPGRP: ::c_ulong = 0x40047483;
+pub const TIOCSPGRP: ::c_ulong = 0x80047482;
+pub const TIOCOUTQ: ::c_ulong = 0x40047473;
+pub const TIOCGWINSZ: ::c_ulong = 0x40087468;
+pub const TIOCSWINSZ: ::c_ulong = 0x80087467;
+pub const FIONREAD: ::c_ulong = 0x4004667f;
diff --git a/src/unix/uclibc/other/b64/x86_64.rs b/src/unix/uclibc/other/b64/x86_64.rs
new file mode 100644
index 0000000..b5f2a82
--- /dev/null
+++ b/src/unix/uclibc/other/b64/x86_64.rs
@@ -0,0 +1,514 @@
+//! x86_64-specific definitions for 64-bit linux-like values
+
+pub type c_char = i8;
+pub type wchar_t = i32;
+pub type nlink_t = u64;
+pub type blksize_t = i64;
+pub type greg_t = i64;
+pub type suseconds_t = i64;
+
+s! {
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        __pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __unused: [::c_long; 3],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino64_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        __pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        __reserved: [::c_long; 3],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [u64; 7]
+    }
+
+    pub struct _libc_fpxreg {
+        pub significand: [u16; 4],
+        pub exponent: u16,
+        __private: [u16; 3],
+    }
+
+    pub struct _libc_xmmreg {
+        pub element: [u32; 4],
+    }
+
+    pub struct _libc_fpstate {
+        pub cwd: u16,
+        pub swd: u16,
+        pub ftw: u16,
+        pub fop: u16,
+        pub rip: u64,
+        pub rdp: u64,
+        pub mxcsr: u32,
+        pub mxcr_mask: u32,
+        pub _st: [_libc_fpxreg; 8],
+        pub _xmm: [_libc_xmmreg; 16],
+        __private: [u64; 12],
+    }
+
+    pub struct mcontext_t {
+        pub gregs: [greg_t; 23],
+        pub fpregs: *mut _libc_fpstate,
+        __private: [u64; 8],
+    }
+
+    pub struct ucontext_t {
+        pub uc_flags: ::c_ulong,
+        pub uc_link: *mut ucontext_t,
+        pub uc_stack: ::stack_t,
+        pub uc_mcontext: mcontext_t,
+        pub uc_sigmask: ::sigset_t,
+        __private: [u8; 512],
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::c_ushort,
+        __pad1: ::c_ushort,
+        pub __seq: ::c_ushort,
+        __pad2: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+}
+
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_NPROC: ::c_int = 6;
+
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+
+pub const EDEADLK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const EPROTONOSUPPORT: ::c_int = 93;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNRESET: ::c_int = 104;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ENOTCONN: ::c_int = 107;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+
+pub const SOL_SOCKET: ::c_int = 1;
+
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_SNDBUFFORCE: ::c_int = 32;
+pub const SO_RCVBUFFORCE: ::c_int = 33;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_NO_CHECK: ::c_int = 11;
+pub const SO_PRIORITY: ::c_int = 12;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_BSDCOMPAT: ::c_int = 14;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_PASSCRED: ::c_int = 16;
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_SNDTIMEO: ::c_int = 21;
+pub const SO_SECURITY_AUTHENTICATION: ::c_int = 22;
+pub const SO_SECURITY_ENCRYPTION_TRANSPORT: ::c_int = 23;
+pub const SO_SECURITY_ENCRYPTION_NETWORK: ::c_int = 24;
+pub const SO_BINDTODEVICE: ::c_int = 25;
+pub const SO_ATTACH_FILTER: ::c_int = 26;
+pub const SO_DETACH_FILTER: ::c_int = 27;
+pub const SO_GET_FILTER: ::c_int = SO_ATTACH_FILTER;
+pub const SO_PEERNAME: ::c_int = 28;
+pub const SO_TIMESTAMP: ::c_int = 29;
+pub const SCM_TIMESTAMP: ::c_int = SO_TIMESTAMP;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+pub const SO_PEERSEC: ::c_int = 31;
+pub const SO_PASSSEC: ::c_int = 34;
+pub const SO_TIMESTAMPNS: ::c_int = 35;
+pub const SCM_TIMESTAMPNS: ::c_int = SO_TIMESTAMPNS;
+pub const SO_MARK: ::c_int = 36;
+pub const SO_TIMESTAMPING: ::c_int = 37;
+pub const SCM_TIMESTAMPING: ::c_int = SO_TIMESTAMPING;
+pub const SO_PROTOCOL: ::c_int = 38;
+pub const SO_DOMAIN: ::c_int = 39;
+pub const SO_RXQ_OVFL: ::c_int = 40;
+pub const SO_WIFI_STATUS: ::c_int = 41;
+pub const SCM_WIFI_STATUS: ::c_int = SO_WIFI_STATUS;
+pub const SO_PEEK_OFF: ::c_int = 42;
+pub const SO_NOFCS: ::c_int = 43;
+pub const SO_LOCK_FILTER: ::c_int = 44;
+pub const SO_SELECT_ERR_QUEUE: ::c_int = 45;
+pub const SO_BUSY_POLL: ::c_int = 46;
+pub const SO_MAX_PACING_RATE: ::c_int = 47;
+pub const SO_BPF_EXTENSIONS: ::c_int = 48;
+pub const SO_INCOMING_CPU: ::c_int = 49;
+pub const SO_ATTACH_BPF: ::c_int = 50;
+pub const SO_DETACH_BPF: ::c_int = SO_DETACH_FILTER;
+
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 0x00000004;
+pub const SA_NOCLDWAIT: ::c_int = 0x00000002;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+
+pub const POLLWRNORM: ::c_short = 0x100;
+pub const POLLWRBAND: ::c_short = 0x200;
+
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+
+pub const PTRACE_DETACH: ::c_uint = 17;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+
+pub const O_DIRECT: ::c_int = 0x4000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+
+pub const MAP_LOCKED: ::c_int = 0x02000;
+pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_32BIT: ::c_int = 0x0040;
+
+pub const EDEADLOCK: ::c_int = 35;
+
+pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+
+pub const PTRACE_GETFPREGS: ::c_uint = 14;
+pub const PTRACE_SETFPREGS: ::c_uint = 15;
+pub const PTRACE_GETFPXREGS: ::c_uint = 18;
+pub const PTRACE_SETFPXREGS: ::c_uint = 19;
+pub const PTRACE_GETREGS: ::c_uint = 12;
+pub const PTRACE_SETREGS: ::c_uint = 13;
+pub const PTRACE_O_EXITKILL: ::c_uint = 1048576;
+pub const PTRACE_O_TRACECLONE: ::c_uint = 8;
+pub const PTRACE_O_TRACEEXEC: ::c_uint = 16;
+pub const PTRACE_O_TRACEEXIT: ::c_uint = 64;
+pub const PTRACE_O_TRACEFORK: ::c_uint = 2;
+pub const PTRACE_O_TRACESYSGOOD: ::c_uint = 1;
+pub const PTRACE_O_TRACEVFORK: ::c_uint = 4;
+pub const PTRACE_O_TRACEVFORKDONE: ::c_uint = 32;
+pub const PTRACE_O_TRACESECCOMP: ::c_uint = 128;
+pub const PTRACE_O_SUSPEND_SECCOMP: ::c_uint = 2097152;
+pub const PTRACE_PEEKSIGINFO_SHARED: ::c_uint = 1;
+
+pub const SYS_gettid: ::c_long = 186;
+pub const SYS_perf_event_open: ::c_long = 298;
+
+pub const MCL_CURRENT: ::c_int = 0x0001;
+pub const MCL_FUTURE: ::c_int = 0x0002;
+
+pub const SIGSTKSZ: ::size_t = 8192;
+pub const CBAUD: ::tcflag_t = 0o0010017;
+pub const TAB1: ::c_int = 0x00000800;
+pub const TAB2: ::c_int = 0x00001000;
+pub const TAB3: ::c_int = 0x00001800;
+pub const CR1: ::c_int  = 0x00000200;
+pub const CR2: ::c_int  = 0x00000400;
+pub const CR3: ::c_int  = 0x00000600;
+pub const FF1: ::c_int  = 0x00008000;
+pub const BS1: ::c_int  = 0x00002000;
+pub const VT1: ::c_int  = 0x00004000;
+pub const VWERASE: usize = 14;
+pub const VREPRINT: usize = 12;
+pub const VSUSP: usize = 10;
+pub const VSTART: usize = 8;
+pub const VSTOP: usize = 9;
+pub const VDISCARD: usize = 13;
+pub const VTIME: usize = 5;
+pub const IXON: ::tcflag_t = 0x00000400;
+pub const IXOFF: ::tcflag_t = 0x00001000;
+pub const ONLCR: ::tcflag_t = 0x4;
+pub const CSIZE: ::tcflag_t = 0x00000030;
+pub const CS6: ::tcflag_t = 0x00000010;
+pub const CS7: ::tcflag_t = 0x00000020;
+pub const CS8: ::tcflag_t = 0x00000030;
+pub const CSTOPB: ::tcflag_t = 0x00000040;
+pub const CREAD: ::tcflag_t = 0x00000080;
+pub const PARENB: ::tcflag_t = 0x00000100;
+pub const PARODD: ::tcflag_t = 0x00000200;
+pub const HUPCL: ::tcflag_t = 0x00000400;
+pub const CLOCAL: ::tcflag_t = 0x00000800;
+pub const ECHOKE: ::tcflag_t = 0x00000800;
+pub const ECHOE: ::tcflag_t = 0x00000010;
+pub const ECHOK: ::tcflag_t = 0x00000020;
+pub const ECHONL: ::tcflag_t = 0x00000040;
+pub const ECHOPRT: ::tcflag_t = 0x00000400;
+pub const ECHOCTL: ::tcflag_t = 0x00000200;
+pub const ISIG: ::tcflag_t = 0x00000001;
+pub const ICANON: ::tcflag_t = 0x00000002;
+pub const PENDIN: ::tcflag_t = 0x00004000;
+pub const NOFLSH: ::tcflag_t = 0x00000080;
+
+pub const B0: ::speed_t = 0o000000;
+pub const B50: ::speed_t = 0o000001;
+pub const B75: ::speed_t = 0o000002;
+pub const B110: ::speed_t = 0o000003;
+pub const B134: ::speed_t = 0o000004;
+pub const B150: ::speed_t = 0o000005;
+pub const B200: ::speed_t = 0o000006;
+pub const B300: ::speed_t = 0o000007;
+pub const B600: ::speed_t = 0o000010;
+pub const B1200: ::speed_t = 0o000011;
+pub const B1800: ::speed_t = 0o000012;
+pub const B2400: ::speed_t = 0o000013;
+pub const B4800: ::speed_t = 0o000014;
+pub const B9600: ::speed_t = 0o000015;
+pub const B19200: ::speed_t = 0o000016;
+pub const B38400: ::speed_t = 0o000017;
+pub const EXTA: ::speed_t = B19200;
+pub const EXTB: ::speed_t = B38400;
+pub const B57600: ::speed_t = 0o010001;
+pub const B115200: ::speed_t = 0o010002;
+pub const B230400: ::speed_t = 0o010003;
+pub const B460800: ::speed_t = 0o010004;
+pub const B500000: ::speed_t = 0o010005;
+pub const B576000: ::speed_t = 0o010006;
+pub const B921600: ::speed_t = 0o010007;
+pub const B1000000: ::speed_t = 0o010010;
+pub const B1152000: ::speed_t = 0o010011;
+pub const B1500000: ::speed_t = 0o010012;
+pub const B2000000: ::speed_t = 0o010013;
+pub const B2500000: ::speed_t = 0o010014;
+pub const B3000000: ::speed_t = 0o010015;
+pub const B3500000: ::speed_t = 0o010016;
+pub const B4000000: ::speed_t = 0o010017;
+
+pub const VEOL: usize = 11;
+pub const VEOL2: usize = 16;
+pub const VMIN: usize = 6;
+pub const IEXTEN: ::tcflag_t = 0x00008000;
+pub const TOSTOP: ::tcflag_t = 0x00000100;
+pub const FLUSHO: ::tcflag_t = 0x00001000;
+pub const EXTPROC: ::tcflag_t = 0x00010000;
+pub const TCGETS: ::c_ulong = 0x5401;
+pub const TCSETS: ::c_ulong = 0x5402;
+pub const TCSETSW: ::c_ulong = 0x5403;
+pub const TCSETSF: ::c_ulong = 0x5404;
+pub const TCGETA: ::c_ulong = 0x5405;
+pub const TCSETA: ::c_ulong = 0x5406;
+pub const TCSETAW: ::c_ulong = 0x5407;
+pub const TCSETAF: ::c_ulong = 0x5408;
+pub const TCSBRK: ::c_ulong = 0x5409;
+pub const TCXONC: ::c_ulong = 0x540A;
+pub const TCFLSH: ::c_ulong = 0x540B;
+pub const TIOCINQ: ::c_ulong = 0x541B;
+pub const TIOCGPGRP: ::c_ulong = 0x540F;
+pub const TIOCSPGRP: ::c_ulong = 0x5410;
+pub const TIOCOUTQ: ::c_ulong = 0x5411;
+pub const TIOCGWINSZ: ::c_ulong = 0x5413;
+pub const TIOCSWINSZ: ::c_ulong = 0x5414;
+pub const FIONREAD: ::c_ulong = 0x541B;
+
+extern {
+    pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;
+    pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;
+    pub fn makecontext(ucp: *mut ucontext_t,
+                       func:  extern fn (),
+                       argc: ::c_int, ...);
+    pub fn swapcontext(uocp: *mut ucontext_t,
+                       ucp: *const ucontext_t) -> ::c_int;
+}
diff --git a/src/unix/uclibc/other/mod.rs b/src/unix/uclibc/other/mod.rs
new file mode 100644
index 0000000..ad5cc69
--- /dev/null
+++ b/src/unix/uclibc/other/mod.rs
@@ -0,0 +1,522 @@
+pub type fsblkcnt_t = ::c_ulong;
+pub type fsfilcnt_t = ::c_ulong;
+pub type rlim_t = c_ulong;
+pub type __priority_which_t = ::c_uint;
+
+s! {
+    pub struct aiocb {
+        pub aio_fildes: ::c_int,
+        pub aio_lio_opcode: ::c_int,
+        pub aio_reqprio: ::c_int,
+        pub aio_buf: *mut ::c_void,
+        pub aio_nbytes: ::size_t,
+        pub aio_sigevent: ::sigevent,
+        __next_prio: *mut aiocb,
+        __abs_prio: ::c_int,
+        __policy: ::c_int,
+        __error_code: ::c_int,
+        __return_value: ::ssize_t,
+        pub aio_offset: off_t,
+        #[cfg(target_pointer_width = "32")]
+        __unused1: [::c_char; 4],
+        __glibc_reserved: [::c_char; 32]
+    }
+
+    pub struct __exit_status {
+        pub e_termination: ::c_short,
+        pub e_exit: ::c_short,
+    }
+
+    pub struct __timeval {
+        pub tv_sec: ::int32_t,
+        pub tv_usec: ::int32_t,
+    }
+
+    pub struct utmpx {
+        pub ut_type: ::c_short,
+        pub ut_pid: ::pid_t,
+        pub ut_line: [::c_char; __UT_LINESIZE],
+        pub ut_id: [::c_char; 4],
+
+        pub ut_user: [::c_char; __UT_NAMESIZE],
+        pub ut_host: [::c_char; __UT_HOSTSIZE],
+        pub ut_exit: __exit_status,
+
+        #[cfg(any(target_arch = "aarch64",
+                  target_arch = "sparc64",
+                  target_pointer_width = "32"))]
+        pub ut_session: ::c_long,
+        #[cfg(any(target_arch = "aarch64",
+                  target_arch = "sparc64",
+                  target_pointer_width = "32"))]
+        pub ut_tv: ::timeval,
+
+        #[cfg(not(any(target_arch = "aarch64",
+                      target_arch = "sparc64",
+                      target_pointer_width = "32")))]
+        pub ut_session: ::int32_t,
+        #[cfg(not(any(target_arch = "aarch64",
+                      target_arch = "sparc64",
+                      target_pointer_width = "32")))]
+        pub ut_tv: __timeval,
+
+        pub ut_addr_v6: [::int32_t; 4],
+        __glibc_reserved: [::c_char; 20],
+    }
+
+    pub struct sigaction {
+        pub sa_sigaction: ::sighandler_t,
+        pub sa_mask: ::sigset_t,
+        #[cfg(target_arch = "sparc64")]
+        __reserved0: ::c_int,
+        pub sa_flags: ::c_int,
+        _restorer: *mut ::c_void,
+    }
+
+    pub struct stack_t {
+        pub ss_sp: *mut ::c_void,
+        pub ss_flags: ::c_int,
+        pub ss_size: ::size_t
+    }
+
+    pub struct siginfo_t {
+        pub si_signo: ::c_int,
+        pub si_errno: ::c_int,
+        pub si_code: ::c_int,
+        pub _pad: [::c_int; 29],
+        _align: [usize; 0],
+    }
+
+    pub struct glob64_t {
+        pub gl_pathc: ::size_t,
+        pub gl_pathv: *mut *mut ::c_char,
+        pub gl_offs: ::size_t,
+        pub gl_flags: ::c_int,
+
+        __unused1: *mut ::c_void,
+        __unused2: *mut ::c_void,
+        __unused3: *mut ::c_void,
+        __unused4: *mut ::c_void,
+        __unused5: *mut ::c_void,
+    }
+
+    pub struct ucred {
+        pub pid: ::pid_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+    }
+
+    pub struct statfs {
+        pub f_type: __fsword_t,
+        pub f_bsize: __fsword_t,
+        pub f_blocks: ::fsblkcnt_t,
+        pub f_bfree: ::fsblkcnt_t,
+        pub f_bavail: ::fsblkcnt_t,
+
+        pub f_files: ::fsfilcnt_t,
+        pub f_ffree: ::fsfilcnt_t,
+        pub f_fsid: ::fsid_t,
+
+        pub f_namelen: __fsword_t,
+        pub f_frsize: __fsword_t,
+        f_spare: [__fsword_t; 5],
+    }
+
+    pub struct msghdr {
+        pub msg_name: *mut ::c_void,
+        pub msg_namelen: ::socklen_t,
+        pub msg_iov: *mut ::iovec,
+        pub msg_iovlen: ::size_t,
+        pub msg_control: *mut ::c_void,
+        pub msg_controllen: ::size_t,
+        pub msg_flags: ::c_int,
+    }
+
+    pub struct cmsghdr {
+        pub cmsg_len: ::size_t,
+        pub cmsg_level: ::c_int,
+        pub cmsg_type: ::c_int,
+    }
+
+    pub struct termios {
+        pub c_iflag: ::tcflag_t,
+        pub c_oflag: ::tcflag_t,
+        pub c_cflag: ::tcflag_t,
+        pub c_lflag: ::tcflag_t,
+        pub c_line: ::cc_t,
+        pub c_cc: [::cc_t; ::NCCS],
+        #[cfg(not(target_arch = "sparc64"))]
+        pub c_ispeed: ::speed_t,
+        #[cfg(not(target_arch = "sparc64"))]
+        pub c_ospeed: ::speed_t,
+    }
+
+    pub struct flock {
+        pub l_type: ::c_short,
+        pub l_whence: ::c_short,
+        pub l_start: ::off_t,
+        pub l_len: ::off_t,
+        pub l_pid: ::pid_t,
+    }
+
+    // FIXME this is actually a union
+    pub struct sem_t {
+        #[cfg(target_pointer_width = "32")]
+        __size: [::c_char; 16],
+        #[cfg(target_pointer_width = "64")]
+        __size: [::c_char; 32],
+        __align: [::c_long; 0],
+    }
+}
+
+pub const __UT_LINESIZE: usize = 32;
+pub const __UT_NAMESIZE: usize = 32;
+pub const __UT_HOSTSIZE: usize = 256;
+pub const EMPTY: ::c_short = 0;
+pub const RUN_LVL: ::c_short = 1;
+pub const BOOT_TIME: ::c_short = 2;
+pub const NEW_TIME: ::c_short = 3;
+pub const OLD_TIME: ::c_short = 4;
+pub const INIT_PROCESS: ::c_short = 5;
+pub const LOGIN_PROCESS: ::c_short = 6;
+pub const USER_PROCESS: ::c_short = 7;
+pub const DEAD_PROCESS: ::c_short = 8;
+pub const ACCOUNTING: ::c_short = 9;
+
+pub const RLIMIT_RSS: ::c_int = 5;
+pub const RLIMIT_AS: ::c_int = 9;
+pub const RLIMIT_MEMLOCK: ::c_int = 8;
+pub const RLIM_INFINITY: ::rlim_t = !0;
+pub const RLIMIT_RTTIME: ::c_int = 15;
+pub const RLIMIT_NLIMITS: ::c_int = 16;
+
+pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
+
+pub const SOL_RXRPC: ::c_int = 272;
+pub const SOL_PPPOL2TP: ::c_int = 273;
+pub const SOL_BLUETOOTH: ::c_int = 274;
+pub const SOL_PNPIPE: ::c_int = 275;
+pub const SOL_RDS: ::c_int = 276;
+pub const SOL_IUCV: ::c_int = 277;
+pub const SOL_CAIF: ::c_int = 278;
+pub const SOL_ALG: ::c_int = 279;
+pub const SOL_NFC: ::c_int = 280;
+
+pub const MSG_TRYHARD: ::c_int = 4;
+
+pub const LC_PAPER: ::c_int = 7;
+pub const LC_NAME: ::c_int = 8;
+pub const LC_ADDRESS: ::c_int = 9;
+pub const LC_TELEPHONE: ::c_int = 10;
+pub const LC_MEASUREMENT: ::c_int = 11;
+pub const LC_IDENTIFICATION: ::c_int = 12;
+pub const LC_PAPER_MASK: ::c_int = (1 << LC_PAPER);
+pub const LC_NAME_MASK: ::c_int = (1 << LC_NAME);
+pub const LC_ADDRESS_MASK: ::c_int = (1 << LC_ADDRESS);
+pub const LC_TELEPHONE_MASK: ::c_int = (1 << LC_TELEPHONE);
+pub const LC_MEASUREMENT_MASK: ::c_int = (1 << LC_MEASUREMENT);
+pub const LC_IDENTIFICATION_MASK: ::c_int = (1 << LC_IDENTIFICATION);
+pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
+                               | ::LC_NUMERIC_MASK
+                               | ::LC_TIME_MASK
+                               | ::LC_COLLATE_MASK
+                               | ::LC_MONETARY_MASK
+                               | ::LC_MESSAGES_MASK
+                               | LC_PAPER_MASK
+                               | LC_NAME_MASK
+                               | LC_ADDRESS_MASK
+                               | LC_TELEPHONE_MASK
+                               | LC_MEASUREMENT_MASK
+                               | LC_IDENTIFICATION_MASK;
+
+pub const MAP_ANON: ::c_int = 0x0020;
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+
+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
+
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_SEQPACKET: ::c_int = 5;
+
+pub const TCP_COOKIE_TRANSACTIONS: ::c_int = 15;
+pub const TCP_THIN_LINEAR_TIMEOUTS: ::c_int = 16;
+pub const TCP_THIN_DUPACK: ::c_int = 17;
+pub const TCP_USER_TIMEOUT: ::c_int = 18;
+pub const TCP_REPAIR: ::c_int = 19;
+pub const TCP_REPAIR_QUEUE: ::c_int = 20;
+pub const TCP_QUEUE_SEQ: ::c_int = 21;
+pub const TCP_REPAIR_OPTIONS: ::c_int = 22;
+pub const TCP_FASTOPEN: ::c_int = 23;
+pub const TCP_TIMESTAMP: ::c_int = 24;
+
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
+
+pub const SIGEV_THREAD_ID: ::c_int = 4;
+
+pub const POLLRDNORM: ::c_short = 0x040;
+pub const POLLRDBAND: ::c_short = 0x080;
+
+pub const FALLOC_FL_KEEP_SIZE: ::c_int = 0x01;
+pub const FALLOC_FL_PUNCH_HOLE: ::c_int = 0x02;
+
+pub const BUFSIZ: ::c_uint = 8192;
+pub const TMP_MAX: ::c_uint = 238328;
+pub const FOPEN_MAX: ::c_uint = 16;
+pub const POSIX_FADV_DONTNEED: ::c_int = 4;
+pub const POSIX_FADV_NOREUSE: ::c_int = 5;
+pub const POSIX_MADV_DONTNEED: ::c_int = 4;
+pub const _SC_2_C_VERSION: ::c_int = 96;
+pub const O_ACCMODE: ::c_int = 3;
+pub const ST_RELATIME: ::c_ulong = 4096;
+pub const NI_MAXHOST: ::socklen_t = 1025;
+
+pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5;
+pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff;
+pub const CODA_SUPER_MAGIC: ::c_long = 0x73757245;
+pub const CRAMFS_MAGIC: ::c_long = 0x28cd3d45;
+pub const EFS_SUPER_MAGIC: ::c_long = 0x00414a53;
+pub const EXT2_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const EXT3_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const EXT4_SUPER_MAGIC: ::c_long = 0x0000ef53;
+pub const HPFS_SUPER_MAGIC: ::c_long = 0xf995e849;
+pub const HUGETLBFS_MAGIC: ::c_long = 0x958458f6;
+pub const ISOFS_SUPER_MAGIC: ::c_long = 0x00009660;
+pub const JFFS2_SUPER_MAGIC: ::c_long = 0x000072b6;
+pub const MINIX_SUPER_MAGIC: ::c_long = 0x0000137f;
+pub const MINIX_SUPER_MAGIC2: ::c_long = 0x0000138f;
+pub const MINIX2_SUPER_MAGIC: ::c_long = 0x00002468;
+pub const MINIX2_SUPER_MAGIC2: ::c_long = 0x00002478;
+pub const MSDOS_SUPER_MAGIC: ::c_long = 0x00004d44;
+pub const NCP_SUPER_MAGIC: ::c_long = 0x0000564c;
+pub const NFS_SUPER_MAGIC: ::c_long = 0x00006969;
+pub const OPENPROM_SUPER_MAGIC: ::c_long = 0x00009fa1;
+pub const PROC_SUPER_MAGIC: ::c_long = 0x00009fa0;
+pub const QNX4_SUPER_MAGIC: ::c_long = 0x0000002f;
+pub const REISERFS_SUPER_MAGIC: ::c_long = 0x52654973;
+pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b;
+pub const TMPFS_MAGIC: ::c_long = 0x01021994;
+pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
+
+pub const VEOF: usize = 4;
+pub const IUTF8: ::tcflag_t = 0x00004000;
+
+pub const CPU_SETSIZE: ::c_int = 0x400;
+
+pub const QFMT_VFS_V1: ::c_int = 4;
+
+pub const PTRACE_TRACEME: ::c_uint = 0;
+pub const PTRACE_PEEKTEXT: ::c_uint = 1;
+pub const PTRACE_PEEKDATA: ::c_uint = 2;
+pub const PTRACE_PEEKUSER: ::c_uint = 3;
+pub const PTRACE_POKETEXT: ::c_uint = 4;
+pub const PTRACE_POKEDATA: ::c_uint = 5;
+pub const PTRACE_POKEUSER: ::c_uint = 6;
+pub const PTRACE_CONT: ::c_uint = 7;
+pub const PTRACE_KILL: ::c_uint = 8;
+pub const PTRACE_SINGLESTEP: ::c_uint = 9;
+pub const PTRACE_ATTACH: ::c_uint = 16;
+pub const PTRACE_SYSCALL: ::c_uint = 24;
+pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200;
+pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201;
+pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202;
+pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203;
+pub const PTRACE_GETREGSET: ::c_uint = 0x4204;
+pub const PTRACE_SETREGSET: ::c_uint = 0x4205;
+pub const PTRACE_SEIZE: ::c_uint = 0x4206;
+pub const PTRACE_INTERRUPT: ::c_uint = 0x4207;
+pub const PTRACE_LISTEN: ::c_uint = 0x4208;
+pub const PTRACE_PEEKSIGINFO: ::c_uint = 0x4209;
+
+pub const MADV_DODUMP: ::c_int = 17;
+pub const MADV_DONTDUMP: ::c_int = 16;
+
+pub const EPOLLWAKEUP: ::c_int = 0x20000000;
+
+pub const MADV_HUGEPAGE: ::c_int = 14;
+pub const MADV_NOHUGEPAGE: ::c_int = 15;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
+
+pub const SEEK_DATA: ::c_int = 3;
+pub const SEEK_HOLE: ::c_int = 4;
+
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
+
+pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
+pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
+
+pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
+pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
+pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
+pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
+pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
+pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
+pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
+
+pub const NETLINK_ROUTE: ::c_int = 0;
+pub const NETLINK_UNUSED: ::c_int = 1;
+pub const NETLINK_USERSOCK: ::c_int = 2;
+pub const NETLINK_FIREWALL: ::c_int = 3;
+pub const NETLINK_SOCK_DIAG: ::c_int = 4;
+pub const NETLINK_NFLOG: ::c_int = 5;
+pub const NETLINK_XFRM: ::c_int = 6;
+pub const NETLINK_SELINUX: ::c_int = 7;
+pub const NETLINK_ISCSI: ::c_int = 8;
+pub const NETLINK_AUDIT: ::c_int = 9;
+pub const NETLINK_FIB_LOOKUP: ::c_int = 10;
+pub const NETLINK_CONNECTOR: ::c_int = 11;
+pub const NETLINK_NETFILTER: ::c_int = 12;
+pub const NETLINK_IP6_FW: ::c_int = 13;
+pub const NETLINK_DNRTMSG: ::c_int = 14;
+pub const NETLINK_KOBJECT_UEVENT: ::c_int = 15;
+pub const NETLINK_GENERIC: ::c_int = 16;
+pub const NETLINK_SCSITRANSPORT: ::c_int = 18;
+pub const NETLINK_ECRYPTFS: ::c_int = 19;
+pub const NETLINK_RDMA: ::c_int = 20;
+pub const NETLINK_CRYPTO: ::c_int = 21;
+pub const NETLINK_INET_DIAG: ::c_int = NETLINK_SOCK_DIAG;
+
+pub const MAX_LINKS: ::c_int = 32;
+
+pub const NLM_F_REQUEST: ::c_int = 1;
+pub const NLM_F_MULTI: ::c_int = 2;
+pub const NLM_F_ACK: ::c_int = 4;
+pub const NLM_F_ECHO: ::c_int = 8;
+pub const NLM_F_DUMP_INTR: ::c_int = 16;
+pub const NLM_F_DUMP_FILTERED: ::c_int = 32;
+
+pub const NLM_F_ROOT: ::c_int = 0x100;
+pub const NLM_F_MATCH: ::c_int = 0x200;
+pub const NLM_F_ATOMIC: ::c_int = 0x400;
+pub const NLM_F_DUMP: ::c_int = NLM_F_ROOT | NLM_F_MATCH;
+
+pub const NLM_F_REPLACE: ::c_int = 0x100;
+pub const NLM_F_EXCL: ::c_int = 0x200;
+pub const NLM_F_CREATE: ::c_int = 0x400;
+pub const NLM_F_APPEND: ::c_int = 0x800;
+
+pub const NLMSG_NOOP: ::c_int = 0x1;
+pub const NLMSG_ERROR: ::c_int = 0x2;
+pub const NLMSG_DONE: ::c_int = 0x3;
+pub const NLMSG_OVERRUN: ::c_int = 0x4;
+pub const NLMSG_MIN_TYPE: ::c_int = 0x10;
+
+pub const NETLINK_ADD_MEMBERSHIP: ::c_int = 1;
+pub const NETLINK_DROP_MEMBERSHIP: ::c_int = 2;
+pub const NETLINK_PKTINFO: ::c_int = 3;
+pub const NETLINK_BROADCAST_ERROR: ::c_int = 4;
+pub const NETLINK_NO_ENOBUFS: ::c_int = 5;
+pub const NETLINK_RX_RING: ::c_int = 6;
+pub const NETLINK_TX_RING: ::c_int = 7;
+pub const NETLINK_LISTEN_ALL_NSID: ::c_int = 8;
+pub const NETLINK_LIST_MEMBERSHIPS: ::c_int = 9;
+pub const NETLINK_CAP_ACK: ::c_int = 10;
+
+pub const NLA_F_NESTED: ::c_int = 1 << 15;
+pub const NLA_F_NET_BYTEORDER: ::c_int = 1 << 14;
+pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER);
+
+cfg_if! {
+    if #[cfg(any(target_arch = "arm", target_arch = "x86",
+                 target_arch = "x86_64"))] {
+        pub const PTHREAD_STACK_MIN: ::size_t = 16384;
+    } else if #[cfg(target_arch = "sparc64")] {
+        pub const PTHREAD_STACK_MIN: ::size_t = 0x6000;
+    } else {
+        pub const PTHREAD_STACK_MIN: ::size_t = 131072;
+    }
+}
+
+extern {
+    pub fn utmpxname(file: *const ::c_char) -> ::c_int;
+    pub fn getutxent() -> *mut utmpx;
+    pub fn getutxid(ut: *const utmpx) -> *mut utmpx;
+    pub fn getutxline(ut: *const utmpx) -> *mut utmpx;
+    pub fn pututxline(ut: *const utmpx) -> *mut utmpx;
+    pub fn setutxent();
+    pub fn endutxent();
+    pub fn getpt() -> ::c_int;
+}
+
+#[link(name = "util")]
+extern {
+    pub fn sysctl(name: *mut ::c_int,
+                  namelen: ::c_int,
+                  oldp: *mut ::c_void,
+                  oldlenp: *mut ::size_t,
+                  newp: *mut ::c_void,
+                  newlen: ::size_t)
+                  -> ::c_int;
+    pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
+    pub fn backtrace(buf: *mut *mut ::c_void,
+                     sz: ::c_int) -> ::c_int;
+    pub fn glob64(pattern: *const ::c_char,
+                  flags: ::c_int,
+                  errfunc: ::dox::Option<extern fn(epath: *const ::c_char,
+                                                   errno: ::c_int)
+                                                   -> ::c_int>,
+                  pglob: *mut glob64_t) -> ::c_int;
+    pub fn globfree64(pglob: *mut glob64_t);
+    pub fn ptrace(request: ::c_uint, ...) -> ::c_long;
+    pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *mut ::cpu_set_t) -> ::c_int;
+    pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *const ::cpu_set_t) -> ::c_int;
+    pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;
+    pub fn setpriority(which: ::__priority_which_t, who: ::id_t,
+                                       prio: ::c_int) -> ::c_int;
+    pub fn pthread_getaffinity_np(thread: ::pthread_t,
+                                  cpusetsize: ::size_t,
+                                  cpuset: *mut ::cpu_set_t) -> ::c_int;
+    pub fn pthread_setaffinity_np(thread: ::pthread_t,
+                                  cpusetsize: ::size_t,
+                                  cpuset: *const ::cpu_set_t) -> ::c_int;
+    pub fn sched_getcpu() -> ::c_int;
+}
+
+cfg_if! {
+    if #[cfg(any(target_arch = "x86",
+                 target_arch = "arm",
+                 target_arch = "powerpc"))] {
+        mod b32;
+        pub use self::b32::*;
+    } else if #[cfg(any(target_arch = "x86_64",
+                        target_arch = "aarch64",
+                        target_arch = "powerpc64",
+                        target_arch = "sparc64"))] {
+        mod b64;
+        pub use self::b64::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/uclibc/s390x.rs b/src/unix/uclibc/s390x.rs
new file mode 100644
index 0000000..b646647
--- /dev/null
+++ b/src/unix/uclibc/s390x.rs
@@ -0,0 +1,738 @@
+pub type blkcnt_t = i64;
+pub type blksize_t = i64;
+pub type c_char = u8;
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type fsblkcnt_t = u64;
+pub type fsfilcnt_t = u64;
+pub type ino_t = u64;
+pub type nlink_t = u64;
+pub type off_t = i64;
+pub type rlim_t = u64;
+pub type suseconds_t = i64;
+pub type time_t = i64;
+pub type wchar_t = i32;
+pub type greg_t = u64;
+pub type clock_t = i64;
+pub type __fsword_t = ::c_long;
+pub type __priority_which_t = ::c_uint;
+
+s! {
+    pub struct aiocb {
+        pub aio_fildes: ::c_int,
+        pub aio_lio_opcode: ::c_int,
+        pub aio_reqprio: ::c_int,
+        pub aio_buf: *mut ::c_void,
+        pub aio_nbytes: ::size_t,
+        pub aio_sigevent: ::sigevent,
+        __next_prio: *mut aiocb,
+        __abs_prio: ::c_int,
+        __policy: ::c_int,
+        __error_code: ::c_int,
+        __return_value: ::ssize_t,
+        pub aio_offset: off_t,
+        #[cfg(target_pointer_width = "32")]
+        __unused1: [::c_char; 4],
+        __glibc_reserved: [::c_char; 32]
+    }
+
+    pub struct stat {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        st_pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt_t,
+        __glibc_reserved: [::c_long; 3],
+    }
+
+    pub struct stat64 {
+        pub st_dev: ::dev_t,
+        pub st_ino: ::ino64_t,
+        pub st_nlink: ::nlink_t,
+        pub st_mode: ::mode_t,
+        pub st_uid: ::uid_t,
+        pub st_gid: ::gid_t,
+        st_pad0: ::c_int,
+        pub st_rdev: ::dev_t,
+        pub st_size: ::off_t,
+        pub st_atime: ::time_t,
+        pub st_atime_nsec: ::c_long,
+        pub st_mtime: ::time_t,
+        pub st_mtime_nsec: ::c_long,
+        pub st_ctime: ::time_t,
+        pub st_ctime_nsec: ::c_long,
+        pub st_blksize: ::blksize_t,
+        pub st_blocks: ::blkcnt64_t,
+        __glibc_reserved: [::c_long; 3],
+    }
+
+    pub struct pthread_attr_t {
+        __size: [::c_ulong; 7]
+    }
+
+    pub struct sigaction {
+        pub sa_sigaction: ::sighandler_t,
+        __glibc_reserved0: ::c_int,
+        pub sa_flags: ::c_int,
+        _restorer: *mut ::c_void,
+        pub sa_mask: sigset_t,
+    }
+
+    pub struct stack_t {
+        pub ss_sp: *mut ::c_void,
+        pub ss_flags: ::c_int,
+        pub ss_size: ::size_t,
+    }
+
+    pub struct sigset_t {
+        __size: [::c_ulong; 16],
+    }
+
+    pub struct siginfo_t {
+        pub si_signo: ::c_int,
+        pub si_errno: ::c_int,
+        pub si_code: ::c_int,
+        _pad: ::c_int,
+        _pad2: [::c_long; 14],
+    }
+
+    pub struct ipc_perm {
+        pub __key: ::key_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+        pub cuid: ::uid_t,
+        pub cgid: ::gid_t,
+        pub mode: ::mode_t,
+        pub __seq: ::c_ushort,
+        __pad1: ::c_ushort,
+        __unused1: ::c_ulong,
+        __unused2: ::c_ulong
+    }
+
+    pub struct shmid_ds {
+        pub shm_perm: ::ipc_perm,
+        pub shm_segsz: ::size_t,
+        pub shm_atime: ::time_t,
+        pub shm_dtime: ::time_t,
+        pub shm_ctime: ::time_t,
+        pub shm_cpid: ::pid_t,
+        pub shm_lpid: ::pid_t,
+        pub shm_nattch: ::shmatt_t,
+        __unused4: ::c_ulong,
+        __unused5: ::c_ulong
+    }
+
+    pub struct statfs {
+        pub f_type: ::c_uint,
+        pub f_bsize: ::c_uint,
+        pub f_blocks: ::fsblkcnt_t,
+        pub f_bfree: ::fsblkcnt_t,
+        pub f_bavail: ::fsblkcnt_t,
+        pub f_files: ::fsfilcnt_t,
+        pub f_ffree: ::fsfilcnt_t,
+        pub f_fsid: ::fsid_t,
+        pub f_namelen: ::c_uint,
+        pub f_frsize: ::c_uint,
+        pub f_flags: ::c_uint,
+        f_spare: [::c_uint; 4],
+    }
+
+    pub struct msghdr {
+        pub msg_name: *mut ::c_void,
+        pub msg_namelen: ::socklen_t,
+        pub msg_iov: *mut ::iovec,
+        pub msg_iovlen: ::size_t,
+        pub msg_control: *mut ::c_void,
+        pub msg_controllen: ::size_t,
+        pub msg_flags: ::c_int,
+    }
+
+    pub struct cmsghdr {
+        pub cmsg_len: ::size_t,
+        pub cmsg_level: ::c_int,
+        pub cmsg_type: ::c_int,
+    }
+
+    pub struct termios {
+        pub c_iflag: ::tcflag_t,
+        pub c_oflag: ::tcflag_t,
+        pub c_cflag: ::tcflag_t,
+        pub c_lflag: ::tcflag_t,
+        pub c_line: ::cc_t,
+        pub c_cc: [::cc_t; ::NCCS],
+        pub c_ispeed: ::speed_t,
+        pub c_ospeed: ::speed_t,
+    }
+
+    pub struct sysinfo {
+        pub uptime: ::c_long,
+        pub loads: [::c_ulong; 3],
+        pub totalram: ::c_ulong,
+        pub freeram: ::c_ulong,
+        pub sharedram: ::c_ulong,
+        pub bufferram: ::c_ulong,
+        pub totalswap: ::c_ulong,
+        pub freeswap: ::c_ulong,
+        pub procs: ::c_ushort,
+        pub pad: ::c_ushort,
+        pub totalhigh: ::c_ulong,
+        pub freehigh: ::c_ulong,
+        pub mem_unit: ::c_uint,
+        pub _f: [::c_char; 0],
+    }
+
+    pub struct glob64_t {
+        pub gl_pathc: ::size_t,
+        pub gl_pathv: *mut *mut ::c_char,
+        pub gl_offs: ::size_t,
+        pub gl_flags: ::c_int,
+
+        __unused1: *mut ::c_void,
+        __unused2: *mut ::c_void,
+        __unused3: *mut ::c_void,
+        __unused4: *mut ::c_void,
+        __unused5: *mut ::c_void,
+    }
+
+    pub struct ucred {
+        pub pid: ::pid_t,
+        pub uid: ::uid_t,
+        pub gid: ::gid_t,
+    }
+
+    pub struct flock {
+        pub l_type: ::c_short,
+        pub l_whence: ::c_short,
+        pub l_start: ::off_t,
+        pub l_len: ::off_t,
+        pub l_pid: ::pid_t,
+    }
+
+    // FIXME this is actually a union
+    pub struct sem_t {
+        __size: [::c_char; 32],
+        __align: [::c_long; 0],
+    }
+
+    pub struct __psw_t {
+        pub mask: u64,
+        pub addr: u64,
+    }
+
+    // FIXME: This is actually a union.
+    pub struct fpreg_t {
+        pub d: ::c_double,
+        // f: ::c_float,
+    }
+
+    pub struct fpregset_t {
+        pub fpc: u32,
+        __pad: u32,
+        pub fprs: [fpreg_t; 16],
+    }
+
+    pub struct mcontext_t {
+        pub psw: __psw_t,
+        pub gregs: [u64; 16],
+        pub aregs: [u32; 16],
+        pub fpregs: fpregset_t,
+    }
+
+    pub struct ucontext_t {
+        pub uc_flags: ::c_ulong,
+        pub uc_link: *mut ucontext_t,
+        pub uc_stack: ::stack_t,
+        pub uc_mcontext: mcontext_t,
+        pub uc_sigmask: ::sigset_t,
+    }
+
+    pub struct msqid_ds {
+        pub msg_perm: ::ipc_perm,
+        pub msg_stime: ::time_t,
+        pub msg_rtime: ::time_t,
+        pub msg_ctime: ::time_t,
+        __msg_cbytes: ::c_ulong,
+        pub msg_qnum: ::msgqnum_t,
+        pub msg_qbytes: ::msglen_t,
+        pub msg_lspid: ::pid_t,
+        pub msg_lrpid: ::pid_t,
+        __glibc_reserved4: ::c_ulong,
+        __glibc_reserved5: ::c_ulong,
+    }
+}
+
+pub const CLONE_NEWCGROUP: ::c_int = 0x02000000;
+
+pub const SFD_CLOEXEC: ::c_int = 0x080000;
+
+pub const NCCS: usize = 32;
+
+pub const O_TRUNC: ::c_int = 512;
+
+pub const O_CLOEXEC: ::c_int = 0x80000;
+
+pub const EBFONT: ::c_int = 59;
+pub const ENOSTR: ::c_int = 60;
+pub const ENODATA: ::c_int = 61;
+pub const ETIME: ::c_int = 62;
+pub const ENOSR: ::c_int = 63;
+pub const ENONET: ::c_int = 64;
+pub const ENOPKG: ::c_int = 65;
+pub const EREMOTE: ::c_int = 66;
+pub const ENOLINK: ::c_int = 67;
+pub const EADV: ::c_int = 68;
+pub const ESRMNT: ::c_int = 69;
+pub const ECOMM: ::c_int = 70;
+pub const EPROTO: ::c_int = 71;
+pub const EDOTDOT: ::c_int = 73;
+
+pub const SA_NODEFER: ::c_int = 0x40000000;
+pub const SA_RESETHAND: ::c_int = 0x80000000;
+pub const SA_RESTART: ::c_int = 0x10000000;
+pub const SA_NOCLDSTOP: ::c_int = 0x00000001;
+
+pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
+
+pub const EFD_CLOEXEC: ::c_int = 0x80000;
+
+pub const POSIX_FADV_DONTNEED: ::c_int = 6;
+pub const POSIX_FADV_NOREUSE: ::c_int = 7;
+
+pub const __SIZEOF_PTHREAD_CONDATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEXATTR_T: usize = 4;
+pub const __SIZEOF_PTHREAD_MUTEX_T: usize = 40;
+pub const __SIZEOF_PTHREAD_RWLOCK_T: usize = 56;
+
+pub const EADDRINUSE: ::c_int = 98;
+pub const EADDRNOTAVAIL: ::c_int = 99;
+pub const ECONNABORTED: ::c_int = 103;
+pub const ECONNREFUSED: ::c_int = 111;
+pub const ECONNRESET: ::c_int = 104;
+pub const EDEADLK: ::c_int = 35;
+pub const ENOSYS: ::c_int = 38;
+pub const ENOTCONN: ::c_int = 107;
+pub const ETIMEDOUT: ::c_int = 110;
+pub const FIOCLEX: ::c_ulong = 0x5451;
+pub const FIONBIO: ::c_ulong = 0x5421;
+pub const MAP_ANON: ::c_int = 0x20;
+pub const O_ACCMODE: ::c_int = 3;
+pub const O_APPEND: ::c_int = 1024;
+pub const O_CREAT: ::c_int = 64;
+pub const O_EXCL: ::c_int = 128;
+pub const O_NONBLOCK: ::c_int = 2048;
+pub const PTHREAD_STACK_MIN: ::size_t = 16384;
+pub const RLIM_INFINITY: ::rlim_t = 0xffffffffffffffff;
+pub const SA_NOCLDWAIT: ::c_int = 2;
+pub const SA_ONSTACK: ::c_int = 0x08000000;
+pub const SA_SIGINFO: ::c_int = 4;
+pub const SIGBUS: ::c_int = 7;
+pub const SIGSTKSZ: ::size_t = 0x2000;
+pub const SIG_SETMASK: ::c_int = 2;
+pub const SOCK_DGRAM: ::c_int = 2;
+pub const SOCK_STREAM: ::c_int = 1;
+pub const SOL_SOCKET: ::c_int = 1;
+pub const SO_BROADCAST: ::c_int = 6;
+pub const SO_ERROR: ::c_int = 4;
+pub const SO_RCVTIMEO: ::c_int = 20;
+pub const SO_REUSEADDR: ::c_int = 2;
+pub const SO_SNDTIMEO: ::c_int = 21;
+
+pub const RLIMIT_RSS: ::c_int = 5;
+pub const RLIMIT_NOFILE: ::c_int = 7;
+pub const RLIMIT_AS: ::c_int = 9;
+pub const RLIMIT_NPROC: ::c_int = 6;
+pub const RLIMIT_MEMLOCK: ::c_int = 8;
+pub const RLIMIT_RTTIME: ::c_int = 15;
+pub const RLIMIT_NLIMITS: ::c_int = 16;
+
+pub const O_NOCTTY: ::c_int = 256;
+pub const O_SYNC: ::c_int = 1052672;
+pub const O_RSYNC: ::c_int = 1052672;
+pub const O_DSYNC: ::c_int = 4096;
+pub const O_FSYNC: ::c_int = 0x101000;
+pub const O_DIRECT: ::c_int = 0x4000;
+pub const O_DIRECTORY: ::c_int = 0x10000;
+pub const O_NOFOLLOW: ::c_int = 0x20000;
+
+pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
+
+pub const LC_PAPER: ::c_int = 7;
+pub const LC_NAME: ::c_int = 8;
+pub const LC_ADDRESS: ::c_int = 9;
+pub const LC_TELEPHONE: ::c_int = 10;
+pub const LC_MEASUREMENT: ::c_int = 11;
+pub const LC_IDENTIFICATION: ::c_int = 12;
+pub const LC_PAPER_MASK: ::c_int = (1 << LC_PAPER);
+pub const LC_NAME_MASK: ::c_int = (1 << LC_NAME);
+pub const LC_ADDRESS_MASK: ::c_int = (1 << LC_ADDRESS);
+pub const LC_TELEPHONE_MASK: ::c_int = (1 << LC_TELEPHONE);
+pub const LC_MEASUREMENT_MASK: ::c_int = (1 << LC_MEASUREMENT);
+pub const LC_IDENTIFICATION_MASK: ::c_int = (1 << LC_IDENTIFICATION);
+pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
+                               | ::LC_NUMERIC_MASK
+                               | ::LC_TIME_MASK
+                               | ::LC_COLLATE_MASK
+                               | ::LC_MONETARY_MASK
+                               | ::LC_MESSAGES_MASK
+                               | LC_PAPER_MASK
+                               | LC_NAME_MASK
+                               | LC_ADDRESS_MASK
+                               | LC_TELEPHONE_MASK
+                               | LC_MEASUREMENT_MASK
+                               | LC_IDENTIFICATION_MASK;
+
+pub const MAP_ANONYMOUS: ::c_int = 0x0020;
+pub const MAP_GROWSDOWN: ::c_int = 0x0100;
+pub const MAP_DENYWRITE: ::c_int = 0x0800;
+pub const MAP_EXECUTABLE: ::c_int = 0x01000;
+pub const MAP_LOCKED: ::c_int = 0x02000;
+pub const MAP_NORESERVE: ::c_int = 0x04000;
+pub const MAP_POPULATE: ::c_int = 0x08000;
+pub const MAP_NONBLOCK: ::c_int = 0x010000;
+pub const MAP_STACK: ::c_int = 0x020000;
+
+pub const EDEADLOCK: ::c_int = 35;
+pub const ENAMETOOLONG: ::c_int = 36;
+pub const ENOLCK: ::c_int = 37;
+pub const ENOTEMPTY: ::c_int = 39;
+pub const ELOOP: ::c_int = 40;
+pub const ENOMSG: ::c_int = 42;
+pub const EIDRM: ::c_int = 43;
+pub const ECHRNG: ::c_int = 44;
+pub const EL2NSYNC: ::c_int = 45;
+pub const EL3HLT: ::c_int = 46;
+pub const EL3RST: ::c_int = 47;
+pub const ELNRNG: ::c_int = 48;
+pub const EUNATCH: ::c_int = 49;
+pub const ENOCSI: ::c_int = 50;
+pub const EL2HLT: ::c_int = 51;
+pub const EBADE: ::c_int = 52;
+pub const EBADR: ::c_int = 53;
+pub const EXFULL: ::c_int = 54;
+pub const ENOANO: ::c_int = 55;
+pub const EBADRQC: ::c_int = 56;
+pub const EBADSLT: ::c_int = 57;
+pub const EMULTIHOP: ::c_int = 72;
+pub const EOVERFLOW: ::c_int = 75;
+pub const ENOTUNIQ: ::c_int = 76;
+pub const EBADFD: ::c_int = 77;
+pub const EBADMSG: ::c_int = 74;
+pub const EREMCHG: ::c_int = 78;
+pub const ELIBACC: ::c_int = 79;
+pub const ELIBBAD: ::c_int = 80;
+pub const ELIBSCN: ::c_int = 81;
+pub const ELIBMAX: ::c_int = 82;
+pub const ELIBEXEC: ::c_int = 83;
+pub const EILSEQ: ::c_int = 84;
+pub const ERESTART: ::c_int = 85;
+pub const ESTRPIPE: ::c_int = 86;
+pub const EUSERS: ::c_int = 87;
+pub const ENOTSOCK: ::c_int = 88;
+pub const EDESTADDRREQ: ::c_int = 89;
+pub const EMSGSIZE: ::c_int = 90;
+pub const EPROTOTYPE: ::c_int = 91;
+pub const ENOPROTOOPT: ::c_int = 92;
+pub const EPROTONOSUPPORT: ::c_int = 93;
+pub const ESOCKTNOSUPPORT: ::c_int = 94;
+pub const EOPNOTSUPP: ::c_int = 95;
+pub const ENOTSUP: ::c_int = EOPNOTSUPP;
+pub const EPFNOSUPPORT: ::c_int = 96;
+pub const EAFNOSUPPORT: ::c_int = 97;
+pub const ENETDOWN: ::c_int = 100;
+pub const ENETUNREACH: ::c_int = 101;
+pub const ENETRESET: ::c_int = 102;
+pub const ENOBUFS: ::c_int = 105;
+pub const EISCONN: ::c_int = 106;
+pub const ESHUTDOWN: ::c_int = 108;
+pub const ETOOMANYREFS: ::c_int = 109;
+pub const EHOSTDOWN: ::c_int = 112;
+pub const EHOSTUNREACH: ::c_int = 113;
+pub const EALREADY: ::c_int = 114;
+pub const EINPROGRESS: ::c_int = 115;
+pub const ESTALE: ::c_int = 116;
+pub const EUCLEAN: ::c_int = 117;
+pub const ENOTNAM: ::c_int = 118;
+pub const ENAVAIL: ::c_int = 119;
+pub const EISNAM: ::c_int = 120;
+pub const EREMOTEIO: ::c_int = 121;
+pub const EDQUOT: ::c_int = 122;
+pub const ENOMEDIUM: ::c_int = 123;
+pub const EMEDIUMTYPE: ::c_int = 124;
+pub const ECANCELED: ::c_int = 125;
+pub const ENOKEY: ::c_int = 126;
+pub const EKEYEXPIRED: ::c_int = 127;
+pub const EKEYREVOKED: ::c_int = 128;
+pub const EKEYREJECTED: ::c_int = 129;
+pub const EOWNERDEAD: ::c_int = 130;
+pub const ENOTRECOVERABLE: ::c_int = 131;
+pub const EHWPOISON: ::c_int = 133;
+pub const ERFKILL: ::c_int = 132;
+
+pub const SOCK_SEQPACKET: ::c_int = 5;
+
+pub const SO_TYPE: ::c_int = 3;
+pub const SO_DONTROUTE: ::c_int = 5;
+pub const SO_SNDBUF: ::c_int = 7;
+pub const SO_RCVBUF: ::c_int = 8;
+pub const SO_KEEPALIVE: ::c_int = 9;
+pub const SO_OOBINLINE: ::c_int = 10;
+pub const SO_LINGER: ::c_int = 13;
+pub const SO_REUSEPORT: ::c_int = 15;
+pub const SO_PEERCRED: ::c_int = 17;
+pub const SO_RCVLOWAT: ::c_int = 18;
+pub const SO_SNDLOWAT: ::c_int = 19;
+pub const SO_ACCEPTCONN: ::c_int = 30;
+
+pub const TCP_COOKIE_TRANSACTIONS: ::c_int = 15;
+pub const TCP_THIN_LINEAR_TIMEOUTS: ::c_int = 16;
+pub const TCP_THIN_DUPACK: ::c_int = 17;
+pub const TCP_USER_TIMEOUT: ::c_int = 18;
+pub const TCP_REPAIR: ::c_int = 19;
+pub const TCP_REPAIR_QUEUE: ::c_int = 20;
+pub const TCP_QUEUE_SEQ: ::c_int = 21;
+pub const TCP_REPAIR_OPTIONS: ::c_int = 22;
+pub const TCP_FASTOPEN: ::c_int = 23;
+pub const TCP_TIMESTAMP: ::c_int = 24;
+
+pub const SIGCHLD: ::c_int = 17;
+pub const SIGUSR1: ::c_int = 10;
+pub const SIGUSR2: ::c_int = 12;
+pub const SIGCONT: ::c_int = 18;
+pub const SIGSTOP: ::c_int = 19;
+pub const SIGTSTP: ::c_int = 20;
+pub const SIGURG: ::c_int = 23;
+pub const SIGIO: ::c_int = 29;
+pub const SIGSYS: ::c_int = 31;
+pub const SIGSTKFLT: ::c_int = 16;
+pub const SIGUNUSED: ::c_int = 31;
+pub const SIGTTIN: ::c_int = 21;
+pub const SIGTTOU: ::c_int = 22;
+pub const SIGXCPU: ::c_int = 24;
+pub const SIGXFSZ: ::c_int = 25;
+pub const SIGVTALRM: ::c_int = 26;
+pub const SIGPROF: ::c_int = 27;
+pub const SIGWINCH: ::c_int = 28;
+pub const SIGPOLL: ::c_int = 29;
+pub const SIGPWR: ::c_int = 30;
+pub const SIG_BLOCK: ::c_int = 0x000000;
+pub const SIG_UNBLOCK: ::c_int = 0x01;
+
+pub const FALLOC_FL_KEEP_SIZE: ::c_int = 0x01;
+pub const FALLOC_FL_PUNCH_HOLE: ::c_int = 0x02;
+
+pub const BUFSIZ: ::c_uint = 8192;
+pub const TMP_MAX: ::c_uint = 238328;
+pub const FOPEN_MAX: ::c_uint = 16;
+pub const POSIX_MADV_DONTNEED: ::c_int = 4;
+pub const _SC_2_C_VERSION: ::c_int = 96;
+pub const O_ASYNC: ::c_int = 0x2000;
+pub const O_NDELAY: ::c_int = 0x800;
+pub const ST_RELATIME: ::c_ulong = 4096;
+pub const NI_MAXHOST: ::socklen_t = 1025;
+
+pub const ADFS_SUPER_MAGIC: ::c_int = 0x0000adf5;
+pub const AFFS_SUPER_MAGIC: ::c_int = 0x0000adff;
+pub const CODA_SUPER_MAGIC: ::c_int = 0x73757245;
+pub const CRAMFS_MAGIC: ::c_int = 0x28cd3d45;
+pub const EFS_SUPER_MAGIC: ::c_int = 0x00414a53;
+pub const EXT2_SUPER_MAGIC: ::c_int = 0x0000ef53;
+pub const EXT3_SUPER_MAGIC: ::c_int = 0x0000ef53;
+pub const EXT4_SUPER_MAGIC: ::c_int = 0x0000ef53;
+pub const HPFS_SUPER_MAGIC: ::c_int = 0xf995e849;
+pub const HUGETLBFS_MAGIC: ::c_int = 0x958458f6;
+pub const ISOFS_SUPER_MAGIC: ::c_int = 0x00009660;
+pub const JFFS2_SUPER_MAGIC: ::c_int = 0x000072b6;
+pub const MINIX_SUPER_MAGIC: ::c_int = 0x0000137f;
+pub const MINIX_SUPER_MAGIC2: ::c_int = 0x0000138f;
+pub const MINIX2_SUPER_MAGIC: ::c_int = 0x00002468;
+pub const MINIX2_SUPER_MAGIC2: ::c_int = 0x00002478;
+pub const MSDOS_SUPER_MAGIC: ::c_int = 0x00004d44;
+pub const NCP_SUPER_MAGIC: ::c_int = 0x0000564c;
+pub const NFS_SUPER_MAGIC: ::c_int = 0x00006969;
+pub const OPENPROM_SUPER_MAGIC: ::c_int = 0x00009fa1;
+pub const PROC_SUPER_MAGIC: ::c_int = 0x00009fa0;
+pub const QNX4_SUPER_MAGIC: ::c_int = 0x0000002f;
+pub const REISERFS_SUPER_MAGIC: ::c_int = 0x52654973;
+pub const SMB_SUPER_MAGIC: ::c_int = 0x0000517b;
+pub const TMPFS_MAGIC: ::c_int = 0x01021994;
+pub const USBDEVICE_SUPER_MAGIC: ::c_int = 0x00009fa2;
+
+pub const VEOF: usize = 4;
+pub const VEOL: usize = 11;
+pub const VEOL2: usize = 16;
+pub const VMIN: usize = 6;
+pub const IEXTEN: ::tcflag_t = 0x00008000;
+pub const TOSTOP: ::tcflag_t = 0x00000100;
+pub const FLUSHO: ::tcflag_t = 0x00001000;
+pub const IUTF8: ::tcflag_t = 0x00004000;
+
+pub const CPU_SETSIZE: ::c_int = 0x400;
+
+pub const EXTPROC: ::tcflag_t = 0x00010000;
+
+pub const QFMT_VFS_V1: ::c_int = 4;
+
+pub const PTRACE_TRACEME: ::c_uint = 0;
+pub const PTRACE_PEEKTEXT: ::c_uint = 1;
+pub const PTRACE_PEEKDATA: ::c_uint = 2;
+pub const PTRACE_PEEKUSER: ::c_uint = 3;
+pub const PTRACE_POKETEXT: ::c_uint = 4;
+pub const PTRACE_POKEDATA: ::c_uint = 5;
+pub const PTRACE_POKEUSER: ::c_uint = 6;
+pub const PTRACE_CONT: ::c_uint = 7;
+pub const PTRACE_KILL: ::c_uint = 8;
+pub const PTRACE_SINGLESTEP: ::c_uint = 9;
+pub const PTRACE_GETREGS: ::c_uint = 12;
+pub const PTRACE_SETREGS: ::c_uint = 13;
+pub const PTRACE_GETFPREGS: ::c_uint = 14;
+pub const PTRACE_SETFPREGS: ::c_uint = 15;
+pub const PTRACE_ATTACH: ::c_uint = 16;
+pub const PTRACE_DETACH: ::c_uint = 17;
+pub const PTRACE_SYSCALL: ::c_uint = 24;
+pub const PTRACE_SETOPTIONS: ::c_uint = 0x4200;
+pub const PTRACE_GETEVENTMSG: ::c_uint = 0x4201;
+pub const PTRACE_GETSIGINFO: ::c_uint = 0x4202;
+pub const PTRACE_SETSIGINFO: ::c_uint = 0x4203;
+pub const PTRACE_GETREGSET: ::c_uint = 0x4204;
+pub const PTRACE_SETREGSET: ::c_uint = 0x4205;
+pub const PTRACE_SEIZE: ::c_uint = 0x4206;
+pub const PTRACE_INTERRUPT: ::c_uint = 0x4207;
+pub const PTRACE_LISTEN: ::c_uint = 0x4208;
+pub const PTRACE_PEEKSIGINFO: ::c_uint = 0x4209;
+
+pub const MADV_DODUMP: ::c_int = 17;
+pub const MADV_DONTDUMP: ::c_int = 16;
+
+pub const EPOLLWAKEUP: ::c_int = 0x20000000;
+
+pub const MADV_HUGEPAGE: ::c_int = 14;
+pub const MADV_NOHUGEPAGE: ::c_int = 15;
+pub const MAP_HUGETLB: ::c_int = 0x040000;
+
+pub const EFD_NONBLOCK: ::c_int = 0x800;
+
+pub const F_GETLK: ::c_int = 5;
+pub const F_GETOWN: ::c_int = 9;
+pub const F_SETOWN: ::c_int = 8;
+pub const F_SETLK: ::c_int = 6;
+pub const F_SETLKW: ::c_int = 7;
+
+pub const SEEK_DATA: ::c_int = 3;
+pub const SEEK_HOLE: ::c_int = 4;
+
+pub const SFD_NONBLOCK: ::c_int = 0x0800;
+
+pub const TCSANOW: ::c_int = 0;
+pub const TCSADRAIN: ::c_int = 1;
+pub const TCSAFLUSH: ::c_int = 2;
+
+pub const TCGETS: ::c_ulong = 0x5401;
+pub const TCSETS: ::c_ulong = 0x5402;
+pub const TCSETSW: ::c_ulong = 0x5403;
+pub const TCSETSF: ::c_ulong = 0x5404;
+pub const TCGETA: ::c_ulong = 0x5405;
+pub const TCSETA: ::c_ulong = 0x5406;
+pub const TCSETAW: ::c_ulong = 0x5407;
+pub const TCSETAF: ::c_ulong = 0x5408;
+pub const TCSBRK: ::c_ulong = 0x5409;
+pub const TCXONC: ::c_ulong = 0x540A;
+pub const TCFLSH: ::c_ulong = 0x540B;
+pub const TIOCGSOFTCAR: ::c_ulong = 0x5419;
+pub const TIOCSSOFTCAR: ::c_ulong = 0x541A;
+pub const TIOCINQ: ::c_ulong = 0x541B;
+pub const TIOCLINUX: ::c_ulong = 0x541C;
+pub const TIOCGSERIAL: ::c_ulong = 0x541E;
+pub const TIOCEXCL: ::c_ulong = 0x540C;
+pub const TIOCNXCL: ::c_ulong = 0x540D;
+pub const TIOCSCTTY: ::c_ulong = 0x540E;
+pub const TIOCGPGRP: ::c_ulong = 0x540F;
+pub const TIOCSPGRP: ::c_ulong = 0x5410;
+pub const TIOCOUTQ: ::c_ulong = 0x5411;
+pub const TIOCSTI: ::c_ulong = 0x5412;
+pub const TIOCGWINSZ: ::c_ulong = 0x5413;
+pub const TIOCSWINSZ: ::c_ulong = 0x5414;
+pub const TIOCMGET: ::c_ulong = 0x5415;
+pub const TIOCMBIS: ::c_ulong = 0x5416;
+pub const TIOCMBIC: ::c_ulong = 0x5417;
+pub const TIOCMSET: ::c_ulong = 0x5418;
+pub const FIONREAD: ::c_ulong = 0x541B;
+pub const TIOCCONS: ::c_ulong = 0x541D;
+
+pub const RTLD_DEEPBIND: ::c_int = 0x8;
+pub const RTLD_GLOBAL: ::c_int = 0x100;
+pub const RTLD_NOLOAD: ::c_int = 0x4;
+
+pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
+pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
+pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
+pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
+pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
+
+pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
+pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
+pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
+pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
+pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
+pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
+pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
+pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
+
+pub const SYS_gettid: ::c_long = 236;
+pub const SYS_perf_event_open: ::c_long = 331;
+
+#[link(name = "util")]
+extern {
+    pub fn sysctl(name: *mut ::c_int,
+                  namelen: ::c_int,
+                  oldp: *mut ::c_void,
+                  oldlenp: *mut ::size_t,
+                  newp: *mut ::c_void,
+                  newlen: ::size_t)
+                  -> ::c_int;
+    pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int;
+    pub fn backtrace(buf: *mut *mut ::c_void,
+                     sz: ::c_int) -> ::c_int;
+    pub fn glob64(pattern: *const ::c_char,
+                  flags: ::c_int,
+                  errfunc: ::dox::Option<extern fn(epath: *const ::c_char,
+                                                   errno: ::c_int)
+                                                   -> ::c_int>,
+                  pglob: *mut glob64_t) -> ::c_int;
+    pub fn globfree64(pglob: *mut glob64_t);
+    pub fn ptrace(request: ::c_uint, ...) -> ::c_long;
+    pub fn pthread_attr_getaffinity_np(attr: *const ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *mut ::cpu_set_t) -> ::c_int;
+    pub fn pthread_attr_setaffinity_np(attr: *mut ::pthread_attr_t,
+                                       cpusetsize: ::size_t,
+                                       cpuset: *const ::cpu_set_t) -> ::c_int;
+    pub fn getpriority(which: ::__priority_which_t, who: ::id_t) -> ::c_int;
+    pub fn setpriority(which: ::__priority_which_t, who: ::id_t,
+                                       prio: ::c_int) -> ::c_int;
+    pub fn pthread_getaffinity_np(thread: ::pthread_t,
+                                  cpusetsize: ::size_t,
+                                  cpuset: *mut ::cpu_set_t) -> ::c_int;
+    pub fn pthread_setaffinity_np(thread: ::pthread_t,
+                                  cpusetsize: ::size_t,
+                                  cpuset: *const ::cpu_set_t) -> ::c_int;
+    pub fn sched_getcpu() -> ::c_int;
+    pub fn getcontext(ucp: *mut ucontext_t) -> ::c_int;
+    pub fn setcontext(ucp: *const ucontext_t) -> ::c_int;
+    pub fn makecontext(ucp: *mut ucontext_t,
+                       func:  extern fn (),
+                       argc: ::c_int, ...);
+    pub fn swapcontext(uocp: *mut ucontext_t,
+                       ucp: *const ucontext_t) -> ::c_int;
+}
