File tree 9 files changed +91
-0
lines changed
9 files changed +91
-0
lines changed Original file line number Diff line number Diff line change @@ -821,6 +821,7 @@ fn test_solarish(target: &str) {
821
821
"sys/ioctl.h" ,
822
822
"sys/lgrp_user.h" ,
823
823
"sys/loadavg.h" ,
824
+ "sys/mkdev.h" ,
824
825
"sys/mman.h" ,
825
826
"sys/mount.h" ,
826
827
"sys/priv.h" ,
Original file line number Diff line number Diff line change @@ -1578,6 +1578,14 @@ f! {
1578
1578
let ( idx, offset) = ( ( cpu >> 6 ) & 3 , cpu & 63 ) ;
1579
1579
0 != cpuset. ary[ idx] & ( 1 << offset)
1580
1580
}
1581
+
1582
+ pub fn major( dev: :: dev_t) -> :: c_int {
1583
+ ( ( dev >> 8 ) & 0xff ) as :: c_int
1584
+ }
1585
+
1586
+ pub fn minor( dev: :: dev_t) -> :: c_int {
1587
+ ( dev & 0xffff00ff ) as :: c_int
1588
+ }
1581
1589
}
1582
1590
1583
1591
safe_f ! {
Original file line number Diff line number Diff line change @@ -442,6 +442,16 @@ safe_f! {
442
442
}
443
443
}
444
444
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
+
445
455
extern "C" {
446
456
// Return type ::c_int was removed in FreeBSD 12
447
457
pub fn setgrent ( ) -> :: c_int ;
Original file line number Diff line number Diff line change @@ -462,6 +462,16 @@ safe_f! {
462
462
}
463
463
}
464
464
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
+
465
475
extern "C" {
466
476
pub fn setgrent ( ) ;
467
477
pub fn mprotect ( addr : * mut :: c_void , len : :: size_t , prot : :: c_int ) -> :: c_int ;
Original file line number Diff line number Diff line change @@ -481,6 +481,16 @@ safe_f! {
481
481
}
482
482
}
483
483
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
+
484
494
extern "C" {
485
495
pub fn setgrent ( ) ;
486
496
pub fn mprotect ( addr : * mut :: c_void , len : :: size_t , prot : :: c_int ) -> :: c_int ;
Original file line number Diff line number Diff line change @@ -481,6 +481,16 @@ safe_f! {
481
481
}
482
482
}
483
483
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
+
484
494
extern "C" {
485
495
pub fn setgrent ( ) ;
486
496
pub fn mprotect ( addr : * mut :: c_void , len : :: size_t , prot : :: c_int ) -> :: c_int ;
Original file line number Diff line number Diff line change @@ -2472,6 +2472,17 @@ f! {
2472
2472
pub fn PROT_MPROTECT_EXTRACT ( x: :: c_int) -> :: c_int {
2473
2473
( x >> 3 ) & 0x7
2474
2474
}
2475
+
2476
+ pub fn major( dev: :: dev_t) -> :: c_int {
2477
+ ( ( ( dev as u32 ) & 0x000fff00 ) >> 8 ) as :: c_int
2478
+ }
2479
+
2480
+ pub fn minor( dev: :: dev_t) -> :: c_int {
2481
+ let mut res = 0 ;
2482
+ res |= ( ( dev as u32 ) & 0xfff00000 ) >> 12 ;
2483
+ res |= ( dev as u32 ) & 0x000000ff ;
2484
+ res as :: c_int
2485
+ }
2475
2486
}
2476
2487
2477
2488
safe_f ! {
Original file line number Diff line number Diff line change @@ -1731,6 +1731,19 @@ f! {
1731
1731
( _ALIGN( :: mem:: size_of:: <:: cmsghdr>( ) ) + _ALIGN( length as usize ) )
1732
1732
as :: c_uint
1733
1733
}
1734
+
1735
+ pub fn major( dev: :: dev_t) -> :: c_uint{
1736
+ ( ( dev as :: c_uint) >> 8 ) & 0xff
1737
+ }
1738
+
1739
+ pub fn minor( dev: :: dev_t) -> :: c_uint {
1740
+ let dev = dev as :: c_uint;
1741
+ let mut res = 0 ;
1742
+ res |= ( dev) & 0xff ;
1743
+ res |= ( ( dev) & 0xffff0000 ) >> 8 ;
1744
+
1745
+ res
1746
+ }
1734
1747
}
1735
1748
1736
1749
safe_f ! {
Original file line number Diff line number Diff line change @@ -2584,6 +2584,8 @@ const _CMSG_HDR_ALIGNMENT: usize = 4;
2584
2584
2585
2585
const _CMSG_DATA_ALIGNMENT: usize = :: mem:: size_of :: < :: c_int > ( ) ;
2586
2586
2587
+ const NEWDEV : :: c_int = 1 ;
2588
+
2587
2589
const_fn ! {
2588
2590
{ const } fn _CMSG_HDR_ALIGN( p: usize ) -> usize {
2589
2591
( p + _CMSG_HDR_ALIGNMENT - 1 ) & !( _CMSG_HDR_ALIGNMENT - 1 )
@@ -3198,6 +3200,10 @@ extern "C" {
3198
3200
) -> :: c_int ;
3199
3201
3200
3202
pub fn sync ( ) ;
3203
+
3204
+ fn __major ( version : :: c_int , devnum : :: dev_t ) -> :: major_t ;
3205
+ fn __minor ( version : :: c_int , devnum : :: dev_t ) -> :: minor_t ;
3206
+ fn __makedev ( version : :: c_int , majdev : :: major_t , mindev : :: minor_t ) -> :: dev_t ;
3201
3207
}
3202
3208
3203
3209
#[ link( name = "sendfile" ) ]
@@ -3254,6 +3260,18 @@ extern "C" {
3254
3260
pub fn lgrp_root ( cookie : :: lgrp_cookie_t ) -> :: lgrp_id_t ;
3255
3261
}
3256
3262
3263
+ pub unsafe fn major ( device : :: dev_t ) -> :: major_t {
3264
+ __major ( NEWDEV , device)
3265
+ }
3266
+
3267
+ pub unsafe fn minor ( device : :: dev_t ) -> :: minor_t {
3268
+ __minor ( NEWDEV , device)
3269
+ }
3270
+
3271
+ pub unsafe fn makedev ( maj : :: major_t , min : :: minor_t ) -> :: dev_t {
3272
+ __makedev ( NEWDEV , maj, min)
3273
+ }
3274
+
3257
3275
mod compat;
3258
3276
pub use self :: compat:: * ;
3259
3277
You can’t perform that action at this time.
0 commit comments