Skip to content

Commit 44805ff

Browse files
committed
Auto merge of rust-lang#587 - sfackler:makedev, r=alexcrichton
Add major, minor, makedev functions Only for Linux and Android currently, though they also exist on BSDs
2 parents 9fe8ac4 + dbdce80 commit 44805ff

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

src/unix/notbsd/android/mod.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -753,6 +753,17 @@ f! {
753753
pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
754754
set1.__bits == set2.__bits
755755
}
756+
pub fn major(dev: ::dev_t) -> ::c_int {
757+
((dev >> 8) & 0xfff) as ::c_int
758+
}
759+
pub fn minor(dev: ::dev_t) -> ::c_int {
760+
((dev & 0xff) | ((dev >> 12) & 0xfff00)) as ::c_int
761+
}
762+
pub fn makedev(ma: ::c_int, mi: ::c_int) -> ::dev_t {
763+
let ma = ma as ::dev_t;
764+
let mi = mi as ::dev_t;
765+
((ma & 0xfff) << 8) | (mi & 0xff) | ((mi & 0xfff00) << 12)
766+
}
756767
}
757768

758769
extern {

src/unix/notbsd/linux/mod.rs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -722,6 +722,31 @@ f! {
722722
pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
723723
set1.bits == set2.bits
724724
}
725+
726+
pub fn major(dev: ::dev_t) -> ::c_uint {
727+
let mut major = 0;
728+
major |= (dev & 0x00000000000fff00) >> 8;
729+
major |= (dev & 0xfffff00000000000) >> 32;
730+
major as ::c_uint
731+
}
732+
733+
pub fn minor(dev: ::dev_t) -> ::c_uint {
734+
let mut minor = 0;
735+
minor |= (dev & 0xfffff00000000000) >> 0;
736+
minor |= (dev & 0x00000ffffff00000) >> 12;
737+
minor as ::c_uint
738+
}
739+
740+
pub fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
741+
let major = major as ::dev_t;
742+
let minor = minor as ::dev_t;
743+
let mut dev = 0;
744+
dev |= (major & 0x00000fff) << 8;
745+
dev |= (major & 0xfffff000) << 32;
746+
dev |= (minor & 0x000000ff) << 0;
747+
dev |= (minor & 0xffffff00) << 12;
748+
dev
749+
}
725750
}
726751

727752
extern {

0 commit comments

Comments
 (0)