authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2024-08-03 17:51:22+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-08-09 13:10:51-07:00
logae5bf2faabfe949e2cb94a230e79614c7eafd84a
tree73b4b02e6510f162e620f1aa1225c92920912f47
parent71a27ebd847bbd09d246eaf6657359ecfa0f8483

std.os.linux: Retranslate and port some ioctl-related types and values.


1 files changed, 924 insertions(+), 345 deletions(-)

lib/std/os/linux.zig+924-345
...@@ -4027,50 +4027,354 @@ pub const DT = struct {...@@ -4027,50 +4027,354 @@ pub const DT = struct {
4027 pub const WHT = 14;4027 pub const WHT = 14;
4028};4028};
40294029
4030pub const T = struct {4030pub const T = if (is_mips) struct {
4031 pub const CGETS = if (is_mips) 0x540D else 0x5401;4031 pub const CGETA = 0x5401;
4032 pub const CSETS = if (is_mips) 0x540e else 0x5402;4032 pub const CSETA = 0x5402;
4033 pub const CSETSW = if (is_mips) 0x540f else 0x5403;4033 pub const CSETAW = 0x5403;
4034 pub const CSETSF = if (is_mips) 0x5410 else 0x5404;4034 pub const CSETAF = 0x5404;
4035 pub const CGETA = if (is_mips) 0x5401 else 0x5405;4035
4036 pub const CSETA = if (is_mips) 0x5402 else 0x5406;4036 pub const CSBRK = 0x5405;
4037 pub const CSETAW = if (is_mips) 0x5403 else 0x5407;4037 pub const CXONC = 0x5406;
4038 pub const CSETAF = if (is_mips) 0x5404 else 0x5408;4038 pub const CFLSH = 0x5407;
4039 pub const CSBRK = if (is_mips) 0x5405 else 0x5409;4039
4040 pub const CXONC = if (is_mips) 0x5406 else 0x540A;4040 pub const CGETS = 0x540d;
4041 pub const CFLSH = if (is_mips) 0x5407 else 0x540B;4041 pub const CSETS = 0x540e;
4042 pub const IOCEXCL = if (is_mips) 0x740d else 0x540C;4042 pub const CSETSW = 0x540f;
4043 pub const IOCNXCL = if (is_mips) 0x740e else 0x540D;4043 pub const CSETSF = 0x5410;
4044 pub const IOCSCTTY = if (is_mips) 0x7472 else 0x540E;4044
4045 pub const IOCGPGRP = if (is_mips) 0x5472 else 0x540F;4045 pub const IOCEXCL = 0x740d;
4046 pub const IOCSPGRP = if (is_mips) 0x741d else 0x5410;4046 pub const IOCNXCL = 0x740e;
4047 pub const IOCOUTQ = if (is_mips) 0x7472 else 0x5411;4047 pub const IOCOUTQ = 0x7472;
4048 pub const IOCSTI = if (is_mips) 0x5472 else 0x5412;4048 pub const IOCSTI = 0x5472;
4049 pub const IOCGWINSZ = if (is_mips or is_ppc) 0x40087468 else 0x5413;4049 pub const IOCMGET = 0x741d;
4050 pub const IOCSWINSZ = if (is_mips or is_ppc) 0x80087467 else 0x5414;4050 pub const IOCMBIS = 0x741b;
4051 pub const IOCMGET = if (is_mips) 0x741d else 0x5415;4051 pub const IOCMBIC = 0x741c;
4052 pub const IOCMBIS = if (is_mips) 0x741b else 0x5416;4052 pub const IOCMSET = 0x741a;
4053 pub const IOCMBIC = if (is_mips) 0x741c else 0x5417;4053 pub const IOCPKT = 0x5470;
4054 pub const IOCMSET = if (is_mips) 0x741a else 0x5418;4054 pub const IOCPKT_DATA = 0x00;
4055 pub const IOCGSOFTCAR = if (is_mips) 0x5481 else 0x5419;4055 pub const IOCPKT_FLUSHREAD = 0x01;
4056 pub const IOCSSOFTCAR = if (is_mips) 0x5482 else 0x541A;4056 pub const IOCPKT_FLUSHWRITE = 0x02;
4057 pub const FIONREAD = if (is_mips) 0x467F else 0x541B;4057 pub const IOCPKT_STOP = 0x04;
4058 pub const IOCPKT_START = 0x08;
4059 pub const IOCPKT_NOSTOP = 0x10;
4060 pub const IOCPKT_DOSTOP = 0x20;
4061 pub const IOCPKT_IOCTL = 0x40;
4062 pub const IOCSWINSZ = IOCTL.IOW('t', 103, winsize);
4063 pub const IOCGWINSZ = IOCTL.IOR('t', 104, winsize);
4064 pub const IOCNOTTY = 0x5471;
4065 pub const IOCSETD = 0x7401;
4066 pub const IOCGETD = 0x7400;
4067
4068 pub const FIOCLEX = 0x6601;
4069 pub const FIONCLEX = 0x6602;
4070 pub const FIOASYNC = 0x667d;
4071 pub const FIONBIO = 0x667e;
4072 pub const FIOQSIZE = 0x667f;
4073
4074 pub const IOCGLTC = 0x7474;
4075 pub const IOCSLTC = 0x7475;
4076 pub const IOCSPGRP = IOCTL.IOW('t', 118, c_int);
4077 pub const IOCGPGRP = IOCTL.IOR('t', 119, c_int);
4078 pub const IOCCONS = IOCTL.IOW('t', 120, c_int);
4079
4080 pub const FIONREAD = 0x467f;
4058 pub const IOCINQ = FIONREAD;4081 pub const IOCINQ = FIONREAD;
4059 pub const IOCLINUX = if (is_mips) 0x5483 else 0x541C;4082
4060 pub const IOCCONS = if (is_mips) IOCTL.IOW('t', 120, c_int) else 0x541D;4083 pub const IOCGETP = 0x7408;
4061 pub const IOCGSERIAL = if (is_mips) 0x5484 else 0x541E;4084 pub const IOCSETP = 0x7409;
4062 pub const IOCSSERIAL = if (is_mips) 0x5485 else 0x541F;4085 pub const IOCSETN = 0x740a;
4063 pub const IOCPKT = if (is_mips) 0x5470 else 0x5420;4086
4064 pub const FIONBIO = if (is_mips) 0x667e else 0x5421;4087 pub const IOCSBRK = 0x5427;
4065 pub const IOCNOTTY = if (is_mips) 0x5471 else 0x5422;4088 pub const IOCCBRK = 0x5428;
4066 pub const IOCSETD = if (is_mips) 0x7401 else 0x5423;4089 pub const IOCGSID = 0x7416;
4067 pub const IOCGETD = if (is_mips) 0x7400 else 0x5424;4090 pub const CGETS2 = IOCTL.IOR('T', 0x2a, termios2);
4068 pub const CSBRKP = if (is_mips) 0x5486 else 0x5425;4091 pub const CSETS2 = IOCTL.IOW('T', 0x2b, termios2);
4092 pub const CSETSW2 = IOCTL.IOW('T', 0x2c, termios2);
4093 pub const CSETSF2 = IOCTL.IOW('T', 0x2d, termios2);
4094 pub const IOCGRS485 = IOCTL.IOR('T', 0x2e, serial_rs485);
4095 pub const IOCSRS485 = IOCTL.IOWR('T', 0x2f, serial_rs485);
4096 pub const IOCGPTN = IOCTL.IOR('T', 0x30, c_uint);
4097 pub const IOCSPTLCK = IOCTL.IOW('T', 0x31, c_int);
4098 pub const IOCGDEV = IOCTL.IOR('T', 0x32, c_uint);
4099 pub const IOCSIG = IOCTL.IOW('T', 0x36, c_int);
4100 pub const IOCVHANGUP = 0x5437;
4101 pub const IOCGPKT = IOCTL.IOR('T', 0x38, c_int);
4102 pub const IOCGPTLCK = IOCTL.IOR('T', 0x39, c_int);
4103 pub const IOCGEXCL = IOCTL.IOR('T', 0x40, c_int);
4104 pub const IOCGPTPEER = IOCTL.IO('T', 0x41);
4105 pub const IOCGISO7816 = IOCTL.IOR('T', 0x42, serial_iso7816);
4106 pub const IOCSISO7816 = IOCTL.IOWR('T', 0x43, serial_iso7816);
4107
4108 pub const IOCSCTTY = 0x5480;
4109 pub const IOCGSOFTCAR = 0x5481;
4110 pub const IOCSSOFTCAR = 0x5482;
4111 pub const IOCLINUX = 0x5483;
4112 pub const IOCGSERIAL = 0x5484;
4113 pub const IOCSSERIAL = 0x5485;
4114 pub const CSBRKP = 0x5486;
4115 pub const IOCSERCONFIG = 0x5488;
4116 pub const IOCSERGWILD = 0x5489;
4117 pub const IOCSERSWILD = 0x548a;
4118 pub const IOCGLCKTRMIOS = 0x548b;
4119 pub const IOCSLCKTRMIOS = 0x548c;
4120 pub const IOCSERGSTRUCT = 0x548d;
4121 pub const IOCSERGETLSR = 0x548e;
4122 pub const IOCSERGETMULTI = 0x548f;
4123 pub const IOCSERSETMULTI = 0x5490;
4124 pub const IOCMIWAIT = 0x5491;
4125 pub const IOCGICOUNT = 0x5492;
4126} else if (is_ppc) struct {
4127 pub const FIOCLEX = IOCTL.IO('f', 1);
4128 pub const FIONCLEX = IOCTL.IO('f', 2);
4129 pub const FIOASYNC = IOCTL.IOW('f', 125, c_int);
4130 pub const FIONBIO = IOCTL.IOW('f', 126, c_int);
4131 pub const FIONREAD = IOCTL.IOR('f', 127, c_int);
4132 pub const IOCINQ = FIONREAD;
4133 pub const FIOQSIZE = IOCTL.IOR('f', 128, c_longlong); // loff_t -> __kernel_loff_t -> long long
4134
4135 pub const IOCGETP = IOCTL.IOR('t', 8, sgttyb);
4136 pub const IOCSETP = IOCTL.IOW('t', 9, sgttyb);
4137 pub const IOCSETN = IOCTL.IOW('t', 10, sgttyb);
4138
4139 pub const IOCSETC = IOCTL.IOW('t', 17, tchars);
4140 pub const IOCGETC = IOCTL.IOR('t', 18, tchars);
4141 pub const CGETS = IOCTL.IOR('t', 19, termios);
4142 pub const CSETS = IOCTL.IOW('t', 20, termios);
4143 pub const CSETSW = IOCTL.IOW('t', 21, termios);
4144 pub const CSETSF = IOCTL.IOW('t', 22, termios);
4145
4146 pub const CGETA = IOCTL.IOR('t', 23, termio);
4147 pub const CSETA = IOCTL.IOW('t', 24, termio);
4148 pub const CSETAW = IOCTL.IOW('t', 25, termio);
4149 pub const CSETAF = IOCTL.IOW('t', 28, termio);
4150
4151 pub const CSBRK = IOCTL.IO('t', 29);
4152 pub const CXONC = IOCTL.IO('t', 30);
4153 pub const CFLSH = IOCTL.IO('t', 31);
4154
4155 pub const IOCSWINSZ = IOCTL.IOW('t', 103, winsize);
4156 pub const IOCGWINSZ = IOCTL.IOR('t', 104, winsize);
4157 pub const IOCSTART = IOCTL.IO('t', 110);
4158 pub const IOCSTOP = IOCTL.IO('t', 111);
4159 pub const IOCOUTQ = IOCTL.IOR('t', 115, c_int);
4160
4161 pub const IOCGLTC = IOCTL.IOR('t', 116, ltchars);
4162 pub const IOCSLTC = IOCTL.IOW('t', 117, ltchars);
4163 pub const IOCSPGRP = IOCTL.IOW('t', 118, c_int);
4164 pub const IOCGPGRP = IOCTL.IOR('t', 119, c_int);
4165
4166 pub const IOCEXCL = 0x540c;
4167 pub const IOCNXCL = 0x540d;
4168 pub const IOCSCTTY = 0x540e;
4169
4170 pub const IOCSTI = 0x5412;
4171 pub const IOCMGET = 0x5415;
4172 pub const IOCMBIS = 0x5416;
4173 pub const IOCMBIC = 0x5417;
4174 pub const IOCMSET = 0x5418;
4175 pub const IOCM_LE = 0x001;
4176 pub const IOCM_DTR = 0x002;
4177 pub const IOCM_RTS = 0x004;
4178 pub const IOCM_ST = 0x008;
4179 pub const IOCM_SR = 0x010;
4180 pub const IOCM_CTS = 0x020;
4181 pub const IOCM_CAR = 0x040;
4182 pub const IOCM_RNG = 0x080;
4183 pub const IOCM_DSR = 0x100;
4184 pub const IOCM_CD = IOCM_CAR;
4185 pub const IOCM_RI = IOCM_RNG;
4186 pub const IOCM_OUT1 = 0x2000;
4187 pub const IOCM_OUT2 = 0x4000;
4188 pub const IOCM_LOOP = 0x8000;
4189
4190 pub const IOCGSOFTCAR = 0x5419;
4191 pub const IOCSSOFTCAR = 0x541a;
4192 pub const IOCLINUX = 0x541c;
4193 pub const IOCCONS = 0x541d;
4194 pub const IOCGSERIAL = 0x541e;
4195 pub const IOCSSERIAL = 0x541f;
4196 pub const IOCPKT = 0x5420;
4197 pub const IOCPKT_DATA = 0;
4198 pub const IOCPKT_FLUSHREAD = 1;
4199 pub const IOCPKT_FLUSHWRITE = 2;
4200 pub const IOCPKT_STOP = 4;
4201 pub const IOCPKT_START = 8;
4202 pub const IOCPKT_NOSTOP = 16;
4203 pub const IOCPKT_DOSTOP = 32;
4204 pub const IOCPKT_IOCTL = 64;
4205
4206 pub const IOCNOTTY = 0x5422;
4207 pub const IOCSETD = 0x5423;
4208 pub const IOCGETD = 0x5424;
4209 pub const CSBRKP = 0x5425;
4069 pub const IOCSBRK = 0x5427;4210 pub const IOCSBRK = 0x5427;
4070 pub const IOCCBRK = 0x5428;4211 pub const IOCCBRK = 0x5428;
4071 pub const IOCGSID = if (is_mips) 0x7416 else 0x5429;4212 pub const IOCGSID = 0x5429;
4072 pub const IOCGRS485 = 0x542E;4213 pub const IOCGRS485 = 0x542e;
4073 pub const IOCSRS485 = 0x542F;4214 pub const IOCSRS485 = 0x542f;
4215 pub const IOCGPTN = IOCTL.IOR('T', 0x30, c_uint);
4216 pub const IOCSPTLCK = IOCTL.IOW('T', 0x31, c_int);
4217 pub const IOCGDEV = IOCTL.IOR('T', 0x32, c_uint);
4218 pub const IOCSIG = IOCTL.IOW('T', 0x36, c_int);
4219 pub const IOCVHANGUP = 0x5437;
4220 pub const IOCGPKT = IOCTL.IOR('T', 0x38, c_int);
4221 pub const IOCGPTLCK = IOCTL.IOR('T', 0x39, c_int);
4222 pub const IOCGEXCL = IOCTL.IOR('T', 0x40, c_int);
4223 pub const IOCGPTPEER = IOCTL.IO('T', 0x41);
4224 pub const IOCGISO7816 = IOCTL.IOR('T', 0x42, serial_iso7816);
4225 pub const IOCSISO7816 = IOCTL.IOWR('T', 0x43, serial_iso7816);
4226
4227 pub const IOCSERCONFIG = 0x5453;
4228 pub const IOCSERGWILD = 0x5454;
4229 pub const IOCSERSWILD = 0x5455;
4230 pub const IOCGLCKTRMIOS = 0x5456;
4231 pub const IOCSLCKTRMIOS = 0x5457;
4232 pub const IOCSERGSTRUCT = 0x5458;
4233 pub const IOCSERGETLSR = 0x5459;
4234 pub const IOCSER_TEMT = 0x01;
4235 pub const IOCSERGETMULTI = 0x545a;
4236 pub const IOCSERSETMULTI = 0x545b;
4237
4238 pub const IOCMIWAIT = 0x545c;
4239 pub const IOCGICOUNT = 0x545d;
4240} else if (is_sparc) struct {
4241 // Entries with double-underscore prefix have not been translated as they are unsupported.
4242
4243 pub const CGETA = IOCTL.IOR('T', 1, termio);
4244 pub const CSETA = IOCTL.IOW('T', 2, termio);
4245 pub const CSETAW = IOCTL.IOW('T', 3, termio);
4246 pub const CSETAF = IOCTL.IOW('T', 4, termio);
4247 pub const CSBRK = IOCTL.IO('T', 5);
4248 pub const CXONC = IOCTL.IO('T', 6);
4249 pub const CFLSH = IOCTL.IO('T', 7);
4250 pub const CGETS = IOCTL.IOR('T', 8, termios);
4251 pub const CSETS = IOCTL.IOW('T', 9, termios);
4252 pub const CSETSW = IOCTL.IOW('T', 10, termios);
4253 pub const CSETSF = IOCTL.IOW('T', 11, termios);
4254 pub const CGETS2 = IOCTL.IOR('T', 12, termios2);
4255 pub const CSETS2 = IOCTL.IOW('T', 13, termios2);
4256 pub const CSETSW2 = IOCTL.IOW('T', 14, termios2);
4257 pub const CSETSF2 = IOCTL.IOW('T', 15, termios2);
4258 pub const IOCGDEV = IOCTL.IOR('T', 0x32, c_uint);
4259 pub const IOCVHANGUP = IOCTL.IO('T', 0x37);
4260 pub const IOCGPKT = IOCTL.IOR('T', 0x38, c_int);
4261 pub const IOCGPTLCK = IOCTL.IOR('T', 0x39, c_int);
4262 pub const IOCGEXCL = IOCTL.IOR('T', 0x40, c_int);
4263 pub const IOCGRS485 = IOCTL.IOR('T', 0x41, serial_rs485);
4264 pub const IOCSRS485 = IOCTL.IOWR('T', 0x42, serial_rs485);
4265 pub const IOCGISO7816 = IOCTL.IOR('T', 0x43, serial_iso7816);
4266 pub const IOCSISO7816 = IOCTL.IOWR('T', 0x44, serial_iso7816);
4267
4268 pub const IOCGETD = IOCTL.IOR('t', 0, c_int);
4269 pub const IOCSETD = IOCTL.IOW('t', 1, c_int);
4270 pub const IOCEXCL = IOCTL.IO('t', 13);
4271 pub const IOCNXCL = IOCTL.IO('t', 14);
4272 pub const IOCCONS = IOCTL.IO('t', 36);
4273 pub const IOCGSOFTCAR = IOCTL.IOR('t', 100, c_int);
4274 pub const IOCSSOFTCAR = IOCTL.IOW('t', 101, c_int);
4275 pub const IOCSWINSZ = IOCTL.IOW('t', 103, winsize);
4276 pub const IOCGWINSZ = IOCTL.IOR('t', 104, winsize);
4277 pub const IOCMGET = IOCTL.IOR('t', 106, c_int);
4278 pub const IOCMBIC = IOCTL.IOW('t', 107, c_int);
4279 pub const IOCMBIS = IOCTL.IOW('t', 108, c_int);
4280 pub const IOCMSET = IOCTL.IOW('t', 109, c_int);
4281 pub const IOCSTART = IOCTL.IO('t', 110);
4282 pub const IOCSTOP = IOCTL.IO('t', 111);
4283 pub const IOCPKT = IOCTL.IOW('t', 112, c_int);
4284 pub const IOCNOTTY = IOCTL.IO('t', 113);
4285 pub const IOCSTI = IOCTL.IOW('t', 114, c_char);
4286 pub const IOCOUTQ = IOCTL.IOR('t', 115, c_int);
4287 pub const IOCCBRK = IOCTL.IO('t', 122);
4288 pub const IOCSBRK = IOCTL.IO('t', 123);
4289 pub const IOCSPGRP = IOCTL.IOW('t', 130, c_int);
4290 pub const IOCGPGRP = IOCTL.IOR('t', 131, c_int);
4291 pub const IOCSCTTY = IOCTL.IO('t', 132);
4292 pub const IOCGSID = IOCTL.IOR('t', 133, c_int);
4293 pub const IOCGPTN = IOCTL.IOR('t', 134, c_uint);
4294 pub const IOCSPTLCK = IOCTL.IOW('t', 135, c_int);
4295 pub const IOCSIG = IOCTL.IOW('t', 136, c_int);
4296 pub const IOCGPTPEER = IOCTL.IO('t', 137);
4297
4298 pub const FIOCLEX = IOCTL.IO('f', 1);
4299 pub const FIONCLEX = IOCTL.IO('f', 2);
4300 pub const FIOASYNC = IOCTL.IOW('f', 125, c_int);
4301 pub const FIONBIO = IOCTL.IOW('f', 126, c_int);
4302 pub const FIONREAD = IOCTL.IOR('f', 127, c_int);
4303 pub const IOCINQ = FIONREAD;
4304 pub const FIOQSIZE = IOCTL.IOR('f', 128, c_longlong); // loff_t -> __kernel_loff_t -> long long
4305
4306 pub const IOCLINUX = 0x541c;
4307 pub const IOCGSERIAL = 0x541e;
4308 pub const IOCSSERIAL = 0x541f;
4309 pub const CSBRKP = 0x5425;
4310 pub const IOCSERCONFIG = 0x5453;
4311 pub const IOCSERGWILD = 0x5454;
4312 pub const IOCSERSWILD = 0x5455;
4313 pub const IOCGLCKTRMIOS = 0x5456;
4314 pub const IOCSLCKTRMIOS = 0x5457;
4315 pub const IOCSERGSTRUCT = 0x5458;
4316 pub const IOCSERGETLSR = 0x5459;
4317 pub const IOCSERGETMULTI = 0x545a;
4318 pub const IOCSERSETMULTI = 0x545b;
4319 pub const IOCMIWAIT = 0x545c;
4320 pub const IOCGICOUNT = 0x545d;
4321
4322 pub const IOCPKT_DATA = 0;
4323 pub const IOCPKT_FLUSHREAD = 1;
4324 pub const IOCPKT_FLUSHWRITE = 2;
4325 pub const IOCPKT_STOP = 4;
4326 pub const IOCPKT_START = 8;
4327 pub const IOCPKT_NOSTOP = 16;
4328 pub const IOCPKT_DOSTOP = 32;
4329 pub const IOCPKT_IOCTL = 64;
4330} else struct {
4331 pub const CGETS = 0x5401;
4332 pub const CSETS = 0x5402;
4333 pub const CSETSW = 0x5403;
4334 pub const CSETSF = 0x5404;
4335 pub const CGETA = 0x5405;
4336 pub const CSETA = 0x5406;
4337 pub const CSETAW = 0x5407;
4338 pub const CSETAF = 0x5408;
4339 pub const CSBRK = 0x5409;
4340 pub const CXONC = 0x540a;
4341 pub const CFLSH = 0x540b;
4342 pub const IOCEXCL = 0x540c;
4343 pub const IOCNXCL = 0x540d;
4344 pub const IOCSCTTY = 0x540e;
4345 pub const IOCGPGRP = 0x540f;
4346 pub const IOCSPGRP = 0x5410;
4347 pub const IOCOUTQ = 0x5411;
4348 pub const IOCSTI = 0x5412;
4349 pub const IOCGWINSZ = 0x5413;
4350 pub const IOCSWINSZ = 0x5414;
4351 pub const IOCMGET = 0x5415;
4352 pub const IOCMBIS = 0x5416;
4353 pub const IOCMBIC = 0x5417;
4354 pub const IOCMSET = 0x5418;
4355 pub const IOCGSOFTCAR = 0x5419;
4356 pub const IOCSSOFTCAR = 0x541a;
4357 pub const FIONREAD = 0x541b;
4358 pub const IOCINQ = FIONREAD;
4359 pub const IOCLINUX = 0x541c;
4360 pub const IOCCONS = 0x541d;
4361 pub const IOCGSERIAL = 0x541e;
4362 pub const IOCSSERIAL = 0x541f;
4363 pub const IOCPKT = 0x5420;
4364 pub const FIONBIO = 0x5421;
4365 pub const IOCNOTTY = 0x5422;
4366 pub const IOCSETD = 0x5423;
4367 pub const IOCGETD = 0x5424;
4368 pub const CSBRKP = 0x5425;
4369 pub const IOCSBRK = 0x5427;
4370 pub const IOCCBRK = 0x5428;
4371 pub const IOCGSID = 0x5429;
4372 pub const CGETS2 = IOCTL.IOR('T', 0x2a, termios2);
4373 pub const CSETS2 = IOCTL.IOW('T', 0x2b, termios2);
4374 pub const CSETSW2 = IOCTL.IOW('T', 0x2c, termios2);
4375 pub const CSETSF2 = IOCTL.IOW('T', 0x2d, termios2);
4376 pub const IOCGRS485 = 0x542e;
4377 pub const IOCSRS485 = 0x542f;
4074 pub const IOCGPTN = IOCTL.IOR('T', 0x30, c_uint);4378 pub const IOCGPTN = IOCTL.IOR('T', 0x30, c_uint);
4075 pub const IOCSPTLCK = IOCTL.IOW('T', 0x31, c_int);4379 pub const IOCSPTLCK = IOCTL.IOW('T', 0x31, c_int);
4076 pub const IOCGDEV = IOCTL.IOR('T', 0x32, c_uint);4380 pub const IOCGDEV = IOCTL.IOR('T', 0x32, c_uint);
...@@ -4083,6 +4387,93 @@ pub const T = struct {...@@ -4083,6 +4387,93 @@ pub const T = struct {
4083 pub const IOCGPKT = IOCTL.IOR('T', 0x38, c_int);4387 pub const IOCGPKT = IOCTL.IOR('T', 0x38, c_int);
4084 pub const IOCGPTLCK = IOCTL.IOR('T', 0x39, c_int);4388 pub const IOCGPTLCK = IOCTL.IOR('T', 0x39, c_int);
4085 pub const IOCGEXCL = IOCTL.IOR('T', 0x40, c_int);4389 pub const IOCGEXCL = IOCTL.IOR('T', 0x40, c_int);
4390 pub const IOCGPTPEER = IOCTL.IO('T', 0x41);
4391 pub const IOCGISO7816 = IOCTL.IOR('T', 0x42, serial_iso7816);
4392 pub const IOCSISO7816 = IOCTL.IOWR('T', 0x43, serial_iso7816);
4393
4394 pub const FIONCLEX = 0x5450;
4395 pub const FIOCLEX = 0x5451;
4396 pub const FIOASYNC = 0x5452;
4397 pub const IOCSERCONFIG = 0x5453;
4398 pub const IOCSERGWILD = 0x5454;
4399 pub const IOCSERSWILD = 0x5455;
4400 pub const IOCGLCKTRMIOS = 0x5456;
4401 pub const IOCSLCKTRMIOS = 0x5457;
4402 pub const IOCSERGSTRUCT = 0x5458;
4403 pub const IOCSERGETLSR = 0x5459;
4404 pub const IOCSERGETMULTI = 0x545a;
4405 pub const IOCSERSETMULTI = 0x545b;
4406
4407 pub const IOCMIWAIT = 0x545c;
4408 pub const IOCGICOUNT = 0x545d;
4409
4410 pub const FIOQSIZE = switch (native_arch) {
4411 .arm,
4412 .armeb,
4413 .thumb,
4414 .thumbeb,
4415 .m68k,
4416 .s390x,
4417 => 0x545e,
4418 else => 0x5460,
4419 };
4420
4421 pub const IOCPKT_DATA = 0;
4422 pub const IOCPKT_FLUSHREAD = 1;
4423 pub const IOCPKT_FLUSHWRITE = 2;
4424 pub const IOCPKT_STOP = 4;
4425 pub const IOCPKT_START = 8;
4426 pub const IOCPKT_NOSTOP = 16;
4427 pub const IOCPKT_DOSTOP = 32;
4428 pub const IOCPKT_IOCTL = 64;
4429
4430 pub const IOCSER_TEMT = 0x01;
4431};
4432
4433pub const serial_rs485 = extern struct {
4434 flags: u32,
4435 delay_rts_before_send: u32,
4436 delay_rts_after_send: u32,
4437 extra: extern union {
4438 _pad1: [5]u32,
4439 s: extern struct {
4440 addr_recv: u8,
4441 addr_dest: u8,
4442 _pad2: [2]u8,
4443 _pad3: [4]u32,
4444 },
4445 },
4446};
4447
4448pub const serial_iso7816 = extern struct {
4449 flags: u32,
4450 tg: u32,
4451 sc_fi: u32,
4452 sc_di: u32,
4453 clk: u32,
4454 _reserved: [5]u32,
4455};
4456
4457pub const SER = struct {
4458 pub const RS485 = struct {
4459 pub const ENABLED = 1 << 0;
4460 pub const RTS_ON_SEND = 1 << 1;
4461 pub const RTS_AFTER_SEND = 1 << 2;
4462 pub const RX_DURING_TX = 1 << 4;
4463 pub const TERMINATE_BUS = 1 << 5;
4464 pub const ADDRB = 1 << 6;
4465 pub const ADDR_RECV = 1 << 7;
4466 pub const ADDR_DEST = 1 << 8;
4467 };
4468
4469 pub const ISO7816 = struct {
4470 pub const ENABLED = 1 << 0;
4471 pub const T_PARAM = 0x0f << 4;
4472
4473 pub fn T(t: anytype) @TypeOf(t) {
4474 return (t & 0x0f) << 4;
4475 }
4476 };
4086};4477};
40874478
4088pub const EPOLL = struct {4479pub const EPOLL = struct {
...@@ -5885,319 +6276,507 @@ pub const rusage = extern struct {...@@ -5885,319 +6276,507 @@ pub const rusage = extern struct {
5885 pub const THREAD = 1;6276 pub const THREAD = 1;
5886};6277};
58876278
5888pub const NCCS = switch (native_arch) {6279pub const NCC = if (is_ppc) 10 else 8;
5889 .powerpc, .powerpcle, .powerpc64, .powerpc64le => 19,6280pub const NCCS = if (is_mips) 32 else if (is_ppc) 19 else if (is_sparc) 17 else 32;
5890 else => 32,6281
5891};6282pub const speed_t = if (is_ppc) enum(c_uint) {
58926283 B0 = 0x0000000,
5893pub const speed_t = switch (native_arch) {6284 B50 = 0x0000001,
5894 .powerpc, .powerpcle, .powerpc64, .powerpc64le => enum(u32) {6285 B75 = 0x0000002,
5895 B0 = 0o0000000,6286 B110 = 0x0000003,
5896 B50 = 0o0000001,6287 B134 = 0x0000004,
5897 B75 = 0o0000002,6288 B150 = 0x0000005,
5898 B110 = 0o0000003,6289 B200 = 0x0000006,
5899 B134 = 0o0000004,6290 B300 = 0x0000007,
5900 B150 = 0o0000005,6291 B600 = 0x0000008,
5901 B200 = 0o0000006,6292 B1200 = 0x0000009,
5902 B300 = 0o0000007,6293 B1800 = 0x000000a,
5903 B600 = 0o0000010,6294 B2400 = 0x000000b,
5904 B1200 = 0o0000011,6295 B4800 = 0x000000c,
5905 B1800 = 0o0000012,6296 B9600 = 0x000000d,
5906 B2400 = 0o0000013,6297 B19200 = 0x000000e,
5907 B4800 = 0o0000014,6298 B38400 = 0x000000f,
5908 B9600 = 0o0000015,6299
5909 B19200 = 0o0000016,6300 B57600 = 0x00000010,
5910 B38400 = 0o0000017,6301 B115200 = 0x00000011,
59116302 B230400 = 0x00000012,
5912 B57600 = 0o00020,6303 B460800 = 0x00000013,
5913 B115200 = 0o00021,6304 B500000 = 0x00000014,
5914 B230400 = 0o00022,6305 B576000 = 0x00000015,
5915 B460800 = 0o00023,6306 B921600 = 0x00000016,
5916 B500000 = 0o00024,6307 B1000000 = 0x00000017,
5917 B576000 = 0o00025,6308 B1152000 = 0x00000018,
5918 B921600 = 0o00026,6309 B1500000 = 0x00000019,
5919 B1000000 = 0o00027,6310 B2000000 = 0x0000001a,
5920 B1152000 = 0o00030,6311 B2500000 = 0x0000001b,
5921 B1500000 = 0o00031,6312 B3000000 = 0x0000001c,
5922 B2000000 = 0o00032,6313 B3500000 = 0x0000001d,
5923 B2500000 = 0o00033,6314 B4000000 = 0x0000001e,
5924 B3000000 = 0o00034,6315
5925 B3500000 = 0o00035,6316 pub const EXTA = speed_t.B19200;
5926 B4000000 = 0o00036,6317 pub const EXTB = speed_t.B38400;
5927 },6318} else if (is_sparc) enum(c_uint) {
5928 else => enum(u32) {6319 B0 = 0x0000000,
5929 B0 = 0o0000000,6320 B50 = 0x0000001,
5930 B50 = 0o0000001,6321 B75 = 0x0000002,
5931 B75 = 0o0000002,6322 B110 = 0x0000003,
5932 B110 = 0o0000003,6323 B134 = 0x0000004,
5933 B134 = 0o0000004,6324 B150 = 0x0000005,
5934 B150 = 0o0000005,6325 B200 = 0x0000006,
5935 B200 = 0o0000006,6326 B300 = 0x0000007,
5936 B300 = 0o0000007,6327 B600 = 0x0000008,
5937 B600 = 0o0000010,6328 B1200 = 0x0000009,
5938 B1200 = 0o0000011,6329 B1800 = 0x000000a,
5939 B1800 = 0o0000012,6330 B2400 = 0x000000b,
5940 B2400 = 0o0000013,6331 B4800 = 0x000000c,
5941 B4800 = 0o0000014,6332 B9600 = 0x000000d,
5942 B9600 = 0o0000015,6333 B19200 = 0x000000e,
5943 B19200 = 0o0000016,6334 B38400 = 0x000000f,
5944 B38400 = 0o0000017,6335
59456336 B57600 = 0x00001001,
5946 B57600 = 0o0010001,6337 B115200 = 0x00001002,
5947 B115200 = 0o0010002,6338 B230400 = 0x00001003,
5948 B230400 = 0o0010003,6339 B460800 = 0x00001004,
5949 B460800 = 0o0010004,6340 B76800 = 0x00001005,
5950 B500000 = 0o0010005,6341 B153600 = 0x00001006,
5951 B576000 = 0o0010006,6342 B307200 = 0x00001007,
5952 B921600 = 0o0010007,6343 B614400 = 0x00001008,
5953 B1000000 = 0o0010010,6344 B921600 = 0x00001009,
5954 B1152000 = 0o0010011,6345 B500000 = 0x0000100a,
5955 B1500000 = 0o0010012,6346 B576000 = 0x0000100b,
5956 B2000000 = 0o0010013,6347 B1000000 = 0x0000100c,
5957 B2500000 = 0o0010014,6348 B1152000 = 0x0000100d,
5958 B3000000 = 0o0010015,6349 B1500000 = 0x0000100e,
5959 B3500000 = 0o0010016,6350 B2000000 = 0x0000100f,
5960 B4000000 = 0o0010017,6351
5961 },6352 pub const EXTA = speed_t.B19200;
5962};6353 pub const EXTB = speed_t.B38400;
59636354} else enum(c_uint) {
5964pub const tc_iflag_t = switch (native_arch) {6355 B0 = 0x0000000,
5965 .powerpc, .powerpcle, .powerpc64, .powerpc64le => packed struct(u32) {6356 B50 = 0x0000001,
5966 IGNBRK: bool = false,6357 B75 = 0x0000002,
5967 BRKINT: bool = false,6358 B110 = 0x0000003,
5968 IGNPAR: bool = false,6359 B134 = 0x0000004,
5969 PARMRK: bool = false,6360 B150 = 0x0000005,
5970 INPCK: bool = false,6361 B200 = 0x0000006,
5971 ISTRIP: bool = false,6362 B300 = 0x0000007,
5972 INLCR: bool = false,6363 B600 = 0x0000008,
5973 IGNCR: bool = false,6364 B1200 = 0x0000009,
5974 ICRNL: bool = false,6365 B1800 = 0x000000a,
5975 IXON: bool = false,6366 B2400 = 0x000000b,
5976 IXOFF: bool = false,6367 B4800 = 0x000000c,
5977 IXANY: bool = false,6368 B9600 = 0x000000d,
5978 IUCLC: bool = false,6369 B19200 = 0x000000e,
5979 IMAXBEL: bool = false,6370 B38400 = 0x000000f,
5980 IUTF8: bool = false,6371
5981 _: u17 = 0,6372 B57600 = 0x00001001,
5982 },6373 B115200 = 0x00001002,
5983 else => packed struct(u32) {6374 B230400 = 0x00001003,
5984 IGNBRK: bool = false,6375 B460800 = 0x00001004,
5985 BRKINT: bool = false,6376 B500000 = 0x00001005,
5986 IGNPAR: bool = false,6377 B576000 = 0x00001006,
5987 PARMRK: bool = false,6378 B921600 = 0x00001007,
5988 INPCK: bool = false,6379 B1000000 = 0x00001008,
5989 ISTRIP: bool = false,6380 B1152000 = 0x00001009,
5990 INLCR: bool = false,6381 B1500000 = 0x0000100a,
5991 IGNCR: bool = false,6382 B2000000 = 0x0000100b,
5992 ICRNL: bool = false,6383 B2500000 = 0x0000100c,
5993 IUCLC: bool = false,6384 B3000000 = 0x0000100d,
5994 IXON: bool = false,6385 B3500000 = 0x0000100e,
5995 IXANY: bool = false,6386 B4000000 = 0x0000100f,
5996 IXOFF: bool = false,6387
5997 IMAXBEL: bool = false,6388 pub const EXTA = speed_t.B19200;
5998 IUTF8: bool = false,6389 pub const EXTB = speed_t.B38400;
5999 _: u17 = 0,6390};
6000 },6391
6001};6392pub const tcflag_t = if (native_arch == .sparc) c_ulong else c_uint;
60026393
6003pub const tc_oflag_t = switch (native_arch) {6394pub const tc_iflag_t = if (is_ppc) packed struct(tcflag_t) {
6004 .powerpc, .powerpcle, .powerpc64, .powerpc64le => packed struct(u32) {6395 IGNBRK: bool = false,
6005 OPOST: bool = false,6396 BRKINT: bool = false,
6006 ONLCR: bool = false,6397 IGNPAR: bool = false,
6007 OLCUC: bool = false,6398 PARMRK: bool = false,
6008 OCRNL: bool = false,6399 INPCK: bool = false,
6009 ONOCR: bool = false,6400 ISTRIP: bool = false,
6010 ONLRET: bool = false,6401 INLCR: bool = false,
6011 OFILL: bool = false,6402 IGNCR: bool = false,
6012 OFDEL: bool = false,6403 ICRNL: bool = false,
6013 NLDLY: u2 = 0,6404 IXON: bool = false,
6014 TABDLY: u2 = 0,6405 IXOFF: bool = false,
6015 CRDLY: u2 = 0,6406 IXANY: bool = false,
6016 FFDLY: u1 = 0,6407 IUCLC: bool = false,
6017 BSDLY: u1 = 0,6408 IMAXBEL: bool = false,
6018 VTDLY: u1 = 0,6409 IUTF8: bool = false,
6019 _: u15 = 0,6410 _15: u17 = 0,
6020 },6411} else packed struct(tcflag_t) {
6021 else => packed struct(u32) {6412 IGNBRK: bool = false,
6022 OPOST: bool = false,6413 BRKINT: bool = false,
6023 OLCUC: bool = false,6414 IGNPAR: bool = false,
6024 ONLCR: bool = false,6415 PARMRK: bool = false,
6025 OCRNL: bool = false,6416 INPCK: bool = false,
6026 ONOCR: bool = false,6417 ISTRIP: bool = false,
6027 ONLRET: bool = false,6418 INLCR: bool = false,
6028 OFILL: bool = false,6419 IGNCR: bool = false,
6029 OFDEL: bool = false,6420 ICRNL: bool = false,
6030 NLDLY: u1 = 0,6421 IUCLC: bool = false,
6031 CRDLY: u2 = 0,6422 IXON: bool = false,
6032 TABDLY: u2 = 0,6423 IXANY: bool = false,
6033 BSDLY: u1 = 0,6424 IXOFF: bool = false,
6034 VTDLY: u1 = 0,6425 IMAXBEL: bool = false,
6035 FFDLY: u1 = 0,6426 IUTF8: bool = false,
6036 _: u16 = 0,6427 _15: u17 = 0,
6037 },6428};
6038};6429
60396430pub const NLDLY = if (is_ppc) enum(u2) {
6040pub const CSIZE = enum(u2) { CS5, CS6, CS7, CS8 };6431 NL0 = 0,
60416432 NL1 = 1,
6042pub const tc_cflag_t = switch (native_arch) {6433 NL2 = 2,
6043 .powerpc, .powerpcle, .powerpc64, .powerpc64le => packed struct(u32) {6434 NL3 = 3,
6044 _0: u8 = 0,6435} else enum(u1) {
6045 CSIZE: CSIZE = .CS5,6436 NL0 = 0,
6046 CSTOPB: bool = false,6437 NL1 = 1,
6047 CREAD: bool = false,6438};
6048 PARENB: bool = false,6439
6049 PARODD: bool = false,6440pub const CRDLY = enum(u2) {
6050 HUPCL: bool = false,6441 CR0 = 0,
6051 CLOCAL: bool = false,6442 CR1 = 1,
6052 _: u16 = 0,6443 CR2 = 2,
6053 },6444 CR3 = 3,
6054 else => packed struct(u32) {6445};
6055 _0: u4 = 0,6446
6056 CSIZE: CSIZE = .CS5,6447pub const TABDLY = enum(u2) {
6057 CSTOPB: bool = false,6448 TAB0 = 0,
6058 CREAD: bool = false,6449 TAB1 = 1,
6059 PARENB: bool = false,6450 TAB2 = 2,
6060 PARODD: bool = false,6451 TAB3 = 3,
6061 HUPCL: bool = false,6452
6062 CLOCAL: bool = false,6453 pub const XTABS = TABDLY.TAB3;
6063 _: u20 = 0,6454};
6064 },6455
6065};6456pub const BSDLY = enum(u1) {
60666457 BS0 = 0,
6067pub const tc_lflag_t = switch (native_arch) {6458 BS1 = 1,
6068 .powerpc, .powerpcle, .powerpc64, .powerpc64le => packed struct(u32) {6459};
6069 _0: u1 = 0,6460
6070 ECHOE: bool = false,6461pub const VTDLY = enum(u1) {
6071 ECHOK: bool = false,6462 VT0 = 0,
6072 ECHO: bool = false,6463 VT1 = 1,
6073 ECHONL: bool = false,6464};
6074 _5: u2 = 0,6465
6075 ISIG: bool = false,6466pub const FFDLY = enum(u1) {
6076 ICANON: bool = false,6467 FF0 = 0,
6077 _9: u1 = 0,6468 FF1 = 1,
6078 IEXTEN: bool = false,6469};
6079 _11: u11 = 0,6470
6080 TOSTOP: bool = false,6471pub const tc_oflag_t = if (is_ppc) packed struct(tcflag_t) {
6081 _23: u8 = 0,6472 OPOST: bool = false,
6082 NOFLSH: bool = false,6473 ONLCR: bool = false,
6083 },6474 OLCUC: bool = false,
6084 .mips, .mipsel, .mips64, .mips64el => packed struct(u32) {6475 OCRNL: bool = false,
6085 ISIG: bool = false,6476 ONOCR: bool = false,
6086 ICANON: bool = false,6477 ONLRET: bool = false,
6087 _2: u1 = 0,6478 OFILL: bool = false,
6088 ECHO: bool = false,6479 OFDEL: bool = false,
6089 ECHOE: bool = false,6480 NLDLY: NLDLY = 0,
6090 ECHOK: bool = false,6481 TABDLY: TABDLY = 0,
6091 ECHONL: bool = false,6482 CRDLY: CRDLY = 0,
6092 NOFLSH: bool = false,6483 FFDLY: FFDLY = 0,
6093 IEXTEN: bool = false,6484 BSDLY: BSDLY = 0,
6094 _9: u6 = 0,6485 VTDLY: VTDLY = 0,
6095 TOSTOP: bool = false,6486 _17: u15 = 0,
6096 _: u16 = 0,6487} else if (is_sparc) packed struct(tcflag_t) {
6097 },6488 OPOST: bool = false,
6098 else => packed struct(u32) {6489 OLCUC: bool = false,
6099 ISIG: bool = false,6490 ONLCR: bool = false,
6100 ICANON: bool = false,6491 OCRNL: bool = false,
6101 _2: u1 = 0,6492 ONOCR: bool = false,
6102 ECHO: bool = false,6493 ONLRET: bool = false,
6103 ECHOE: bool = false,6494 OFILL: bool = false,
6104 ECHOK: bool = false,6495 OFDEL: bool = false,
6105 ECHONL: bool = false,6496 NLDLY: NLDLY = .NL0,
6106 NOFLSH: bool = false,6497 CRDLY: CRDLY = .CR0,
6107 TOSTOP: bool = false,6498 TABDLY: TABDLY = .TAB0,
6108 _9: u6 = 0,6499 BSDLY: BSDLY = .BS0,
6109 IEXTEN: bool = false,6500 VTDLY: VTDLY = .VT0,
6110 _: u16 = 0,6501 FFDLY: FFDLY = .FF0,
6111 },6502 PAGEOUT: bool = false,
6503 WRAP: bool = false,
6504 _18: u14 = 0,
6505} else packed struct(tcflag_t) {
6506 OPOST: bool = false,
6507 OLCUC: bool = false,
6508 ONLCR: bool = false,
6509 OCRNL: bool = false,
6510 ONOCR: bool = false,
6511 ONLRET: bool = false,
6512 OFILL: bool = false,
6513 OFDEL: bool = false,
6514 NLDLY: NLDLY = .NL0,
6515 CRDLY: CRDLY = .CR0,
6516 TABDLY: TABDLY = .TAB0,
6517 BSDLY: BSDLY = .BS0,
6518 VTDLY: VTDLY = .VT0,
6519 FFDLY: FFDLY = .FF0,
6520 _16: u16 = 0,
6521};
6522
6523pub const CSIZE = enum(u2) {
6524 CS5 = 0,
6525 CS6 = 1,
6526 CS7 = 2,
6527 CS8 = 3,
6528};
6529
6530pub const tc_cflag_t = if (is_ppc) packed struct(tcflag_t) {
6531 _0: u8 = 0,
6532 CSIZE: CSIZE = .CS5,
6533 CSTOPB: bool = false,
6534 CREAD: bool = false,
6535 PARENB: bool = false,
6536 PARODD: bool = false,
6537 HUPCL: bool = false,
6538 CLOCAL: bool = false,
6539 _16: u13 = 0,
6540 ADDRB: bool = false,
6541 CMSPAR: bool = false,
6542 CRTSCTS: bool = false,
6543} else packed struct(tcflag_t) {
6544 _0: u4 = 0,
6545 CSIZE: CSIZE = .CS5,
6546 CSTOPB: bool = false,
6547 CREAD: bool = false,
6548 PARENB: bool = false,
6549 PARODD: bool = false,
6550 HUPCL: bool = false,
6551 CLOCAL: bool = false,
6552 _12: u17 = 0,
6553 ADDRB: bool = false,
6554 CMSPAR: bool = false,
6555 CRTSCTS: bool = false,
6556};
6557
6558pub const tc_lflag_t = if (is_mips) packed struct(tcflag_t) {
6559 ISIG: bool = false,
6560 ICANON: bool = false,
6561 XCASE: bool = false,
6562 ECHO: bool = false,
6563 ECHOE: bool = false,
6564 ECHOK: bool = false,
6565 ECHONL: bool = false,
6566 NOFLSH: bool = false,
6567 IEXTEN: bool = false,
6568 ECHOCTL: bool = false,
6569 ECHOPRT: bool = false,
6570 ECHOKE: bool = false,
6571 _12: u1 = 0,
6572 FLUSHO: bool = false,
6573 PENDIN: bool = false,
6574 TOSTOP: bool = false,
6575 EXTPROC: bool = false,
6576 _17: u16 = 0,
6577} else if (is_ppc) packed struct(tcflag_t) {
6578 ECHOKE: bool = false,
6579 ECHOE: bool = false,
6580 ECHOK: bool = false,
6581 ECHO: bool = false,
6582 ECHONL: bool = false,
6583 ECHOPRT: bool = false,
6584 ECHOCTL: bool = false,
6585 ISIG: bool = false,
6586 ICANON: bool = false,
6587 _9: u1 = 0,
6588 IEXTEN: bool = false,
6589 _11: u3 = 0,
6590 XCASE: bool = false,
6591 _15: u7 = 0,
6592 TOSTOP: bool = false,
6593 FLUSHO: bool = false,
6594 _24: u4 = 0,
6595 EXTPROC: bool = false,
6596 PENDIN: bool = false,
6597 _30: u1 = 0,
6598 NOFLSH: bool = false,
6599} else if (is_sparc) packed struct(tcflag_t) {
6600 ISIG: bool = false,
6601 ICANON: bool = false,
6602 XCASE: bool = false,
6603 ECHO: bool = false,
6604 ECHOE: bool = false,
6605 ECHOK: bool = false,
6606 ECHONL: bool = false,
6607 NOFLSH: bool = false,
6608 TOSTOP: bool = false,
6609 ECHOCTL: bool = false,
6610 ECHOPRT: bool = false,
6611 ECHOKE: bool = false,
6612 DEFECHO: bool = false,
6613 FLUSHO: bool = false,
6614 PENDIN: bool = false,
6615 IEXTEN: bool = false,
6616 EXTPROC: bool = false,
6617 _17: u15 = 0,
6618} else packed struct(tcflag_t) {
6619 ISIG: bool = false,
6620 ICANON: bool = false,
6621 XCASE: bool = false,
6622 ECHO: bool = false,
6623 ECHOE: bool = false,
6624 ECHOK: bool = false,
6625 ECHONL: bool = false,
6626 NOFLSH: bool = false,
6627 TOSTOP: bool = false,
6628 ECHOCTL: bool = false,
6629 ECHOPRT: bool = false,
6630 ECHOKE: bool = false,
6631 FLUSHO: bool = false,
6632 _13: u1 = 0,
6633 PENDIN: bool = false,
6634 IEXTEN: bool = false,
6635 EXTPROC: bool = false,
6636 _17: u15 = 0,
6112};6637};
61136638
6114pub const cc_t = u8;6639pub const cc_t = u8;
61156640
6116/// Indices into the `cc` array in the `termios` struct.6641/// Indices into the `cc` array in the `termios` struct.
6117pub const V = switch (native_arch) {6642pub const V = if (is_mips) enum(u32) {
6118 .mips, .mipsel, .mips64, .mips64el => enum {6643 INTR = 0,
6119 INTR,6644 QUIT = 1,
6120 QUIT,6645 ERASE = 2,
6121 ERASE,6646 KILL = 3,
6122 KILL,6647 MIN = 4,
6123 MIN,6648 TIME = 5,
6124 TIME,6649 EOL2 = 6,
6125 EOL2,6650 SWTC = 7,
6126 SWTC,6651 START = 8,
6127 START,6652 STOP = 9,
6128 STOP,6653 SUSP = 10,
6129 SUSP,6654 REPRINT = 12,
6130 reserved,6655 DISCARD = 13,
6131 REPRINT,6656 WERASE = 14,
6132 DISCARD,6657 LNEXT = 15,
6133 WERASE,6658 EOF = 16,
6134 LNEXT,6659 EOL = 17,
6135 EOF,6660} else if (is_ppc) enum(u32) {
6136 EOL,6661 INTR = 0,
6137 },6662 QUIT = 1,
6138 .powerpc, .powerpcle, .powerpc64, .powerpc64le => enum {6663 ERASE = 2,
6139 INTR,6664 KILL = 3,
6140 QUIT,6665 EOF = 4,
6141 ERASE,6666 MIN = 5,
6142 KILL,6667 EOL = 6,
6143 EOF,6668 TIME = 7,
6144 MIN,6669 EOL2 = 8,
6145 EOL,6670 SWTC = 9,
6146 TIME,6671 WERASE = 10,
6147 EOL2,6672 REPRINT = 11,
6148 SWTC,6673 SUSP = 12,
6149 WERASE,6674 START = 13,
6150 REPRINT,6675 STOP = 14,
6151 SUSP,6676 LNEXT = 15,
6152 START,6677 DISCARD = 16,
6153 STOP,6678} else enum(u32) {
6154 LNEXT,6679 INTR = 0,
6155 DISCARD,6680 QUIT = 1,
6156 },6681 ERASE = 2,
6157 else => enum {6682 KILL = 3,
6158 INTR,6683 EOF = 4,
6159 QUIT,6684 TIME = 5,
6160 ERASE,6685 MIN = 6,
6161 KILL,6686 SWTC = 7,
6162 EOF,6687 START = 8,
6163 TIME,6688 STOP = 9,
6164 MIN,6689 SUSP = 10,
6165 SWTC,6690 EOL = 11,
6166 START,6691 REPRINT = 12,
6167 STOP,6692 DISCARD = 13,
6168 SUSP,6693 WERASE = 14,
6169 EOL,6694 LNEXT = 15,
6170 REPRINT,6695 EOL2 = 16,
6171 DISCARD,
6172 WERASE,
6173 LNEXT,
6174 EOL2,
6175 },
6176};6696};
61776697
6178pub const TCSA = std.posix.TCSA;6698pub const TCSA = std.posix.TCSA;
61796699
6180pub const termios = switch (native_arch) {6700pub const sgttyb = if (is_mips or is_ppc or is_sparc) extern struct {
6181 .powerpc, .powerpcle, .powerpc64, .powerpc64le => extern struct {6701 ispeed: c_char,
6182 iflag: tc_iflag_t,6702 ospeed: c_char,
6183 oflag: tc_oflag_t,6703 erase: c_char,
6184 cflag: tc_cflag_t,6704 kill: c_char,
6185 lflag: tc_lflag_t,6705 flags: if (is_mips) c_int else c_short,
6186 cc: [NCCS]cc_t,6706} else void;
6187 line: cc_t,6707
6188 ispeed: speed_t,6708pub const tchars = if (is_mips or is_ppc or is_sparc) extern struct {
6189 ospeed: speed_t,6709 intrc: c_char,
6190 },6710 quitc: c_char,
6191 else => extern struct {6711 startc: c_char,
6192 iflag: tc_iflag_t,6712 stopc: c_char,
6193 oflag: tc_oflag_t,6713 eofc: c_char,
6194 cflag: tc_cflag_t,6714 brkc: c_char,
6195 lflag: tc_lflag_t,6715} else void;
6196 line: cc_t,6716
6197 cc: [NCCS]cc_t,6717pub const ltchars = if (is_mips or is_ppc or is_sparc) extern struct {
6198 ispeed: speed_t,6718 suspc: c_char,
6199 ospeed: speed_t,6719 dsuspc: c_char,
6200 },6720 rprntc: c_char,
6721 flushc: c_char,
6722 werasc: c_char,
6723 lnextc: c_char,
6724} else void;
6725
6726pub const termio = extern struct {
6727 iflag: c_ushort,
6728 oflag: c_ushort,
6729 cflag: c_ushort,
6730 lflag: c_ushort,
6731 line: if (is_mips) c_char else u8,
6732 cc: [if (is_mips) NCCS else NCC]u8,
6733};
6734
6735pub const termios = if (is_mips or is_sparc) extern struct {
6736 iflag: tc_iflag_t,
6737 oflag: tc_oflag_t,
6738 cflag: tc_cflag_t,
6739 lflag: tc_lflag_t,
6740 line: cc_t,
6741 cc: [NCCS]cc_t,
6742} else if (is_ppc) extern struct {
6743 iflag: tc_iflag_t,
6744 oflag: tc_oflag_t,
6745 cflag: tc_cflag_t,
6746 lflag: tc_lflag_t,
6747 cc: [NCCS]cc_t,
6748 line: cc_t,
6749 ispeed: speed_t,
6750 ospeed: speed_t,
6751} else extern struct {
6752 iflag: tc_iflag_t,
6753 oflag: tc_oflag_t,
6754 cflag: tc_cflag_t,
6755 lflag: tc_lflag_t,
6756 line: cc_t,
6757 cc: [NCCS]cc_t,
6758 ispeed: speed_t,
6759 ospeed: speed_t,
6760};
6761
6762pub const termios2 = if (is_mips) extern struct {
6763 iflag: tc_iflag_t,
6764 oflag: tc_oflag_t,
6765 cflag: tc_cflag_t,
6766 lflag: tc_lflag_t,
6767 cc: [NCCS]cc_t,
6768 line: cc_t,
6769 ispeed: speed_t,
6770 ospeed: speed_t,
6771} else extern struct {
6772 iflag: tc_iflag_t,
6773 oflag: tc_oflag_t,
6774 cflag: tc_cflag_t,
6775 lflag: tc_lflag_t,
6776 line: cc_t,
6777 cc: [NCCS + if (is_sparc) 2 else 0]cc_t,
6778 ispeed: speed_t,
6779 ospeed: speed_t,
6201};6780};
62026781
6203pub const SIOCGIFINDEX = 0x8933;6782pub const SIOCGIFINDEX = 0x8933;