File tree Expand file tree Collapse file tree 9 files changed +91
-0
lines changed Expand file tree Collapse file tree 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) {
821821 "sys/ioctl.h" ,
822822 "sys/lgrp_user.h" ,
823823 "sys/loadavg.h" ,
824+ "sys/mkdev.h" ,
824825 "sys/mman.h" ,
825826 "sys/mount.h" ,
826827 "sys/priv.h" ,
Original file line number Diff line number Diff line change @@ -1578,6 +1578,14 @@ f! {
15781578 let ( idx, offset) = ( ( cpu >> 6 ) & 3 , cpu & 63 ) ;
15791579 0 != cpuset. ary[ idx] & ( 1 << offset)
15801580 }
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+ }
15811589}
15821590
15831591safe_f ! {
Original file line number Diff line number Diff 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+
445455extern "C" {
446456 // Return type ::c_int was removed in FreeBSD 12
447457 pub fn setgrent ( ) -> :: c_int ;
Original file line number Diff line number Diff 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+
465475extern "C" {
466476 pub fn setgrent ( ) ;
467477 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! {
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+
484494extern "C" {
485495 pub fn setgrent ( ) ;
486496 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! {
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+
484494extern "C" {
485495 pub fn setgrent ( ) ;
486496 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 @@ -2464,6 +2464,17 @@ f! {
24642464 pub fn PROT_MPROTECT_EXTRACT ( x: :: c_int) -> :: c_int {
24652465 ( x >> 3 ) & 0x7
24662466 }
2467+
2468+ pub fn major( dev: :: dev_t) -> :: c_int {
2469+ ( ( ( dev as u32 ) & 0x000fff00 ) >> 8 ) as :: c_int
2470+ }
2471+
2472+ pub fn minor( dev: :: dev_t) -> :: c_int {
2473+ let mut res = 0 ;
2474+ res |= ( ( dev as u32 ) & 0xfff00000 ) >> 12 ;
2475+ res |= ( dev as u32 ) & 0x000000ff ;
2476+ res as :: c_int
2477+ }
24672478}
24682479
24692480safe_f ! {
Original file line number Diff line number Diff line change @@ -1729,6 +1729,19 @@ f! {
17291729 ( _ALIGN( :: mem:: size_of:: <:: cmsghdr>( ) ) + _ALIGN( length as usize ) )
17301730 as :: c_uint
17311731 }
1732+
1733+ pub fn major( dev: :: dev_t) -> :: c_uint{
1734+ ( ( dev as :: c_uint) >> 8 ) & 0xff
1735+ }
1736+
1737+ pub fn minor( dev: :: dev_t) -> :: c_uint {
1738+ let dev = dev as :: c_uint;
1739+ let mut res = 0 ;
1740+ res |= ( dev) & 0xff ;
1741+ res |= ( ( dev) & 0xffff0000 ) >> 8 ;
1742+
1743+ res
1744+ }
17321745}
17331746
17341747safe_f ! {
Original file line number Diff line number Diff line change @@ -2584,6 +2584,8 @@ const _CMSG_HDR_ALIGNMENT: usize = 4;
25842584
25852585const _CMSG_DATA_ALIGNMENT: usize = :: mem:: size_of :: < :: c_int > ( ) ;
25862586
2587+ const NEWDEV : :: c_int = 1 ;
2588+
25872589const_fn ! {
25882590 { const } fn _CMSG_HDR_ALIGN( p: usize ) -> usize {
25892591 ( p + _CMSG_HDR_ALIGNMENT - 1 ) & !( _CMSG_HDR_ALIGNMENT - 1 )
@@ -3198,6 +3200,10 @@ extern "C" {
31983200 ) -> :: c_int ;
31993201
32003202 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 ;
32013207}
32023208
32033209#[ link( name = "sendfile" ) ]
@@ -3254,6 +3260,18 @@ extern "C" {
32543260 pub fn lgrp_root ( cookie : :: lgrp_cookie_t ) -> :: lgrp_id_t ;
32553261}
32563262
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+
32573275mod compat;
32583276pub use self :: compat:: * ;
32593277
You can’t perform that action at this time.
0 commit comments