1 /* 2 * Copyright (c) 2006-2022, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2020-09-01 Meco Man First Version 9 */ 10 11 #ifndef __SYS_IOCTL_H__ 12 #define __SYS_IOCTL_H__ 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 #ifdef RT_USING_MUSLLIBC 19 #include_next <sys/ioctl.h> 20 #else 21 22 struct winsize 23 { 24 unsigned short ws_row; 25 unsigned short ws_col; 26 unsigned short ws_xpixel; 27 unsigned short ws_ypixel; 28 }; 29 30 /* 31 * Direction bits, which any architecture can choose to override 32 * before including this file. 33 */ 34 35 #ifndef _IOC_NONE 36 #define _IOC_NONE 0U 37 #endif 38 39 #ifndef _IOC_WRITE 40 #define _IOC_WRITE 1U 41 #endif 42 43 #ifndef _IOC_READ 44 #define _IOC_READ 2U 45 #endif 46 47 #ifndef _IOC 48 #define _IOC(a,b,c,d) (((a)<<30) | ((b)<<8) | (c) | ((d)<<16)) 49 #endif 50 51 #ifndef _IO 52 #define _IO(a,b) _IOC(_IOC_NONE, (a), (b), 0) 53 #endif 54 55 #ifndef _IOW 56 #define _IOW(a,b,c) _IOC(_IOC_WRITE, (a), (b), sizeof(c)) 57 #endif 58 59 #ifndef _IOR 60 #define _IOR(a,b,c) _IOC(_IOC_READ, (a), (b), sizeof(c)) 61 #endif 62 63 #ifndef _IOWR 64 #define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE, (a), (b), sizeof(c)) 65 #endif 66 67 #ifndef FIONREAD 68 #define FIONREAD _IOR('f', 127, int) /* get # bytes to read */ 69 #endif 70 71 #ifndef FIONBIO 72 #define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */ 73 #endif 74 75 #ifndef FIOASYNC 76 #define FIOASYNC _IOW('f', 125, int) /* set/clear async i/o */ 77 #endif 78 79 /* Socket I/O Controls */ 80 #ifndef SIOCSHIWAT 81 #define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */ 82 #define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */ 83 #define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */ 84 #define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */ 85 #define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */ 86 #endif 87 88 #define TCGETS 0x5401 89 #define TCSETS 0x5402 90 #define TCSETSW 0x5403 91 #define TCSETSF 0x5404 92 #define TCGETA 0x5405 93 #define TCSETA 0x5406 94 #define TCSETAW 0x5407 95 #define TCSETAF 0x5408 96 #define TCSBRK 0x5409 97 #define TCXONC 0x540A 98 #define TCFLSH 0x540B 99 #define TIOCEXCL 0x540C 100 #define TIOCNXCL 0x540D 101 #define TIOCSCTTY 0x540E 102 #define TIOCGPGRP 0x540F 103 #define TIOCSPGRP 0x5410 104 #define TIOCOUTQ 0x5411 105 #define TIOCSTI 0x5412 106 #define TIOCGWINSZ 0x5413 107 #define TIOCSWINSZ 0x5414 108 #define TIOCMGET 0x5415 109 #define TIOCMBIS 0x5416 110 #define TIOCMBIC 0x5417 111 #define TIOCMSET 0x5418 112 #define TIOCGSOFTCAR 0x5419 113 #define TIOCSSOFTCAR 0x541A 114 #define TIOCINQ FIONREAD 115 #define TIOCLINUX 0x541C 116 #define TIOCCONS 0x541D 117 #define TIOCGSERIAL 0x541E 118 #define TIOCSSERIAL 0x541F 119 #define TIOCPKT 0x5420 120 #define TIOCNOTTY 0x5422 121 #define TIOCSETD 0x5423 122 #define TIOCGETD 0x5424 123 #define TCSBRKP 0x5425 124 #define TIOCSBRK 0x5427 125 #define TIOCCBRK 0x5428 126 #define TIOCGSID 0x5429 127 #define TIOCGRS485 0x542E 128 #define TIOCSRS485 0x542F 129 #define TIOCGPTN 0x80045430 130 #define TIOCSPTLCK 0x40045431 131 #define TIOCGDEV 0x80045432 132 #define TCGETX 0x5432 133 #define TCSETX 0x5433 134 #define TCSETXF 0x5434 135 #define TCSETXW 0x5435 136 #define TIOCSIG 0x40045436 137 #define TIOCVHANGUP 0x5437 138 #define TIOCGPKT 0x80045438 139 #define TIOCGPTLCK 0x80045439 140 #define TIOCGEXCL 0x80045440 141 142 #define FIONCLEX 0x5450 143 #define FIOCLEX 0x5451 144 145 #define TIOCSERCONFIG 0x5453 146 #define TIOCSERGWILD 0x5454 147 #define TIOCSERSWILD 0x5455 148 #define TIOCGLCKTRMIOS 0x5456 149 #define TIOCSLCKTRMIOS 0x5457 150 #define TIOCSERGSTRUCT 0x5458 151 #define TIOCSERGETLSR 0x5459 152 #define TIOCSERGETMULTI 0x545A 153 #define TIOCSERSETMULTI 0x545B 154 155 #define TIOCMIWAIT 0x545C 156 #define TIOCGICOUNT 0x545D 157 #define FIOQSIZE 0x5460 158 159 #define TIOCPKT_DATA 0 160 #define TIOCPKT_FLUSHREAD 1 161 #define TIOCPKT_FLUSHWRITE 2 162 #define TIOCPKT_STOP 4 163 #define TIOCPKT_START 8 164 #define TIOCPKT_NOSTOP 16 165 #define TIOCPKT_DOSTOP 32 166 #define TIOCPKT_IOCTL 64 167 168 #define TIOCSER_TEMT 0x01 169 170 #define TIOCM_LE 0x001 171 #define TIOCM_DTR 0x002 172 #define TIOCM_RTS 0x004 173 #define TIOCM_ST 0x008 174 #define TIOCM_SR 0x010 175 #define TIOCM_CTS 0x020 176 #define TIOCM_CAR 0x040 177 #define TIOCM_RNG 0x080 178 #define TIOCM_DSR 0x100 179 #define TIOCM_CD TIOCM_CAR 180 #define TIOCM_RI TIOCM_RNG 181 #define TIOCM_OUT1 0x2000 182 #define TIOCM_OUT2 0x4000 183 #define TIOCM_LOOP 0x8000 184 185 #define N_TTY 0 186 #define N_SLIP 1 187 #define N_MOUSE 2 188 #define N_PPP 3 189 #define N_STRIP 4 190 #define N_AX25 5 191 #define N_X25 6 192 #define N_6PACK 7 193 #define N_MASC 8 194 #define N_R3964 9 195 #define N_PROFIBUS_FDL 10 196 #define N_IRDA 11 197 #define N_SMSBLOCK 12 198 #define N_HDLC 13 199 #define N_SYNC_PPP 14 200 #define N_HCI 15 201 202 #define FIOSETOWN 0x8901 203 #define SIOCSPGRP 0x8902 204 #define FIOGETOWN 0x8903 205 #define SIOCGPGRP 0x8904 206 #define SIOCGSTAMP 0x8906 207 #define SIOCGSTAMPNS 0x8907 208 209 #endif 210 211 #ifndef FIONWRITE 212 #define FIONWRITE _IOR('f', 121, int) /* get # bytes outstanding in send queue */ 213 #endif 214 215 #define SIOCADDRT 0x890B 216 #define SIOCDELRT 0x890C 217 #define SIOCRTMSG 0x890D 218 219 #define SIOCGIFNAME 0x8910 220 #define SIOCSIFLINK 0x8911 221 #define SIOCGIFCONF 0x8912 222 #define SIOCGIFFLAGS 0x8913 223 #define SIOCSIFFLAGS 0x8914 224 #define SIOCGIFADDR 0x8915 225 #define SIOCSIFADDR 0x8916 226 #define SIOCGIFDSTADDR 0x8917 227 #define SIOCSIFDSTADDR 0x8918 228 #define SIOCGIFBRDADDR 0x8919 229 #define SIOCSIFBRDADDR 0x891a 230 #define SIOCGIFNETMASK 0x891b 231 #define SIOCSIFNETMASK 0x891c 232 #define SIOCGIFMETRIC 0x891d 233 #define SIOCSIFMETRIC 0x891e 234 #define SIOCGIFMEM 0x891f 235 #define SIOCSIFMEM 0x8920 236 #define SIOCGIFMTU 0x8921 237 #define SIOCSIFMTU 0x8922 238 #define SIOCSIFNAME 0x8923 239 #define SIOCSIFHWADDR 0x8924 240 #define SIOCGIFENCAP 0x8925 241 #define SIOCSIFENCAP 0x8926 242 #define SIOCGIFHWADDR 0x8927 243 #define SIOCGIFSLAVE 0x8929 244 #define SIOCSIFSLAVE 0x8930 245 #define SIOCADDMULTI 0x8931 246 #define SIOCDELMULTI 0x8932 247 #define SIOCGIFINDEX 0x8933 248 #define SIOGIFINDEX SIOCGIFINDEX 249 #define SIOCSIFPFLAGS 0x8934 250 #define SIOCGIFPFLAGS 0x8935 251 #define SIOCDIFADDR 0x8936 252 #define SIOCSIFHWBROADCAST 0x8937 253 #define SIOCGIFCOUNT 0x8938 254 255 #define SIOCGIFBR 0x8940 256 #define SIOCSIFBR 0x8941 257 258 #define SIOCGIFTXQLEN 0x8942 259 #define SIOCSIFTXQLEN 0x8943 260 261 #define SIOCDARP 0x8953 262 #define SIOCGARP 0x8954 263 #define SIOCSARP 0x8955 264 265 #define SIOCDRARP 0x8960 266 #define SIOCGRARP 0x8961 267 #define SIOCSRARP 0x8962 268 269 #define SIOCGIFMAP 0x8970 270 #define SIOCSIFMAP 0x8971 271 272 #define SIOCADDDLCI 0x8980 273 #define SIOCDELDLCI 0x8981 274 275 #define SIOCDEVPRIVATE 0x89F0 276 #define SIOCPROTOPRIVATE 0x89E0 277 278 int ioctl(int fildes, int cmd, ...); 279 280 #ifdef __cplusplus 281 } 282 #endif 283 284 #endif 285