1pub const IOC_NONE: u32 = 0;
17pub const IOC_WRITE: u32 = 1;
19pub const IOC_READ: u32 = 2;
21
22pub const IOC_NRBITS: u32 = 8;
24pub const IOC_TYPEBITS: u32 = 8;
25pub const IOC_SIZEBITS: u32 = 14;
26pub const IOC_DIRBITS: u32 = 2;
27
28pub const IOC_NRSHIFT: u32 = 0;
29pub const IOC_TYPESHIFT: u32 = IOC_NRSHIFT + IOC_NRBITS;
30pub const IOC_SIZESHIFT: u32 = IOC_TYPESHIFT + IOC_TYPEBITS;
31pub const IOC_DIRSHIFT: u32 = IOC_SIZESHIFT + IOC_SIZEBITS;
32
33pub const fn _IO(type_: u32, nr: u32) -> u32 {
35 _IOC(IOC_NONE, type_, nr, 0)
36}
37
38pub const fn _IOR(type_: u32, nr: u32, size: u32) -> u32 {
40 _IOC(IOC_READ, type_, nr, size)
41}
42
43pub const fn _IOW(type_: u32, nr: u32, size: u32) -> u32 {
45 _IOC(IOC_WRITE, type_, nr, size)
46}
47
48pub const fn _IOWR(type_: u32, nr: u32, size: u32) -> u32 {
50 _IOC(IOC_READ | IOC_WRITE, type_, nr, size)
51}
52
53pub const fn _IOC(dir: u32, type_: u32, nr: u32, size: u32) -> u32 {
55 (dir << IOC_DIRSHIFT) | (type_ << IOC_TYPESHIFT) | (nr << IOC_NRSHIFT) | (size << IOC_SIZESHIFT)
56}
57
58pub const fn _IOC_DIR(nr: u32) -> u32 {
60 (nr >> IOC_DIRSHIFT) & ((1 << IOC_DIRBITS) - 1)
61}
62
63pub const fn _IOC_TYPE(nr: u32) -> u32 {
65 (nr >> IOC_TYPESHIFT) & ((1 << IOC_TYPEBITS) - 1)
66}
67
68pub const fn _IOC_NR(nr: u32) -> u32 {
70 (nr >> IOC_NRSHIFT) & ((1 << IOC_NRBITS) - 1)
71}
72
73pub const fn _IOC_SIZE(nr: u32) -> u32 {
75 (nr >> IOC_SIZESHIFT) & ((1 << IOC_SIZEBITS) - 1)
76}
77
78pub const FIONBIO: u32 = 0x5421;
82
83pub const FIONREAD: u32 = 0x541B;
85
86pub const FIOASYNC: u32 = 0x5452;
88
89pub const FIGETBSZ: u32 = 2;
91
92pub const TCGETS: u32 = 0x5401;
96pub const TCSETS: u32 = 0x5402;
97pub const TCSETSW: u32 = 0x5403;
98pub const TCSETSF: u32 = 0x5404;
99
100pub const TIOCGWINSZ: u32 = 0x5413;
102
103pub const TIOCSWINSZ: u32 = 0x5414;
105
106pub const TIOCGPGRP: u32 = 0x540F;
108
109pub const TIOCSPGRP: u32 = 0x5410;
111
112pub const TIOCOUTQ: u32 = 0x5411;
114
115pub const TIOCINQ: u32 = FIONREAD;
117
118pub const TIOCEXCL: u32 = 0x540C;
120
121pub const TIOCNXCL: u32 = 0x540D;
123
124pub const TIOCSCTTY: u32 = 0x540E;
126
127pub const VT_OPENQRY: u32 = 0x5600;
129
130pub const SIOCGIFNAME: u32 = 0x8910;
134
135pub const SIOCGIFCONF: u32 = 0x8912;
137
138pub const SIOCGIFADDR: u32 = 0x8915;
140
141pub const SIOCSIFADDR: u32 = 0x8916;
143
144pub const SIOCGIFFLAGS: u32 = 0x8913;
146
147pub const SIOCSIFFLAGS: u32 = 0x8914;
149
150pub const SIOCGIFBRDADDR: u32 = 0x8919;
152
153pub const SIOCSIFBRDADDR: u32 = 0x891A;
155
156pub const SIOCGIFNETMASK: u32 = 0x891B;
158
159pub const SIOCSIFNETMASK: u32 = 0x891C;
161
162pub const SIOCGIFMTU: u32 = 0x8921;
164
165pub const SIOCSIFMTU: u32 = 0x8922;
167
168pub const SIOCGIFHWADDR: u32 = 0x8927;
170
171pub const SIOCSIFHWADDR: u32 = 0x8924;
173
174pub const SIOCGIFINDEX: u32 = 0x8933;
176
177pub const SIOCGIFNAME_BY_INDEX: u32 = 0x8910;
179
180pub const RTC_RD_TIME: u32 = _IOR(b'p' as u32, 0x09, 36);
185pub const RTC_SET_TIME: u32 = _IOW(b'p' as u32, 0x0A, 36);
186
187#[repr(C)]
191#[derive(Debug, Clone, Copy, Default)]
192pub struct RtcTime {
193 pub tm_sec: i32,
195 pub tm_min: i32,
197 pub tm_hour: i32,
199 pub tm_mday: i32,
201 pub tm_mon: i32,
203 pub tm_year: i32,
205 pub tm_wday: i32,
207 pub tm_yday: i32,
209 pub tm_isdst: i32,
211}
212
213pub const BLKGETSIZE: u32 = _IO(0x12, 96);
215pub const BLKGETSIZE64: u32 = _IOR(0x12, 114, 8);
216pub const BLKFLSBUF: u32 = _IO(0x12, 97);
217
218#[repr(C)]
222#[derive(Debug, Clone, Copy, Default)]
223pub struct WinSize {
224 pub ws_row: u16,
226 pub ws_col: u16,
228 pub ws_xpixel: u16,
230 pub ws_ypixel: u16,
232}
233
234pub const NCCS: usize = 19;
238
239#[repr(C)]
252#[derive(Debug, Clone, Copy)]
253pub struct Termios {
254 pub c_iflag: u32,
256 pub c_oflag: u32,
258 pub c_cflag: u32,
260 pub c_lflag: u32,
262 pub c_line: u8,
264 pub c_cc: [u8; NCCS],
266 pub c_ispeed: u32,
268 pub c_ospeed: u32,
270}
271
272impl Termios {
273 pub const DEFAULT: Self = Self {
277 c_iflag: 0x0100,
279 c_oflag: 0x0001 | 0x0004,
281 c_cflag: 0x0030 | 0x0080,
283 c_lflag: 0x0001 | 0x0002 | 0x0008 | 0x0010,
285 c_line: 0,
287 c_cc: [
292 3, 28, 127, 21, 4, 0, 1, 0, 17, 19, 26, 0, 18, 15, 23, 22, 0, 0, 0, ],
312 c_ispeed: 0x0000000f,
314 c_ospeed: 0x0000000f,
315 };
316}
317
318impl Default for Termios {
319 fn default() -> Self {
320 Self::DEFAULT
321 }
322}
323
324pub const IFNAMSIZ: usize = 16;
328
329#[repr(C)]
331#[derive(Clone, Copy)]
332pub union IfreqIfru {
333 pub ifru_addr: [u8; 16], pub ifru_dstaddr: [u8; 16], pub ifru_broadaddr: [u8; 16], pub ifru_netmask: [u8; 16], pub ifru_hwaddr: [u8; 16], pub ifru_flags: i16,
339 pub ifru_ivalue: i32,
340 pub ifru_mtu: i32,
341 pub ifru_map: [u8; 16],
342 pub ifru_slave: [u8; IFNAMSIZ],
343 pub ifru_newname: [u8; IFNAMSIZ],
344 pub ifru_data: usize, }
346
347#[repr(C)]
348#[derive(Clone, Copy)]
349pub struct Ifreq {
350 pub ifr_name: [u8; IFNAMSIZ],
351 pub ifr_ifru: IfreqIfru,
352}
353
354#[repr(C)]
356pub struct Ifconf {
357 pub ifc_len: i32,
358 pub ifc_buf: usize, }