Skip to content

Commit 19addb7

Browse files
authored
Merge pull request #4582 from xingxue-ibm/fix-ioctl-constants
Fix the types of constants used for the 'request' argument of ioctl() on AIX
2 parents 83280ed + 3c84eb6 commit 19addb7

File tree

2 files changed

+106
-90
lines changed

2 files changed

+106
-90
lines changed

libc-test/build.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5593,6 +5593,22 @@ fn test_aix(target: &str) {
55935593
// values because non-unique values are being used which will
55945594
// fail the test when _ALL_SOURCE is defined.
55955595
"EWOULDBLOCK" | "ENOTEMPTY" => true,
5596+
5597+
// FIXME(ctest): These constants are intended for use as the 'int request' argument
5598+
// to 'ioctl()'. However, the AIX headers do not explicitly define their types. If a
5599+
// value has the sign bit set, it gets sign-extended to a 64-bit value in the 64-bit
5600+
// mode, which fails the comparison with the Rust definitions, where the type is
5601+
//`c_int`.
5602+
"BIOCSETF" | "BIOCSBLEN" | "BIOCSRTIMEOUT" | "BIOCIMMEDIATE" | "BIOCSETIF" | "FIONBIO"
5603+
| "FIOASYNC" | "FIOSETOWN" | "TIOCSETD" | "TIOCMODS" | "TIOCSETP" | "TIOCSETN"
5604+
| "TIOCFLUSH" | "TIOCSETC" | "SIOCADDMULTI" | "SIOCADDRT" | "SIOCDARP" | "SIOCDELMULTI"
5605+
| "SIOCGIFADDR" | "SIOCGIFBRDADDR" | "SIOCGIFCONF" | "SIOCGIFDSTADDR" | "SIOCGIFFLAGS"
5606+
| "SIOCGIFHWADDR" | "SIOCGIFMETRIC" | "SIOCGIFMTU" | "SIOCGIFNETMASK" | "SIOCSARP"
5607+
| "SIOCSIFADDR" | "SIOCSIFBRDADDR" | "SIOCSIFDSTADDR" | "SIOCSIFFLAGS"
5608+
| "SIOCSIFMETRIC" | "SIOCSIFMTU" | "SIOCSIFNETMASK" | "TIOCUCNTL" | "TIOCCONS"
5609+
| "TIOCPKT" | "TIOCSWINSZ" | "TIOCLBIS" | "TIOCLBIC" | "TIOCLSET" | "TIOCSLTC"
5610+
| "TIOCSPGRP" | "TIOCSTI" | "TIOCMSET" | "TIOCMBIS" | "TIOCMBIC" | "TIOCREMOTE" => true,
5611+
55965612
_ => false,
55975613
});
55985614

src/unix/aix/mod.rs

Lines changed: 90 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -826,20 +826,20 @@ pub const DLT_PPP: c_int = 0x17;
826826
pub const DLT_FDDI: c_int = 0xf;
827827
pub const DLT_ATM: c_int = 0x25;
828828
pub const DLT_IPOIB: c_int = 0xc7;
829-
pub const BIOCSETF: c_long = -2146418073;
830-
pub const BIOCGRTIMEOUT: c_long = 1074807406;
831-
pub const BIOCGBLEN: c_long = 1074020966;
832-
pub const BIOCSBLEN: c_long = -1073462682;
833-
pub const BIOCFLUSH: c_long = 536887912;
834-
pub const BIOCPROMISC: c_long = 536887913;
835-
pub const BIOCGDLT: c_long = 1074020970;
836-
pub const BIOCSRTIMEOUT: c_long = -2146418067;
837-
pub const BIOCGSTATS: c_long = 1074283119;
838-
pub const BIOCIMMEDIATE: c_long = -2147204496;
839-
pub const BIOCVERSION: c_long = 1074020977;
840-
pub const BIOCSDEVNO: c_long = 536887922;
841-
pub const BIOCGETIF: c_long = 1075855979;
842-
pub const BIOCSETIF: c_long = -2145369492;
829+
pub const BIOCSETF: c_int = 0x80104267;
830+
pub const BIOCGRTIMEOUT: c_int = 0x4010426e;
831+
pub const BIOCGBLEN: c_int = 0x40044266;
832+
pub const BIOCSBLEN: c_int = 0xc0044266;
833+
pub const BIOCFLUSH: c_int = 0x20004268;
834+
pub const BIOCPROMISC: c_int = 0x20004269;
835+
pub const BIOCGDLT: c_int = 0x4004426a;
836+
pub const BIOCSRTIMEOUT: c_int = 0x8010426d;
837+
pub const BIOCGSTATS: c_int = 0x4008426f;
838+
pub const BIOCIMMEDIATE: c_int = 0x80044270;
839+
pub const BIOCVERSION: c_int = 0x40044271;
840+
pub const BIOCSDEVNO: c_int = 0x20004272;
841+
pub const BIOCGETIF: c_int = 0x4020426b;
842+
pub const BIOCSETIF: c_int = 0x8020426c;
843843
pub const BPF_ABS: c_int = 32;
844844
pub const BPF_ADD: c_int = 0;
845845
pub const BPF_ALIGNMENT: c_ulong = 4;
@@ -1362,22 +1362,22 @@ pub const Q_SETQUOTA: c_int = 0x400;
13621362

13631363
// sys/ioctl.h
13641364
pub const IOCPARM_MASK: c_int = 0x7f;
1365-
pub const IOC_VOID: c_long = 536870912;
1366-
pub const IOC_OUT: c_long = 1073741824;
1367-
pub const IOC_IN: c_long = -2147483648;
1368-
pub const IOC_INOUT: c_long = IOC_IN | IOC_OUT;
1369-
pub const FIOCLEX: c_long = 536897025;
1370-
pub const FIONCLEX: c_long = 536897026;
1371-
pub const FIONREAD: c_long = 1074030207;
1372-
pub const FIONBIO: c_long = -2147195266;
1373-
pub const FIOASYNC: c_long = -2147195267;
1374-
pub const FIOSETOWN: c_long = -2147195268;
1375-
pub const FIOGETOWN: c_long = 1074030203;
1376-
pub const TIOCGETD: c_long = 1074033664;
1377-
pub const TIOCSETD: c_long = -2147191807;
1378-
pub const TIOCHPCL: c_long = 536900610;
1379-
pub const TIOCMODG: c_long = 1074033667;
1380-
pub const TIOCMODS: c_long = -2147191804;
1365+
pub const IOC_VOID: c_int = 0x20000000;
1366+
pub const IOC_OUT: c_int = 0x40000000;
1367+
pub const IOC_IN: c_int = 0x40000000 << 1;
1368+
pub const IOC_INOUT: c_int = IOC_IN | IOC_OUT;
1369+
pub const FIOCLEX: c_int = 0x20006601;
1370+
pub const FIONCLEX: c_int = 0x20006602;
1371+
pub const FIONREAD: c_int = 0x4004667f;
1372+
pub const FIONBIO: c_int = 0x8004667e;
1373+
pub const FIOASYNC: c_int = 0x8004667d;
1374+
pub const FIOSETOWN: c_int = 0x8004667c;
1375+
pub const FIOGETOWN: c_int = 0x4004667b;
1376+
pub const TIOCGETD: c_int = 0x40047400;
1377+
pub const TIOCSETD: c_int = 0x80047401;
1378+
pub const TIOCHPCL: c_int = 0x20007402;
1379+
pub const TIOCMODG: c_int = 0x40047403;
1380+
pub const TIOCMODS: c_int = 0x80047404;
13811381
pub const TIOCM_LE: c_int = 0x1;
13821382
pub const TIOCM_DTR: c_int = 0x2;
13831383
pub const TIOCM_RTS: c_int = 0x4;
@@ -1389,46 +1389,46 @@ pub const TIOCM_CD: c_int = 0x40;
13891389
pub const TIOCM_RNG: c_int = 0x80;
13901390
pub const TIOCM_RI: c_int = 0x80;
13911391
pub const TIOCM_DSR: c_int = 0x100;
1392-
pub const TIOCGETP: c_long = 1074164744;
1393-
pub const TIOCSETP: c_long = -2147060727;
1394-
pub const TIOCSETN: c_long = -2147060726;
1395-
pub const TIOCEXCL: c_long = 536900621;
1396-
pub const TIOCNXCL: c_long = 536900622;
1397-
pub const TIOCFLUSH: c_long = -2147191792;
1398-
pub const TIOCSETC: c_long = -2147060719;
1399-
pub const TIOCGETC: c_long = 1074164754;
1392+
pub const TIOCGETP: c_int = 0x40067408;
1393+
pub const TIOCSETP: c_int = 0x80067409;
1394+
pub const TIOCSETN: c_int = 0x8006740a;
1395+
pub const TIOCEXCL: c_int = 0x2000740d;
1396+
pub const TIOCNXCL: c_int = 0x2000740e;
1397+
pub const TIOCFLUSH: c_int = 0x80047410;
1398+
pub const TIOCSETC: c_int = 0x80067411;
1399+
pub const TIOCGETC: c_int = 0x40067412;
14001400
pub const TANDEM: c_int = 0x1;
14011401
pub const CBREAK: c_int = 0x2;
14021402
pub const LCASE: c_int = 0x4;
14031403
pub const MDMBUF: c_int = 0x800000;
14041404
pub const XTABS: c_int = 0xc00;
1405-
pub const SIOCADDMULTI: c_long = -2145359567;
1406-
pub const SIOCADDRT: c_long = -2143784438;
1407-
pub const SIOCDARP: c_long = -2142476000;
1408-
pub const SIOCDELMULTI: c_long = -2145359566;
1409-
pub const SIOCDELRT: c_long = -2143784437;
1410-
pub const SIOCDIFADDR: c_long = -2144835303;
1411-
pub const SIOCGARP: c_long = -1068734170;
1412-
pub const SIOCGIFADDR: c_long = -1071093471;
1413-
pub const SIOCGIFBRDADDR: c_long = -1071093469;
1414-
pub const SIOCGIFCONF: c_long = -1072666299;
1415-
pub const SIOCGIFDSTADDR: c_long = -1071093470;
1416-
pub const SIOCGIFFLAGS: c_long = -1071093487;
1417-
pub const SIOCGIFHWADDR: c_long = -1068209771;
1418-
pub const SIOCGIFMETRIC: c_long = -1071093481;
1419-
pub const SIOCGIFMTU: c_long = -1071093418;
1420-
pub const SIOCGIFNETMASK: c_long = -1071093467;
1421-
pub const SIOCSARP: c_long = -2142476002;
1422-
pub const SIOCSIFADDR: c_long = -2144835316;
1423-
pub const SIOCSIFBRDADDR: c_long = -2144835309;
1424-
pub const SIOCSIFDSTADDR: c_long = -2144835314;
1425-
pub const SIOCSIFFLAGS: c_long = -2144835312;
1426-
pub const SIOCSIFMETRIC: c_long = -2144835304;
1427-
pub const SIOCSIFMTU: c_long = -2144835240;
1428-
pub const SIOCSIFNETMASK: c_long = -2144835306;
1429-
pub const TIOCUCNTL: c_long = -2147191706;
1430-
pub const TIOCCONS: c_long = -2147191710;
1431-
pub const TIOCPKT: c_long = -2147191696;
1405+
pub const SIOCADDMULTI: c_int = 0x80206931;
1406+
pub const SIOCADDRT: c_int = 0x8038720a;
1407+
pub const SIOCDARP: c_int = 0x804c6920;
1408+
pub const SIOCDELMULTI: c_int = 0x80206932;
1409+
pub const SIOCDELRT: c_int = 0x8038720b;
1410+
pub const SIOCDIFADDR: c_int = 0x80286919;
1411+
pub const SIOCGARP: c_int = 0xc04c6926;
1412+
pub const SIOCGIFADDR: c_int = 0xc0286921;
1413+
pub const SIOCGIFBRDADDR: c_int = 0xc0286923;
1414+
pub const SIOCGIFCONF: c_int = 0xc0106945;
1415+
pub const SIOCGIFDSTADDR: c_int = 0xc0286922;
1416+
pub const SIOCGIFFLAGS: c_int = 0xc0286911;
1417+
pub const SIOCGIFHWADDR: c_int = 0xc0546995;
1418+
pub const SIOCGIFMETRIC: c_int = 0xc0286917;
1419+
pub const SIOCGIFMTU: c_int = 0xc0286956;
1420+
pub const SIOCGIFNETMASK: c_int = 0xc0286925;
1421+
pub const SIOCSARP: c_int = 0x804c691e;
1422+
pub const SIOCSIFADDR: c_int = 0x8028690c;
1423+
pub const SIOCSIFBRDADDR: c_int = 0x80286913;
1424+
pub const SIOCSIFDSTADDR: c_int = 0x8028690e;
1425+
pub const SIOCSIFFLAGS: c_int = 0x80286910;
1426+
pub const SIOCSIFMETRIC: c_int = 0x80286918;
1427+
pub const SIOCSIFMTU: c_int = 0x80286958;
1428+
pub const SIOCSIFNETMASK: c_int = 0x80286916;
1429+
pub const TIOCUCNTL: c_int = 0x80047466;
1430+
pub const TIOCCONS: c_int = 0x80047462;
1431+
pub const TIOCPKT: c_int = 0x80047470;
14321432
pub const TIOCPKT_DATA: c_int = 0;
14331433
pub const TIOCPKT_FLUSHREAD: c_int = 1;
14341434
pub const TIOCPKT_FLUSHWRITE: c_int = 2;
@@ -2092,31 +2092,31 @@ pub const TCOON: c_int = 1;
20922092
pub const TCIOFF: c_int = 2;
20932093
pub const TCION: c_int = 3;
20942094
pub const TIOC: c_int = 0x5400;
2095-
pub const TIOCGWINSZ: c_long = 1074295912;
2096-
pub const TIOCSWINSZ: c_long = -2146929561;
2097-
pub const TIOCLBIS: c_long = -2147191681;
2098-
pub const TIOCLBIC: c_long = -2147191682;
2099-
pub const TIOCLSET: c_long = -2147191683;
2100-
pub const TIOCLGET: c_long = 1074033788;
2101-
pub const TIOCSBRK: c_long = 536900731;
2102-
pub const TIOCCBRK: c_long = 536900730;
2103-
pub const TIOCSDTR: c_long = 536900729;
2104-
pub const TIOCCDTR: c_long = 536900728;
2105-
pub const TIOCSLTC: c_long = -2147060619;
2106-
pub const TIOCGLTC: c_long = 1074164852;
2107-
pub const TIOCOUTQ: c_long = 1074033779;
2108-
pub const TIOCNOTTY: c_long = 536900721;
2109-
pub const TIOCSTOP: c_long = 536900719;
2110-
pub const TIOCSTART: c_long = 536900718;
2111-
pub const TIOCGPGRP: c_long = 1074033783;
2112-
pub const TIOCSPGRP: c_long = -2147191690;
2113-
pub const TIOCGSID: c_long = 1074033736;
2114-
pub const TIOCSTI: c_long = -2147388302;
2115-
pub const TIOCMSET: c_long = -2147191699;
2116-
pub const TIOCMBIS: c_long = -2147191700;
2117-
pub const TIOCMBIC: c_long = -2147191701;
2118-
pub const TIOCMGET: c_long = 1074033770;
2119-
pub const TIOCREMOTE: c_long = -2147191703;
2095+
pub const TIOCGWINSZ: c_int = 0x40087468;
2096+
pub const TIOCSWINSZ: c_int = 0x80087467;
2097+
pub const TIOCLBIS: c_int = 0x8004747f;
2098+
pub const TIOCLBIC: c_int = 0x8004747e;
2099+
pub const TIOCLSET: c_int = 0x8004747d;
2100+
pub const TIOCLGET: c_int = 0x4004747c;
2101+
pub const TIOCSBRK: c_int = 0x2000747b;
2102+
pub const TIOCCBRK: c_int = 0x2000747a;
2103+
pub const TIOCSDTR: c_int = 0x20007479;
2104+
pub const TIOCCDTR: c_int = 0x20007478;
2105+
pub const TIOCSLTC: c_int = 0x80067475;
2106+
pub const TIOCGLTC: c_int = 0x40067474;
2107+
pub const TIOCOUTQ: c_int = 0x40047473;
2108+
pub const TIOCNOTTY: c_int = 0x20007471;
2109+
pub const TIOCSTOP: c_int = 0x2000746f;
2110+
pub const TIOCSTART: c_int = 0x2000746e;
2111+
pub const TIOCGPGRP: c_int = 0x40047477;
2112+
pub const TIOCSPGRP: c_int = 0x80047476;
2113+
pub const TIOCGSID: c_int = 0x40047448;
2114+
pub const TIOCSTI: c_int = 0x80017472;
2115+
pub const TIOCMSET: c_int = 0x8004746d;
2116+
pub const TIOCMBIS: c_int = 0x8004746c;
2117+
pub const TIOCMBIC: c_int = 0x8004746b;
2118+
pub const TIOCMGET: c_int = 0x4004746a;
2119+
pub const TIOCREMOTE: c_int = 0x80047469;
21202120

21212121
// sys/user.h
21222122
pub const MAXCOMLEN: c_int = 32;

0 commit comments

Comments
 (0)