Skip to content

Commit 54aa6e7

Browse files
qinghontgross35
authored andcommitted
openbsd: fix width bug for ioctl builder
1 parent a08ea58 commit 54aa6e7

File tree

5 files changed

+25
-18
lines changed

5 files changed

+25
-18
lines changed

libc-test/semver/netbsd.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,6 +1128,7 @@ XATTR_REPLACE
11281128
YESEXPR
11291129
YESSTR
11301130
_IO
1131+
_IOC
11311132
_IOFBF
11321133
_IOLBF
11331134
_IONBF

libc-test/semver/openbsd.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -917,9 +917,14 @@ WSTOPPED
917917
WTRAPPED
918918
YESEXPR
919919
YESSTR
920+
_IO
921+
_IOC
920922
_IOFBF
921923
_IOLBF
922924
_IONBF
925+
_IOR
926+
_IOW
927+
_IOWR
923928
_MAX_PAGE_SHIFT
924929
_PC_2_SYMLINKS
925930
_PC_ALLOC_SIZE_MIN

src/unix/bsd/netbsdlike/mod.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -442,29 +442,29 @@ pub const MNT_QUOTA: c_int = 0x00002000;
442442
// sys/ioccom.h in NetBSD and OpenBSD
443443
pub const IOCPARM_MASK: u32 = 0x1fff;
444444

445-
pub const IOC_VOID: u32 = 0x20000000;
446-
pub const IOC_OUT: u32 = 0x40000000;
447-
pub const IOC_IN: u32 = 0x80000000;
448-
pub const IOC_INOUT: u32 = IOC_IN | IOC_OUT;
449-
pub const IOC_DIRMASK: u32 = 0xe0000000;
445+
pub const IOC_VOID: c_ulong = 0x20000000;
446+
pub const IOC_OUT: c_ulong = 0x40000000;
447+
pub const IOC_IN: c_ulong = 0x80000000;
448+
pub const IOC_INOUT: c_ulong = IOC_IN | IOC_OUT;
449+
pub const IOC_DIRMASK: c_ulong = 0xe0000000;
450450

451-
pub const fn _IO(g: u32, n: u32) -> u32 {
451+
pub const fn _IO(g: c_ulong, n: c_ulong) -> c_ulong {
452452
_IOC(IOC_VOID, g, n, 0)
453453
}
454454

455455
/// Build an ioctl number for an read-only ioctl.
456-
pub const fn _IOR<T>(g: u32, n: u32) -> u32 {
457-
_IOC(IOC_OUT, g, n, mem::size_of::<T>() as u32)
456+
pub const fn _IOR<T>(g: c_ulong, n: c_ulong) -> c_ulong {
457+
_IOC(IOC_OUT, g, n, mem::size_of::<T>() as c_ulong)
458458
}
459459

460460
/// Build an ioctl number for an write-only ioctl.
461-
pub const fn _IOW<T>(g: u32, n: u32) -> u32 {
462-
_IOC(IOC_IN, g, n, mem::size_of::<T>() as u32)
461+
pub const fn _IOW<T>(g: c_ulong, n: c_ulong) -> c_ulong {
462+
_IOC(IOC_IN, g, n, mem::size_of::<T>() as c_ulong)
463463
}
464464

465465
/// Build an ioctl number for a read-write ioctl.
466-
pub const fn _IOWR<T>(g: u32, n: u32) -> u32 {
467-
_IOC(IOC_INOUT, g, n, mem::size_of::<T>() as u32)
466+
pub const fn _IOWR<T>(g: c_ulong, n: c_ulong) -> c_ulong {
467+
_IOC(IOC_INOUT, g, n, mem::size_of::<T>() as c_ulong)
468468
}
469469

470470
pub const AF_UNSPEC: c_int = 0;

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1712,7 +1712,7 @@ pub const MNT_WAIT: c_int = 1;
17121712
pub const MNT_NOWAIT: c_int = 2;
17131713
pub const MNT_LAZY: c_int = 3;
17141714

1715-
// sys/ioccom.h
1715+
// sys/ioccom.h
17161716
pub const IOCPARM_SHIFT: u32 = 16;
17171717
pub const IOCGROUP_SHIFT: u32 = 8;
17181718

@@ -1727,8 +1727,9 @@ pub const fn IOCBASECMD(x: u32) -> u32 {
17271727
pub const fn IOCGROUP(x: u32) -> u32 {
17281728
(x >> IOCGROUP_SHIFT) & 0xff
17291729
}
1730-
pub const fn _IOC(inout: u32, group: u32, num: u32, len: u32) -> u32 {
1731-
(inout) | (((len) & crate::IOCPARM_MASK) << IOCPARM_SHIFT) | ((group) << IOCGROUP_SHIFT) | (num)
1730+
1731+
pub const fn _IOC(inout: c_ulong, group: c_ulong, num: c_ulong, len: c_ulong) -> c_ulong {
1732+
(inout) | (((len) & crate::IOCPARM_MASK as c_ulong) << IOCPARM_SHIFT) | ((group) << IOCGROUP_SHIFT) | (num)
17321733
}
17331734

17341735
//<sys/timex.h>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1721,7 +1721,7 @@ pub const PF_R: u32 = 0x4;
17211721
pub const PF_MASKOS: u32 = 0x0ff00000;
17221722
pub const PF_MASKPROC: u32 = 0xf0000000;
17231723

1724-
// sys/ioccom.h
1724+
// sys/ioccom.h
17251725
pub const fn IOCPARM_LEN(x: u32) -> u32 {
17261726
(x >> 16) & crate::IOCPARM_MASK
17271727
}
@@ -1733,11 +1733,11 @@ pub const fn IOCBASECMD(x: u32) -> u32 {
17331733
pub const fn IOCGROUP(x: u32) -> u32 {
17341734
(x >> 8) & 0xff
17351735
}
1736-
pub const fn _IOC(inout: u32, group: u32, num: u32, len: u32) -> u32 {
1736+
1737+
pub const fn _IOC(inout: c_ulong, group: c_ulong, num: c_ulong, len: c_ulong) -> c_ulong {
17371738
(inout) | (((len) & crate::IOCPARM_MASK) << 16) | ((group) << 8) | (num)
17381739
}
17391740

1740-
17411741
// sys/mount.h
17421742
pub const MNT_NOPERM: c_int = 0x00000020;
17431743
pub const MNT_WXALLOWED: c_int = 0x00000800;

0 commit comments

Comments
 (0)