Skip to content

Commit 3e4b6b4

Browse files
committed
add major/minor on BSDs/illumos
1 parent 3daacc5 commit 3e4b6b4

File tree

8 files changed

+86
-0
lines changed

8 files changed

+86
-0
lines changed

src/unix/bsd/freebsdlike/dragonfly/mod.rs

+8
Original file line numberDiff line numberDiff line change
@@ -1577,6 +1577,14 @@ f! {
15771577
let (idx, offset) = ((cpu >> 6) & 3, cpu & 63);
15781578
0 != cpuset.ary[idx] & (1 << offset)
15791579
}
1580+
1581+
pub fn major(dev: ::dev_t) -> ::c_int {
1582+
((dev >> 8) & 0xff) as ::c_int
1583+
}
1584+
1585+
pub fn minor(dev: ::dev_t) -> ::c_int {
1586+
(dev & 0xffff00ff) as ::c_int
1587+
}
15801588
}
15811589

15821590
safe_f! {

src/unix/bsd/freebsdlike/freebsd/freebsd11/mod.rs

+10
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,16 @@ safe_f! {
442442
}
443443
}
444444

445+
f! {
446+
pub fn major(dev: ::dev_t) -> ::c_int {
447+
((dev >> 8) & 0xff) as ::c_int
448+
}
449+
450+
pub fn minor(dev: ::dev_t) -> ::c_int {
451+
(dev & 0xffff00ff) as ::c_int
452+
}
453+
}
454+
445455
extern "C" {
446456
// Return type ::c_int was removed in FreeBSD 12
447457
pub fn setgrent() -> ::c_int;

src/unix/bsd/freebsdlike/freebsd/freebsd12/mod.rs

+10
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,16 @@ safe_f! {
462462
}
463463
}
464464

465+
f! {
466+
pub fn major(dev: ::dev_t) -> ::c_int {
467+
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
468+
}
469+
470+
pub fn minor(dev: ::dev_t) -> ::c_int {
471+
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
472+
}
473+
}
474+
465475
extern "C" {
466476
pub fn setgrent();
467477
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;

src/unix/bsd/freebsdlike/freebsd/freebsd13/mod.rs

+10
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,16 @@ safe_f! {
481481
}
482482
}
483483

484+
f! {
485+
pub fn major(dev: ::dev_t) -> ::c_int {
486+
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
487+
}
488+
489+
pub fn minor(dev: ::dev_t) -> ::c_int {
490+
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
491+
}
492+
}
493+
484494
extern "C" {
485495
pub fn setgrent();
486496
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;

src/unix/bsd/freebsdlike/freebsd/freebsd14/mod.rs

+10
Original file line numberDiff line numberDiff line change
@@ -481,6 +481,16 @@ safe_f! {
481481
}
482482
}
483483

484+
f! {
485+
pub fn major(dev: ::dev_t) -> ::c_int {
486+
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
487+
}
488+
489+
pub fn minor(dev: ::dev_t) -> ::c_int {
490+
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
491+
}
492+
}
493+
484494
extern "C" {
485495
pub fn setgrent();
486496
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;

src/unix/bsd/netbsdlike/netbsd/mod.rs

+11
Original file line numberDiff line numberDiff line change
@@ -2383,6 +2383,17 @@ f! {
23832383
pub fn PROT_MPROTECT_EXTRACT(x: ::c_int) -> ::c_int {
23842384
(x >> 3) & 0x7
23852385
}
2386+
2387+
pub fn major(dev: ::dev_t) -> ::c_int {
2388+
(((dev as u32) & 0x000fff00) >> 8) as ::c_int
2389+
}
2390+
2391+
pub fn minor(dev: ::dev_t) -> ::c_int {
2392+
let mut res = 0;
2393+
res |= ((dev as u32) & 0xfff00000) >> 12;
2394+
res |= ((dev as u32) & 0x000000ff);
2395+
res as ::c_int
2396+
}
23862397
}
23872398

23882399
safe_f! {

src/unix/bsd/netbsdlike/openbsd/mod.rs

+13
Original file line numberDiff line numberDiff line change
@@ -1709,6 +1709,19 @@ f! {
17091709
(_ALIGN(::mem::size_of::<::cmsghdr>()) + _ALIGN(length as usize))
17101710
as ::c_uint
17111711
}
1712+
1713+
pub fn major(dev: ::dev_t) -> ::c_uint{
1714+
((dev as ::c_uint) >> 8) & 0xff
1715+
}
1716+
1717+
pub fn minor(dev: ::dev_t) -> ::c_uint {
1718+
let dev = dev as ::c_uint;
1719+
let mut res = 0;
1720+
res |= (dev) & 0xff;
1721+
res |= ((dev) & 0xffff0000) >> 8;
1722+
1723+
res
1724+
}
17121725
}
17131726

17141727
safe_f! {

src/unix/solarish/mod.rs

+14
Original file line numberDiff line numberDiff line change
@@ -2652,6 +2652,20 @@ f! {
26522652
*slot = 0;
26532653
}
26542654
}
2655+
2656+
pub fn major(device: ::dev_t) -> ::major_t {
2657+
((device >> 8) & 0xff) as ::major_t
2658+
}
2659+
2660+
pub fn minor(device: ::dev_t) -> ::minor_t {
2661+
(device & 0xffff00ff) as ::minor_t
2662+
}
2663+
2664+
pub fn makedev(maj: ::major_t, min: ::minor_t) -> ::dev_t {
2665+
let major = maj as ::dev_t;
2666+
let minor = min as ::dev_t;
2667+
(major << 8) | minor
2668+
}
26552669
}
26562670

26572671
safe_f! {

0 commit comments

Comments
 (0)