summaryrefslogtreecommitdiff
path: root/src/unix/bsd/netbsdlike
diff options
context:
space:
mode:
Diffstat (limited to 'src/unix/bsd/netbsdlike')
-rw-r--r--src/unix/bsd/netbsdlike/netbsd/mod.rs11
-rw-r--r--src/unix/bsd/netbsdlike/openbsd/mod.rs13
2 files changed, 24 insertions, 0 deletions
diff --git a/src/unix/bsd/netbsdlike/netbsd/mod.rs b/src/unix/bsd/netbsdlike/netbsd/mod.rs
index 210a2a392a..093b24fe95 100644
--- a/src/unix/bsd/netbsdlike/netbsd/mod.rs
+++ b/src/unix/bsd/netbsdlike/netbsd/mod.rs
@@ -2472,6 +2472,17 @@ f! {
pub fn PROT_MPROTECT_EXTRACT(x: ::c_int) -> ::c_int {
(x >> 3) & 0x7
}
+
+ pub fn major(dev: ::dev_t) -> ::c_int {
+ (((dev as u32) & 0x000fff00) >> 8) as ::c_int
+ }
+
+ pub fn minor(dev: ::dev_t) -> ::c_int {
+ let mut res = 0;
+ res |= ((dev as u32) & 0xfff00000) >> 12;
+ res |= (dev as u32) & 0x000000ff;
+ res as ::c_int
+ }
}
safe_f! {
diff --git a/src/unix/bsd/netbsdlike/openbsd/mod.rs b/src/unix/bsd/netbsdlike/openbsd/mod.rs
index 9e9de2e120..ef66311268 100644
--- a/src/unix/bsd/netbsdlike/openbsd/mod.rs
+++ b/src/unix/bsd/netbsdlike/openbsd/mod.rs
@@ -1731,6 +1731,19 @@ f! {
(_ALIGN(::mem::size_of::<::cmsghdr>()) + _ALIGN(length as usize))
as ::c_uint
}
+
+ pub fn major(dev: ::dev_t) -> ::c_uint{
+ ((dev as ::c_uint) >> 8) & 0xff
+ }
+
+ pub fn minor(dev: ::dev_t) -> ::c_uint {
+ let dev = dev as ::c_uint;
+ let mut res = 0;
+ res |= (dev) & 0xff;
+ res |= ((dev) & 0xffff0000) >> 8;
+
+ res
+ }
}
safe_f! {