Skip to content

Commit

Permalink
add major/minor on BSDs/illumos
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveLauC committed Nov 11, 2022
1 parent 3daacc5 commit 3e4b6b4
Show file tree
Hide file tree
Showing 8 changed files with 86 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/unix/bsd/freebsdlike/dragonfly/mod.rs
Expand Up @@ -1577,6 +1577,14 @@ f! {
let (idx, offset) = ((cpu >> 6) & 3, cpu & 63);
0 != cpuset.ary[idx] & (1 << offset)
}

pub fn major(dev: ::dev_t) -> ::c_int {
((dev >> 8) & 0xff) as ::c_int
}

pub fn minor(dev: ::dev_t) -> ::c_int {
(dev & 0xffff00ff) as ::c_int
}
}

safe_f! {
Expand Down
10 changes: 10 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs
Expand Up @@ -442,6 +442,16 @@ safe_f! {
}
}

f! {
pub fn major(dev: ::dev_t) -> ::c_int {
((dev >> 8) & 0xff) as ::c_int
}

pub fn minor(dev: ::dev_t) -> ::c_int {
(dev & 0xffff00ff) as ::c_int
}
}

extern "C" {
// Return type ::c_int was removed in FreeBSD 12
pub fn setgrent() -> ::c_int;
Expand Down
10 changes: 10 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs
Expand Up @@ -462,6 +462,16 @@ safe_f! {
}
}

f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
}

pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
}
}

extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
Expand Down
10 changes: 10 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs
Expand Up @@ -481,6 +481,16 @@ safe_f! {
}
}

f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
}

pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
}
}

extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
Expand Down
10 changes: 10 additions & 0 deletions src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs
Expand Up @@ -481,6 +481,16 @@ safe_f! {
}
}

f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
}

pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
}
}

extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
Expand Down
11 changes: 11 additions & 0 deletions src/unix/bsd/netbsdlike/netbsd/mod.rs
Expand Up @@ -2383,6 +2383,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! {
Expand Down
13 changes: 13 additions & 0 deletions src/unix/bsd/netbsdlike/openbsd/mod.rs
Expand Up @@ -1709,6 +1709,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! {
Expand Down
14 changes: 14 additions & 0 deletions src/unix/solarish/mod.rs
Expand Up @@ -2652,6 +2652,20 @@ f! {
*slot = 0;
}
}

pub fn major(device: ::dev_t) -> ::major_t {
((device >> 8) & 0xff) as ::major_t
}

pub fn minor(device: ::dev_t) -> ::minor_t {
(device & 0xffff00ff) as ::minor_t
}

pub fn makedev(maj: ::major_t, min: ::minor_t) -> ::dev_t {
let major = maj as ::dev_t;
let minor = min as ::dev_t;
(major << 8) | minor
}
}

safe_f! {
Expand Down

0 comments on commit 3e4b6b4

Please sign in to comment.