1 #[cfg(not(all(target_os = "android", target_pointer_width = "32")))]
5 #[cfg(not(any(target_os = "android", target_os = "emscripten")))]
7 pub(crate) fn makedev(maj
: u32, min
: u32) -> Dev
{
8 unsafe { c::makedev(maj, min) }
11 #[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
13 pub(crate) fn makedev(maj
: u32, min
: u32) -> Dev
{
14 // Android's `makedev` oddly has signed argument types.
15 unsafe { c::makedev(maj as i32, min as i32) }
18 #[cfg(all(target_os = "android", target_pointer_width = "32"))]
20 pub(crate) fn makedev(maj
: u32, min
: u32) -> Dev
{
21 // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
22 // so we do it ourselves.
23 ((u64::from(maj
) & 0xffff_f000_u64) << 32)
24 | ((u64::from(maj
) & 0x0000_0fff_u64) << 8)
25 | ((u64::from(min
) & 0xffff_ff00_u64) << 12)
26 | (u64::from(min
) & 0x0000_00ff_u64)
29 #[cfg(target_os = "emscripten")]
31 pub(crate) fn makedev(maj
: u32, min
: u32) -> Dev
{
32 // Emscripten's `makedev` has a 32-bit return value.
33 Dev
::from(unsafe { c::makedev(maj, min) }
)
36 #[cfg(not(any(target_os = "android", target_os = "emscripten")))]
38 pub(crate) fn major(dev
: Dev
) -> u32 {
39 unsafe { c::major(dev) }
42 #[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
44 pub(crate) fn major(dev
: Dev
) -> u32 {
45 // Android's `major` oddly has signed return types.
46 (unsafe { c::major(dev) }
) as u32
49 #[cfg(all(target_os = "android", target_pointer_width = "32"))]
51 pub(crate) fn major(dev
: Dev
) -> u32 {
52 // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
53 // so we do it ourselves.
54 (((dev
>> 31 >> 1) & 0xffff_f000) | ((dev
>> 8) & 0x0000_0fff)) as u32
57 #[cfg(target_os = "emscripten")]
59 pub(crate) fn major(dev
: Dev
) -> u32 {
60 // Emscripten's `major` has a 32-bit argument value.
61 unsafe { c::major(dev as u32) }
64 #[cfg(not(any(target_os = "android", target_os = "emscripten")))]
66 pub(crate) fn minor(dev
: Dev
) -> u32 {
67 unsafe { c::minor(dev) }
70 #[cfg(all(target_os = "android", not(target_pointer_width = "32")))]
72 pub(crate) fn minor(dev
: Dev
) -> u32 {
73 // Android's `minor` oddly has signed return types.
74 (unsafe { c::minor(dev) }
) as u32
77 #[cfg(all(target_os = "android", target_pointer_width = "32"))]
79 pub(crate) fn minor(dev
: Dev
) -> u32 {
80 // 32-bit Android's `dev_t` is 32-bit, but its `st_dev` is 64-bit,
81 // so we do it ourselves.
82 (((dev
>> 12) & 0xffff_ff00) | (dev
& 0x0000_00ff)) as u32
85 #[cfg(target_os = "emscripten")]
87 pub(crate) fn minor(dev
: Dev
) -> u32 {
88 // Emscripten's `minor` has a 32-bit argument value.
89 unsafe { c::minor(dev as u32) }