termios.inc 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564
  1. {
  2. $Id$
  3. This file is part of the Free Pascal run time library.
  4. Copyright (c) 1999-2004 by Marco van de Voort
  5. member of the Free Pascal development team
  6. ioctls constants for linux
  7. See the file COPYING.FPC, included in this distribution,
  8. for details about the copyright.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. **********************************************************************}
  13. {********************
  14. IOCtl(TermIOS)
  15. ********************}
  16. Const
  17. { Amount of Control Chars }
  18. NCCS = 32;
  19. NCC = 8;
  20. {$ifdef cpupowerpc}
  21. TCGETS = $402c7413;
  22. TCSETS = $802c7414;
  23. TCSETSW = $802c7415;
  24. TCSETSF = $802c7416;
  25. TCGETA = $40147417;
  26. TCSETA = $80147418;
  27. TCSETAW = $80147419;
  28. TCSETAF = $8014741c;
  29. TCSBRK = $2000741d;
  30. TCXONC = $2000741e;
  31. TCFLSH = $2000741f;
  32. TIOCEXCL = $540c;
  33. TIOCNXCL = $540d;
  34. TIOCSCTTY = $540e;
  35. TIOCGPGRP = $40047477;
  36. TIOCSPGRP = $80047476;
  37. TIOCOUTQ = $40047473;
  38. TIOCSTI = $5412;
  39. TIOCGWINSZ = $40087468;
  40. TIOCSWINSZ = $80087467;
  41. TIOCMGET = $5415;
  42. TIOCMBIS = $5416;
  43. TIOCMBIC = $5417;
  44. TIOCMSET = $5418;
  45. TIOCGSOFTCAR = $5419;
  46. TIOCSSOFTCAR = $541a;
  47. FIONREAD = $4004667f;
  48. TIOCINQ = $4004667f;
  49. TIOCLINUX = $541c;
  50. TIOCCONS = $541d;
  51. TIOCGSERIAL = $541e;
  52. TIOCSSERIAL = $541f;
  53. TIOCPKT = $5420;
  54. FIONBIO = $8004667e;
  55. TIOCNOTTY = $5422;
  56. TIOCSETD = $5423;
  57. TIOCGETD = $5424;
  58. TCSBRKP = $5425;
  59. TIOCTTYGSTRUCT = $5426;
  60. FIONCLEX = $20006602;
  61. FIOCLEX = $20006601;
  62. FIOASYNC = $8004667d;
  63. TIOCSERCONFIG = $5453;
  64. TIOCSERGWILD = $5454;
  65. TIOCSERSWILD = $5455;
  66. TIOCGLCKTRMIOS = $5456;
  67. TIOCSLCKTRMIOS = $5457;
  68. TIOCSERGSTRUCT = $5458;
  69. TIOCSERGETLSR = $5459;
  70. TIOCSERGETMULTI = $545a;
  71. TIOCSERSETMULTI = $545b;
  72. TIOCMIWAIT = $545c;
  73. TIOCGICOUNT = $545d;
  74. TIOCPKT_DATA = $0;
  75. TIOCPKT_FLUSHREAD = $1;
  76. TIOCPKT_FLUSHWRITE= $2;
  77. TIOCPKT_STOP = $4;
  78. TIOCPKT_START = $8;
  79. TIOCPKT_NOSTOP = $10;
  80. TIOCPKT_DOSTOP = $20;
  81. {$endif}
  82. {$ifdef cpui386}
  83. { For Terminal handling }
  84. TCGETS = $5401;
  85. TCSETS = $5402;
  86. TCSETSW = $5403;
  87. TCSETSF = $5404;
  88. TCGETA = $5405;
  89. TCSETA = $5406;
  90. TCSETAW = $5407;
  91. TCSETAF = $5408;
  92. TCSBRK = $5409;
  93. TCXONC = $540A;
  94. TCFLSH = $540B;
  95. TIOCEXCL = $540C;
  96. TIOCNXCL = $540D;
  97. TIOCSCTTY = $540E;
  98. TIOCGPGRP = $540F;
  99. TIOCSPGRP = $5410;
  100. TIOCOUTQ = $5411;
  101. TIOCSTI = $5412;
  102. TIOCGWINSZ = $5413;
  103. TIOCSWINSZ = $5414;
  104. TIOCMGET = $5415;
  105. TIOCMBIS = $5416;
  106. TIOCMBIC = $5417;
  107. TIOCMSET = $5418;
  108. TIOCGSOFTCAR = $5419;
  109. TIOCSSOFTCAR = $541A;
  110. FIONREAD = $541B;
  111. TIOCINQ = FIONREAD;
  112. TIOCLINUX = $541C;
  113. TIOCCONS = $541D;
  114. TIOCGSERIAL = $541E;
  115. TIOCSSERIAL = $541F;
  116. TIOCPKT = $5420;
  117. FIONBIO = $5421;
  118. TIOCNOTTY = $5422;
  119. TIOCSETD = $5423;
  120. TIOCGETD = $5424;
  121. TCSBRKP = $5425;
  122. TIOCTTYGSTRUCT = $5426;
  123. FIONCLEX = $5450;
  124. FIOCLEX = $5451;
  125. FIOASYNC = $5452;
  126. TIOCSERCONFIG = $5453;
  127. TIOCSERGWILD = $5454;
  128. TIOCSERSWILD = $5455;
  129. TIOCGLCKTRMIOS = $5456;
  130. TIOCSLCKTRMIOS = $5457;
  131. TIOCSERGSTRUCT = $5458;
  132. TIOCSERGETLSR = $5459;
  133. TIOCSERGETMULTI = $545A;
  134. TIOCSERSETMULTI = $545B;
  135. TIOCMIWAIT = $545C;
  136. TIOCGICOUNT = $545D;
  137. TIOCGHAYESESP = $545E;
  138. TIOCSHAYESESP = $545F;
  139. FIOQSIZE = $5460;
  140. TIOCPKT_DATA = 0;
  141. TIOCPKT_FLUSHREAD = 1;
  142. TIOCPKT_FLUSHWRITE = 2;
  143. TIOCPKT_STOP = 4;
  144. TIOCPKT_START = 8;
  145. TIOCPKT_NOSTOP = 16;
  146. TIOCPKT_DOSTOP = 32;
  147. {$endif cpui386}
  148. {$ifdef cpusparc}
  149. TCGETA = $40125401;
  150. TCSETA = $80125402;
  151. TCSETAW = $80125403;
  152. TCSETAF = $80125404;
  153. TCSBRK = $20005405;
  154. TCXONC = $20005406;
  155. TCFLSH = $20005407;
  156. TCGETS = $40245408;
  157. TCSETS = $80245409;
  158. TCSETSW = $8024540a;
  159. TCSETSF = $8024540b;
  160. TIOCGETD = $40047400;
  161. TIOCSETD = $80047401;
  162. TIOCEXCL = $2000740d;
  163. TIOCNXCL = $2000740e;
  164. TIOCCONS = $20007424;
  165. TIOCGSOFTCAR = $40047464;
  166. TIOCSSOFTCAR = $80047465;
  167. TIOCSWINSZ = $80087467;
  168. TIOCGWINSZ = $40087468;
  169. TIOCMGET = $4004746a;
  170. TIOCMBIC = $8004746b;
  171. TIOCMBIS = $8004746c;
  172. TIOCMSET = $8004746d;
  173. TIOCSTART = $2000746e;
  174. TIOCSTOP = $2000746f;
  175. TIOCPKT = $80047470;
  176. TIOCNOTTY = $20007471;
  177. TIOCSTI = $80017472;
  178. TIOCOUTQ = $40047473;
  179. TIOCCBRK = $2000747a;
  180. TIOCSBRK = $2000747b;
  181. TIOCSPGRP = $80047482;
  182. TIOCGPGRP = $40047483;
  183. TIOCSCTTY = $20007484;
  184. TIOCGSID = $40047485;
  185. TIOCGPTN = $40047486;
  186. TIOCSPTLCK = $80047487;
  187. FIOCLEX = $20006601;
  188. FIONCLEX = $20006602;
  189. FIOASYNC = $8004667d;
  190. FIONBIO = $8004667e;
  191. FIONREAD = $4004667f;
  192. TIOCINQ = $4004667f;
  193. TIOCLINUX = $541c;
  194. TIOCGSERIAL = $541e;
  195. TIOCSSERIAL = $541f;
  196. TCSBRKP = $5425;
  197. TIOCTTYGSTRUCT = $5426;
  198. TIOCSERCONFIG = $5453;
  199. TIOCSERGWILD = $5454;
  200. TIOCSERSWILD = $5455;
  201. TIOCGLCKTRMIOS = $5456;
  202. TIOCSLCKTRMIOS = $5457;
  203. TIOCSERGSTRUCT = $5458;
  204. TIOCSERGETLSR = $5459;
  205. TIOCSERGETMULTI = $545a;
  206. TIOCSERSETMULTI = $545b;
  207. TIOCMIWAIT = $545c;
  208. TIOCGICOUNT = $545d;
  209. TIOCPKT_DATA = $0;
  210. TIOCPKT_FLUSHREAD = $1;
  211. TIOCPKT_FLUSHWRITE = $2;
  212. TIOCPKT_STOP = $4;
  213. TIOCPKT_START = $8;
  214. TIOCPKT_NOSTOP = $10;
  215. TIOCPKT_DOSTOP = $20;
  216. {$endif cpusparc}
  217. {$ifdef cpux86_64}
  218. TCGETS = $5401;
  219. TCSETS = $5402;
  220. TCSETSW = $5403;
  221. TCSETSF = $5404;
  222. TCGETA = $5405;
  223. TCSETA = $5406;
  224. TCSETAW = $5407;
  225. TCSETAF = $5408;
  226. TCSBRK = $5409;
  227. TCXONC = $540A;
  228. TCFLSH = $540B;
  229. TIOCEXCL = $540C;
  230. TIOCNXCL = $540D;
  231. TIOCSCTTY = $540E;
  232. TIOCGPGRP = $540F;
  233. TIOCSPGRP = $5410;
  234. TIOCOUTQ = $5411;
  235. TIOCSTI = $5412;
  236. TIOCGWINSZ = $5413;
  237. TIOCSWINSZ = $5414;
  238. TIOCMGET = $5415;
  239. TIOCMBIS = $5416;
  240. TIOCMBIC = $5417;
  241. TIOCMSET = $5418;
  242. TIOCGSOFTCAR = $5419;
  243. TIOCSSOFTCAR = $541A;
  244. FIONREAD = $541B;
  245. TIOCINQ = FIONREAD;
  246. TIOCLINUX = $541C;
  247. TIOCCONS = $541D;
  248. TIOCGSERIAL = $541E;
  249. TIOCSSERIAL = $541F;
  250. TIOCPKT = $5420;
  251. FIONBIO = $5421;
  252. TIOCNOTTY = $5422;
  253. TIOCSETD = $5423;
  254. TIOCGETD = $5424;
  255. TCSBRKP = $5425;
  256. TIOCSBRK = $5427;
  257. TIOCCBRK = $5428;
  258. TIOCGSID = $5429;
  259. FIONCLEX = $5450;
  260. FIOCLEX = $5451;
  261. FIOASYNC = $5452;
  262. TIOCSERCONFIG = $5453;
  263. TIOCSERGWILD = $5454;
  264. TIOCSERSWILD = $5455;
  265. TIOCGLCKTRMIOS = $5456;
  266. TIOCSLCKTRMIOS = $5457;
  267. TIOCSERGSTRUCT = $5458;
  268. TIOCSERGETLSR = $5459;
  269. TIOCSERGETMULTI = $545A;
  270. TIOCSERSETMULTI = $545B;
  271. TIOCMIWAIT = $545C;
  272. TIOCGICOUNT = $545D;
  273. TIOCGHAYESESP = $545E;
  274. TIOCSHAYESESP = $545F;
  275. FIOQSIZE = $5460;
  276. TIOCPKT_DATA = 0;
  277. TIOCPKT_FLUSHREAD = 1;
  278. TIOCPKT_FLUSHWRITE = 2;
  279. TIOCPKT_STOP = 4;
  280. TIOCPKT_START = 8;
  281. TIOCPKT_NOSTOP = 16;
  282. TIOCPKT_DOSTOP = 32;
  283. TIOCSER_TEMT = $01;
  284. {$endif cpux86_64}
  285. {$ifdef cpuarm}
  286. { For Terminal handling }
  287. TCGETS = $5401;
  288. TCSETS = $5402;
  289. TCSETSW = $5403;
  290. TCSETSF = $5404;
  291. TCGETA = $5405;
  292. TCSETA = $5406;
  293. TCSETAW = $5407;
  294. TCSETAF = $5408;
  295. TCSBRK = $5409;
  296. TCXONC = $540A;
  297. TCFLSH = $540B;
  298. TIOCEXCL = $540C;
  299. TIOCNXCL = $540D;
  300. TIOCSCTTY = $540E;
  301. TIOCGPGRP = $540F;
  302. TIOCSPGRP = $5410;
  303. TIOCOUTQ = $5411;
  304. TIOCSTI = $5412;
  305. TIOCGWINSZ = $5413;
  306. TIOCSWINSZ = $5414;
  307. TIOCMGET = $5415;
  308. TIOCMBIS = $5416;
  309. TIOCMBIC = $5417;
  310. TIOCMSET = $5418;
  311. TIOCGSOFTCAR = $5419;
  312. TIOCSSOFTCAR = $541A;
  313. FIONREAD = $541B;
  314. TIOCINQ = FIONREAD;
  315. TIOCLINUX = $541C;
  316. TIOCCONS = $541D;
  317. TIOCGSERIAL = $541E;
  318. TIOCSSERIAL = $541F;
  319. TIOCPKT = $5420;
  320. FIONBIO = $5421;
  321. TIOCNOTTY = $5422;
  322. TIOCSETD = $5423;
  323. TIOCGETD = $5424;
  324. TCSBRKP = $5425;
  325. TIOCTTYGSTRUCT = $5426;
  326. FIONCLEX = $5450;
  327. FIOCLEX = $5451;
  328. FIOASYNC = $5452;
  329. TIOCSERCONFIG = $5453;
  330. TIOCSERGWILD = $5454;
  331. TIOCSERSWILD = $5455;
  332. TIOCGLCKTRMIOS = $5456;
  333. TIOCSLCKTRMIOS = $5457;
  334. TIOCSERGSTRUCT = $5458;
  335. TIOCSERGETLSR = $5459;
  336. TIOCSERGETMULTI = $545A;
  337. TIOCSERSETMULTI = $545B;
  338. TIOCMIWAIT = $545C;
  339. TIOCGICOUNT = $545D;
  340. FIOQSIZE = $545E;
  341. TIOCPKT_DATA = 0;
  342. TIOCPKT_FLUSHREAD = 1;
  343. TIOCPKT_FLUSHWRITE = 2;
  344. TIOCPKT_STOP = 4;
  345. TIOCPKT_START = 8;
  346. TIOCPKT_NOSTOP = 16;
  347. TIOCPKT_DOSTOP = 32;
  348. {$endif cpuarm}
  349. Type
  350. winsize = packed record
  351. ws_row,
  352. ws_col,
  353. ws_xpixel,
  354. ws_ypixel : word;
  355. end;
  356. TWinSize=winsize;
  357. {$PACKRECORDS C}
  358. Termios = record
  359. c_iflag,
  360. c_oflag,
  361. c_cflag,
  362. c_lflag : cardinal;
  363. c_line : char;
  364. c_cc : array[0..NCCS-1] of byte;
  365. c_ispeed,
  366. c_ospeed : cardinal;
  367. end;
  368. TTermios=Termios;
  369. {$PACKRECORDS Default}
  370. {const
  371. InitCC:array[0..NCCS-1] of byte=(3,34,177,25,4,0,1,0,21,23,32,0,22,17,27,26,0,0,0);}
  372. const
  373. {c_cc characters}
  374. VINTR = 0;
  375. VQUIT = 1;
  376. VERASE = 2;
  377. VKILL = 3;
  378. VEOF = 4;
  379. VTIME = 5;
  380. VMIN = 6;
  381. VSWTC = 7;
  382. VSTART = 8;
  383. VSTOP = 9;
  384. VSUSP = 10;
  385. VEOL = 11;
  386. VREPRINT = 12;
  387. VDISCARD = 13;
  388. VWERASE = 14;
  389. VLNEXT = 15;
  390. VEOL2 = 16;
  391. {c_iflag bits}
  392. IGNBRK = $0000001;
  393. BRKINT = $0000002;
  394. IGNPAR = $0000004;
  395. PARMRK = $0000008;
  396. INPCK = $0000010;
  397. ISTRIP = $0000020;
  398. INLCR = $0000040;
  399. IGNCR = $0000080;
  400. ICRNL = $0000100;
  401. IUCLC = $0000200;
  402. IXON = $0000400;
  403. IXANY = $0000800;
  404. IXOFF = $0001000;
  405. IMAXBEL = $0002000;
  406. {c_oflag bits}
  407. OPOST = $0000001;
  408. OLCUC = $0000002;
  409. ONLCR = $0000004;
  410. OCRNL = $0000008;
  411. ONOCR = $0000010;
  412. ONLRET = $0000020;
  413. OFILL = $0000040;
  414. OFDEL = $0000080;
  415. NLDLY = $0000100;
  416. NL0 = $0000000;
  417. NL1 = $0000100;
  418. CRDLY = $0000600;
  419. CR0 = $0000000;
  420. CR1 = $0000200;
  421. CR2 = $0000400;
  422. CR3 = $0000600;
  423. TABDLY = $0001800;
  424. TAB0 = $0000000;
  425. TAB1 = $0000800;
  426. TAB2 = $0001000;
  427. TAB3 = $0001800;
  428. XTABS = $0001800;
  429. BSDLY = $0002000;
  430. BS0 = $0000000;
  431. BS1 = $0002000;
  432. VTDLY = $0004000;
  433. VT0 = $0000000;
  434. VT1 = $0004000;
  435. FFDLY = $0008000;
  436. FF0 = $0000000;
  437. FF1 = $0008000;
  438. {c_cflag bits}
  439. CBAUD = $000100F;
  440. B0 = $0000000;
  441. B50 = $0000001;
  442. B75 = $0000002;
  443. B110 = $0000003;
  444. B134 = $0000004;
  445. B150 = $0000005;
  446. B200 = $0000006;
  447. B300 = $0000007;
  448. B600 = $0000008;
  449. B1200 = $0000009;
  450. B1800 = $000000A;
  451. B2400 = $000000B;
  452. B4800 = $000000C;
  453. B9600 = $000000D;
  454. B19200 = $000000E;
  455. B38400 = $000000F;
  456. EXTA = B19200;
  457. EXTB = B38400;
  458. CSIZE = $0000030;
  459. CS5 = $0000000;
  460. CS6 = $0000010;
  461. CS7 = $0000020;
  462. CS8 = $0000030;
  463. CSTOPB = $0000040;
  464. CREAD = $0000080;
  465. PARENB = $0000100;
  466. PARODD = $0000200;
  467. HUPCL = $0000400;
  468. CLOCAL = $0000800;
  469. CBAUDEX = $0001000;
  470. B57600 = $0001001;
  471. B115200 = $0001002;
  472. B230400 = $0001003;
  473. B460800 = $0001004;
  474. CIBAUD = $100F0000;
  475. CMSPAR = $40000000;
  476. CRTSCTS = $80000000;
  477. {c_lflag bits}
  478. ISIG = $0000001;
  479. ICANON = $0000002;
  480. XCASE = $0000004;
  481. ECHO = $0000008;
  482. ECHOE = $0000010;
  483. ECHOK = $0000020;
  484. ECHONL = $0000040;
  485. NOFLSH = $0000080;
  486. TOSTOP = $0000100;
  487. ECHOCTL = $0000200;
  488. ECHOPRT = $0000400;
  489. ECHOKE = $0000800;
  490. FLUSHO = $0001000;
  491. PENDIN = $0004000;
  492. IEXTEN = $0008000;
  493. {c_line bits}
  494. TIOCM_LE = $001;
  495. TIOCM_DTR = $002;
  496. TIOCM_RTS = $004;
  497. TIOCM_ST = $008;
  498. TIOCM_SR = $010;
  499. TIOCM_CTS = $020;
  500. TIOCM_CAR = $040;
  501. TIOCM_RNG = $080;
  502. TIOCM_DSR = $100;
  503. TIOCM_CD = TIOCM_CAR;
  504. TIOCM_RI = TIOCM_RNG;
  505. TIOCM_OUT1 = $2000;
  506. TIOCM_OUT2 = $4000;
  507. {TCSetAttr}
  508. TCSANOW = 0;
  509. TCSADRAIN = 1;
  510. TCSAFLUSH = 2;
  511. {TCFlow}
  512. TCOOFF = 0;
  513. TCOON = 1;
  514. TCIOFF = 2;
  515. TCION = 3;
  516. {TCFlush}
  517. TCIFLUSH = 0;
  518. TCOFLUSH = 1;
  519. TCIOFLUSH = 2;
  520. {
  521. $Log$
  522. Revision 1.11 2004-11-03 12:24:56 peter
  523. * remove comment level 2 warning
  524. Revision 1.10 2004/10/31 16:05:23 florian
  525. + added ioctl constants for arm
  526. Revision 1.9 2004/10/04 21:06:45 florian
  527. + added x84_64 ioctls
  528. Revision 1.8 2004/10/03 17:43:47 florian
  529. * fixedPreviousFramePointer on sparc
  530. Revision 1.7 2004/02/21 16:24:47 marco
  531. * ppc ioctl nr fixed
  532. }