Skip to content

Commit 5f45722

Browse files
committed
openbsd: fix width bug for ioctl builder
1 parent eb1f2a8 commit 5f45722

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
@@ -1850,7 +1850,7 @@ pub const MNT_WAIT: c_int = 1;
18501850
pub const MNT_NOWAIT: c_int = 2;
18511851
pub const MNT_LAZY: c_int = 3;
18521852

1853-
// sys/ioccom.h
1853+
// sys/ioccom.h
18541854
pub const IOCPARM_SHIFT: u32 = 16;
18551855
pub const IOCGROUP_SHIFT: u32 = 8;
18561856

@@ -1865,8 +1865,9 @@ pub const fn IOCBASECMD(x: u32) -> u32 {
18651865
pub const fn IOCGROUP(x: u32) -> u32 {
18661866
(x >> IOCGROUP_SHIFT) & 0xff
18671867
}
1868-
pub const fn _IOC(inout: u32, group: u32, num: u32, len: u32) -> u32 {
1869-
(inout) | (((len) & crate::IOCPARM_MASK) << IOCPARM_SHIFT) | ((group) << IOCGROUP_SHIFT) | (num)
1868+
1869+
pub const fn _IOC(inout: c_ulong, group: c_ulong, num: c_ulong, len: c_ulong) -> c_ulong {
1870+
(inout) | (((len) & crate::IOCPARM_MASK as c_ulong) << IOCPARM_SHIFT) | ((group) << IOCGROUP_SHIFT) | (num)
18701871
}
18711872

18721873
//<sys/timex.h>

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1804,7 +1804,7 @@ pub const PF_R: u32 = 0x4;
18041804
pub const PF_MASKOS: u32 = 0x0ff00000;
18051805
pub const PF_MASKPROC: u32 = 0xf0000000;
18061806

1807-
// sys/ioccom.h
1807+
// sys/ioccom.h
18081808
pub const fn IOCPARM_LEN(x: u32) -> u32 {
18091809
(x >> 16) & crate::IOCPARM_MASK
18101810
}
@@ -1816,11 +1816,11 @@ pub const fn IOCBASECMD(x: u32) -> u32 {
18161816
pub const fn IOCGROUP(x: u32) -> u32 {
18171817
(x >> 8) & 0xff
18181818
}
1819-
pub const fn _IOC(inout: u32, group: u32, num: u32, len: u32) -> u32 {
1819+
1820+
pub const fn _IOC(inout: c_ulong, group: c_ulong, num: c_ulong, len: c_ulong) -> c_ulong {
18201821
(inout) | (((len) & crate::IOCPARM_MASK) << 16) | ((group) << 8) | (num)
18211822
}
18221823

1823-
18241824
// sys/mount.h
18251825
pub const MNT_NOPERM: c_int = 0x00000020;
18261826
pub const MNT_WXALLOWED: c_int = 0x00000800;

0 commit comments

Comments
 (0)