diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs
index 694d394804878a4340581bd4c45c5b030721c19b..5049d3908861057ecc0cbdd8c73c420fe66e3320 100644
--- a/src/unix/bsd/apple/mod.rs
+++ b/src/unix/bsd/apple/mod.rs
@@ -2,6 +2,7 @@
 //!
 //! This covers *-apple-* triples currently
 
+pub type c_char = i8;
 pub type clock_t = c_ulong;
 pub type time_t = c_long;
 pub type suseconds_t = i32;
diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs
index e1f2e33093d201cdeea54c03716acfa5d6f759db..6a3457196a6ecb39fdce57599f3bfbc7d6d79cff 100644
--- a/src/unix/bsd/freebsdlike/mod.rs
+++ b/src/unix/bsd/freebsdlike/mod.rs
@@ -1,3 +1,4 @@
+pub type c_char = i8;
 pub type dev_t = u32;
 pub type mode_t = u16;
 pub type pthread_attr_t = *mut ::c_void;
diff --git a/src/unix/bsd/mod.rs b/src/unix/bsd/mod.rs
index a9f9fa87d9ae853967c86d9cc7f435d9df82112c..b9a88f09d29aa7236f2fb869b8ce40ecff4e8c2b 100644
--- a/src/unix/bsd/mod.rs
+++ b/src/unix/bsd/mod.rs
@@ -1,6 +1,5 @@
 use dox::{mem, Option};
 
-pub type c_char = i8;
 pub type wchar_t = i32;
 pub type off_t = i64;
 pub type useconds_t = u32;
diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs
index c3dd2eb1cd3e019986a10759f3bc096fbcd719c7..e79e4e94d42dc9a180503e98253808e01ac0f2a3 100644
--- a/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -1,5 +1,6 @@
 use dox::mem;
 
+pub type c_char = i8;
 pub type clock_t = ::c_uint;
 pub type suseconds_t = ::c_int;
 pub type dev_t = u64;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs b/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs
similarity index 90%
rename from src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs
rename to src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs
index 695cf68dc5a4e9ac87c2962674a1c3990ffab01d..ac4acadd30d46bad964027c512b532f1106c7928 100644
--- a/src/unix/bsd/netbsdlike/openbsdlike/bitrig.rs
+++ b/src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs
@@ -1,3 +1,5 @@
+pub type c_char = i8;
+
 s! {
     pub struct lconv {
         pub decimal_point: *mut ::c_char,
@@ -73,3 +75,15 @@ extern {
     pub fn uselocale(loc: ::locale_t) -> ::locale_t;
     pub fn querylocale(mask: ::c_int, loc: ::locale_t) -> *const ::c_char;
 }
+
+cfg_if! {
+    if #[cfg(target_arch = "x86")] {
+        mod x86;
+        pub use self::x86::*;
+    } else if #[cfg(target_arch = "x86_64")] {
+        mod x86_64;
+        pub use self::x86_64::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs b/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs
similarity index 100%
rename from src/unix/bsd/netbsdlike/openbsdlike/other/b32/mod.rs
rename to src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs b/src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs
similarity index 100%
rename from src/unix/bsd/netbsdlike/openbsdlike/other/b64/mod.rs
rename to src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/mod.rs b/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
index 64e6e4aa528cd0b22d3bfd7c0f07ee6573c89461..1f40e346c8b4cadc688a4ab8c55052e3df503a80 100644
--- a/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
+++ b/src/unix/bsd/netbsdlike/openbsdlike/mod.rs
@@ -211,7 +211,11 @@ pub const ECANCELED : ::c_int = 88;
 pub const EIDRM : ::c_int = 89;
 pub const ENOMSG : ::c_int = 90;
 pub const ENOTSUP : ::c_int = 91;
-pub const ELAST : ::c_int = 91;
+pub const EBADMSG : ::c_int = 92;
+pub const ENOTRECOVERABLE : ::c_int = 93;
+pub const EOWNERDEAD : ::c_int = 94;
+pub const EPROTO : ::c_int = 95;
+pub const ELAST : ::c_int = 95;
 
 pub const F_DUPFD_CLOEXEC : ::c_int = 10;
 
@@ -744,6 +748,3 @@ cfg_if! {
         // Unknown target_os
     }
 }
-
-mod other;
-pub use self::other::*;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs
new file mode 100644
index 0000000000000000000000000000000000000000..6aa9950ed1053d17940518e8db2f69f74e8a12a3
--- /dev/null
+++ b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs
@@ -0,0 +1,3 @@
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type c_char = u8;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs
similarity index 78%
rename from src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs
rename to src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs
index 5c804473adec2dc30ba37af8ab37be7352e5cc96..e7e5876ba4dc5ac1a24ce8177f20dc9e716cd10b 100644
--- a/src/unix/bsd/netbsdlike/openbsdlike/openbsd.rs
+++ b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs
@@ -33,3 +33,18 @@ extern {
     pub fn execvpe(file: *const ::c_char, argv: *const *const ::c_char,
                    envp: *const *const ::c_char) -> ::c_int;
 }
+
+cfg_if! {
+    if #[cfg(target_arch = "x86")] {
+        mod x86;
+        pub use self::x86::*;
+    } else if #[cfg(target_arch = "x86_64")] {
+        mod x86_64;
+        pub use self::x86_64::*;
+    } else if #[cfg(target_arch = "aarch64")] {
+        mod aarch64;
+        pub use self::aarch64::*;
+    } else {
+        // Unknown target_arch
+    }
+}
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs
new file mode 100644
index 0000000000000000000000000000000000000000..a00e3337ef58f2217ad078852b1859ef31be2b6e
--- /dev/null
+++ b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs
@@ -0,0 +1,3 @@
+pub type c_long = i32;
+pub type c_ulong = u32;
+pub type c_char = i8;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs
new file mode 100644
index 0000000000000000000000000000000000000000..27b94126688fbb59c5184c9c098a28a248fb6a3a
--- /dev/null
+++ b/src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs
@@ -0,0 +1,3 @@
+pub type c_long = i64;
+pub type c_ulong = u64;
+pub type c_char = i8;
diff --git a/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs b/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs
deleted file mode 100644
index e4087da7bc235195fbc63c6ab76643d9bbc2dbe3..0000000000000000000000000000000000000000
--- a/src/unix/bsd/netbsdlike/openbsdlike/other/mod.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-cfg_if! {
-    if #[cfg(target_arch = "x86_64")] {
-        mod b64;
-        pub use self::b64::*;
-    } else if #[cfg(target_arch = "x86")] {
-        mod b32;
-        pub use self::b32::*;
-    } else {
-        // Unknown target_arch
-    }
-}