mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 20:31:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			565 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			565 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| 
 | |
| 
 | |
|   const
 | |
|   { Disable special character functions  }
 | |
|      _POSIX_VDISABLE = 0;
 | |
|   { was #define dname(params) para_def_expr }
 | |
|   { argument types are unknown }
 | |
| 
 | |
| 
 | |
|   const
 | |
|      IBSHIFT = 16;
 | |
|   { required by termio.h and VCEOF/VCEOL  }
 | |
| 
 | |
|   const
 | |
|      _NCC = 8;
 | |
| 
 | |
|   const
 | |
|      NCC = _NCC;
 | |
|   { some defines required by POSIX  }
 | |
| 
 | |
|   const
 | |
|      NCCS = 19;
 | |
|   {
 | |
|    * types defined by POSIX. These are better off in types.h, but
 | |
|    * the standard says that they have to be in termios.h.
 | |
|     }
 | |
| 
 | |
|   type
 | |
| 
 | |
|      tcflag_t = dword;
 | |
| 
 | |
|      cc_t = byte;
 | |
| 
 | |
|      speed_t = dword;
 | |
|   {
 | |
|    * Ioctl control packet
 | |
|     }
 | |
|      ptermios = ^termios;
 | |
|      termios = record
 | |
|   { input modes  }
 | |
|           c_iflag : tcflag_t;
 | |
|   { output modes  }
 | |
|           c_oflag : tcflag_t;
 | |
|   { control modes  }
 | |
|           c_cflag : tcflag_t;
 | |
|   { line discipline modes  }
 | |
|           c_lflag : tcflag_t;
 | |
|   { control chars  }
 | |
|           c_cc : array[0..(NCCS)-1] of cc_t;
 | |
|        end;
 | |
|      ttermios = termios;
 | |
| 
 | |
|   {
 | |
|    * POSIX termios functions
 | |
|    * These functions get mapped into ioctls.
 | |
|     }
 | |
| (* Const before type ignored *)
 | |
| 
 | |
|   function cfgetospeed(_para1:Ptermios):speed_t;cdecl;external;
 | |
| 
 | |
|   function cfsetospeed(_para1:Ptermios; _para2:speed_t):cint;cdecl;external;
 | |
| 
 | |
| (* Const before type ignored *)
 | |
|   function cfgetispeed(_para1:Ptermios):speed_t;cdecl;external;
 | |
| 
 | |
|   function cfsetispeed(_para1:Ptermios; _para2:speed_t):cint;cdecl;external;
 | |
| 
 | |
|   function tcgetattr(_para1:cint; var _para2:termios):cint;cdecl;external;
 | |
| 
 | |
| (* Const before type ignored *)
 | |
|   function tcsetattr(_para1:cint; _para2:cint; const _para3:termios):cint;cdecl;external;
 | |
| 
 | |
|   function tcgetattr(_para1:cint; _para2:Ptermios):cint;cdecl;external;
 | |
| 
 | |
| (* Const before type ignored *)
 | |
|   function tcsetattr(_para1:cint; _para2:cint; _para3:Ptermios):cint;cdecl;external;
 | |
| 
 | |
| //  function tcsendbreak(_para1:cint; _para2:cint):cint;cdecl;
 | |
| 
 | |
| //  function tcdrain(_para1:cint):cint;cdecl;
 | |
| 
 | |
| //  function tcflush(_para1:cint; _para2:cint):cint;cdecl;
 | |
| 
 | |
| //  function tcflow(_para1:cint; _para2:cint):cint;cdecl;
 | |
| 
 | |
| 
 | |
|   function tcgetsid(_para1:cint):pid_t;cdecl;external;
 | |
| 
 | |
|   function tcgetsid:pid_t;cdecl;external;
 | |
| 
 | |
|   { control characters  }
 | |
|   const
 | |
|      VINTR = 0;
 | |
|      VQUIT = 1;
 | |
|      VERASE = 2;
 | |
|      VKILL = 3;
 | |
|      VEOF = 4;
 | |
|      VEOL = 5;
 | |
| 
 | |
|   const
 | |
|      VEOL2 = 6;
 | |
| 
 | |
|   const
 | |
|      VMIN = 4;
 | |
|      VTIME = 5;
 | |
| 
 | |
|   const
 | |
|      VSWTCH = 7;
 | |
| 
 | |
|   const
 | |
|      VSTART = 8;
 | |
|      VSTOP = 9;
 | |
|      VSUSP = 10;
 | |
| 
 | |
|   const
 | |
|      VDSUSP = 11;
 | |
|      VREPRINT = 12;
 | |
|      VDISCARD = 13;
 | |
|      VWERASE = 14;
 | |
|      VLNEXT = 15;
 | |
|   { 16 thru 19 reserved for future use  }
 | |
|   {
 | |
|    * control characters form Xenix termio.h
 | |
|     }
 | |
|   { RESERVED true EOF char (V7 compatability)  }
 | |
|      VCEOF = NCC;
 | |
|   { RESERVED true EOL char  }
 | |
|      VCEOL = NCC+1;
 | |
|      CNUL = 0;
 | |
|      CDEL = 0177;
 | |
|   { S5 default control chars  }
 | |
|   { CINTR, CERASE and CKILL modified to SunOS traditional values  }
 | |
|      CESC = '\\';
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { FS, cntl |  }
 | |
| 
 | |
|   const
 | |
|      CQUIT = 034;
 | |
|   { DEL  }
 | |
|      CERASE = 0177;
 | |
|   { was #define dname def_expr }
 | |
| 
 | |
|   const
 | |
|      CEOT = 04;
 | |
|      CEOL = 0;
 | |
|      CEOL2 = 0;
 | |
|   { cntl d  }
 | |
|      CEOF = 04;
 | |
|   { cntl q  }
 | |
|      CSTART = 021;
 | |
|   { cntl s  }
 | |
|      CSTOP = 023;
 | |
|   { cntl z  }
 | |
|      CSWTCH = 032;
 | |
|      CNSWTCH = 0;
 | |
| {
 | |
|   { was #define dname def_expr }
 | |
|   function CSUSP : longint;
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { was #define dname def_expr }
 | |
|   function CDSUSP : longint;
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { was #define dname def_expr }
 | |
|   function CRPRNT : longint;
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { was #define dname def_expr }
 | |
|   function CFLUSH : longint;
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { was #define dname def_expr }
 | |
|   function CWERASE : longint;
 | |
|       { return type might be wrong }
 | |
| 
 | |
|   { was #define dname def_expr }
 | |
|   function CLNEXT : longint;
 | |
|       { return type might be wrong }
 | |
| }
 | |
|   { input modes  }
 | |
| 
 | |
|   const
 | |
|      IGNBRK = &0000001;
 | |
|      BRKINT = &0000002;
 | |
|      IGNPAR = &0000004;
 | |
|      PARMRK = &0000010;
 | |
|      INPCK = &0000020;
 | |
|      ISTRIP = &0000040;
 | |
|      INLCR = &0000100;
 | |
|      IGNCR = &0000200;
 | |
|      ICRNL = &0000400;
 | |
|      IUCLC = &0001000;
 | |
|      IXON = &0002000;
 | |
|      IXANY = &0004000;
 | |
|      IXOFF = &0010000;
 | |
|      IMAXBEL = &0020000;
 | |
|   { for 386 compatibility  }
 | |
|      DOSMODE = 0100000;
 | |
|   { output modes  }
 | |
|      OPOST = &0000001;
 | |
|      OLCUC = &0000002;
 | |
|      ONLCR = &0000004;
 | |
|      OCRNL = &0000010;
 | |
|      ONOCR = &0000020;
 | |
|      ONLRET = &0000040;
 | |
|      OFILL = &0000100;
 | |
|      OFDEL = &0000200;
 | |
|      NLDLY = &0000400;
 | |
|      NL0 = 0;
 | |
|      NL1 = &0000400;
 | |
|      CRDLY = &0003000;
 | |
|      CR0 = 0;
 | |
|      CR1 = &0001000;
 | |
|      CR2 = &0002000;
 | |
|      CR3 = &0003000;
 | |
|      TABDLY = &0014000;
 | |
|      TAB0 = 0;
 | |
|      TAB1 = &0004000;
 | |
|      TAB2 = &0010000;
 | |
|      TAB3 = &0014000;
 | |
|      XTABS = &0014000;
 | |
|      BSDLY = &0020000;
 | |
|      BS0 = 0;
 | |
|      BS1 = &0020000;
 | |
|      VTDLY = &0040000;
 | |
|      VT0 = 0;
 | |
|      VT1 = &0040000;
 | |
|      FFDLY = 0100000;
 | |
|      FF0 = 0;
 | |
|      FF1 = 0100000;
 | |
|      PAGEOUT = 0200000;
 | |
|      WRAP = 0400000;
 | |
|   { control modes  }
 | |
|      CBAUD = &0000017;
 | |
|      CSIZE = &0000060;
 | |
|      CS5 = 0;
 | |
|      CS6 = &0000020;
 | |
|      CS7 = &0000040;
 | |
|      CS8 = &0000060;
 | |
|      CSTOPB = &0000100;
 | |
|      CREAD = &0000200;
 | |
|      PARENB = &0000400;
 | |
|      PARODD = &0001000;
 | |
|      HUPCL = &0002000;
 | |
|      CLOCAL = &0004000;
 | |
|      RCV1EN = &0010000;
 | |
|      XMT1EN = &0020000;
 | |
|      LOBLK = &0040000;
 | |
|   { *V7* exclusive use coming fron XENIX  }
 | |
|      XCLUDE = 0100000;
 | |
|      CRTSXOFF = 010000000000;
 | |
|      CRTSCTS = 020000000000;
 | |
|      CIBAUD = 03600000;
 | |
|      PAREXT = 04000000;
 | |
|      CBAUDEXT = 010000000;
 | |
|      CIBAUDEXT = 020000000;
 | |
|   {
 | |
|    * 4.4BSD hardware flow control flags
 | |
|     }
 | |
|      CRTS_IFLOW = 010000000000;
 | |
|      CCTS_OFLOW = 020000000000;
 | |
|   { line discipline 0 modes  }
 | |
|      ISIG = &0000001;
 | |
|      ICANON = &0000002;
 | |
|      XCASE = &0000004;
 | |
|      ECHO = &0000010;
 | |
|      ECHOE = &0000020;
 | |
|      ECHOK = &0000040;
 | |
|      ECHONL = &0000100;
 | |
|      NOFLSH = &0000200;
 | |
|      TOSTOP = &0000400;
 | |
|      ECHOCTL = &0001000;
 | |
|      ECHOPRT = &0002000;
 | |
|      ECHOKE = &0004000;
 | |
|      DEFECHO = &0010000;
 | |
|      FLUSHO = &0020000;
 | |
|      PENDIN = &0040000;
 | |
|   { POSIX flag - enable POSIX extensions  }
 | |
|      IEXTEN = &0100000;
 | |
|      _TIOC = ord('T') shl 8;
 | |
|      TIOC = _TIOC;
 | |
|      TCGETA = _TIOC or 1;
 | |
|      TCSETA = _TIOC or 2;
 | |
|      TCSETAW = _TIOC or 3;
 | |
|      TCSETAF = _TIOC or 4;
 | |
|      TCSBRK = _TIOC or 5;
 | |
|      TCXONC = _TIOC or 6;
 | |
|      TCFLSH = _TIOC or 7;
 | |
|   { Slots reserved for 386/XENIX compatibility - keyboard control  }
 | |
|      TIOCKBON = _TIOC or 8;
 | |
|      TIOCKBOF = _TIOC or 9;
 | |
|      KBENABLED = _TIOC or 10;
 | |
|      IOCTYPE = $ff00;
 | |
|      TCDSET = _TIOC or 32;
 | |
|   { 386 - "RTS" toggle define 8A1 protocol  }
 | |
|      RTS_TOG = _TIOC or 33;
 | |
|      TIOCGWINSZ = _TIOC or 104;
 | |
|      TIOCSWINSZ = _TIOC or 103;
 | |
|   {
 | |
|    * Softcarrier ioctls
 | |
|     }
 | |
|      TIOCGSOFTCAR = _TIOC or 105;
 | |
|      TIOCSSOFTCAR = _TIOC or 106;
 | |
|   { termios ioctls  }
 | |
|      TCGETS = _TIOC or 13;
 | |
|      TCSETS = _TIOC or 14;
 | |
|   { same as TCSETS  }
 | |
|      TCSANOW = _TIOC or 14;
 | |
|      TCSETSW = _TIOC or 15;
 | |
|   { same as TCSETSW  }
 | |
|      TCSADRAIN = _TIOC or 15;
 | |
|      TCSETSF = _TIOC or 16;
 | |
|   {
 | |
|    * NTP PPS ioctls
 | |
|     }
 | |
|      TIOCGPPS = _TIOC or 125;
 | |
|      TIOCSPPS = _TIOC or 126;
 | |
|      TIOCGPPSEV = _TIOC or 127;
 | |
|   { Argument filled in by TIOCGPPSEV  }
 | |
| 
 | |
|   type
 | |
|      ppsclockev = record
 | |
|           tv : timeval;
 | |
|           serial : cuint;
 | |
|        end;
 | |
| 
 | |
|      ppsclockev32 = record
 | |
|           tv : timeval32;
 | |
|           serial : cuint32;
 | |
|        end;
 | |
| 
 | |
|   { same as TCSETSF  }
 | |
| 
 | |
|   const
 | |
|      TCSAFLUSH = _TIOC or 16;
 | |
|   { termios option flags  }
 | |
|   { flush data received but not read  }
 | |
|      TCIFLUSH = 0;
 | |
|   { flush data written but not transmitted  }
 | |
|      TCOFLUSH = 1;
 | |
|   { flush both data both input and output queues  }
 | |
|      TCIOFLUSH = 2;
 | |
|   { suspend output  }
 | |
|      TCOOFF = 0;
 | |
|   { restart suspended output  }
 | |
|      TCOON = 1;
 | |
|   { suspend input  }
 | |
|      TCIOFF = 2;
 | |
|   { restart suspended input  }
 | |
|      TCION = 3;
 | |
|   { Slots for 386/XENIX compatibility  }
 | |
|   { BSD includes these ioctls in ttold.h  }
 | |
| 
 | |
|   const
 | |
|      TIOCGETD = tIOC or 0;
 | |
|      TIOCSETD = tIOC or 1;
 | |
|      TIOCHPCL = tIOC or 2;
 | |
|      TIOCGETP = tIOC or 8;
 | |
|      TIOCSETP = tIOC or 9;
 | |
|      TIOCSETN = tIOC or 10;
 | |
|      TIOCEXCL = tIOC or 13;
 | |
|      TIOCNXCL = tIOC or 14;
 | |
|      TIOCFLUSH = tIOC or 16;
 | |
|      TIOCSETC = tIOC or 17;
 | |
|      TIOCGETC = tIOC or 18;
 | |
|   {
 | |
|    * BSD ioctls that are not the same as XENIX are included here.
 | |
|    * There are also some relevant ioctls from SUN/BSD sys/ttycom.h
 | |
|    * BSD pty ioctls like TIOCPKT are not supported in SVR4.
 | |
|     }
 | |
|   { bis local mode bits  }
 | |
|      TIOCLBIS = tIOC or 127;
 | |
|   { bic local mode bits  }
 | |
|      TIOCLBIC = tIOC or 126;
 | |
|   { set entire local mode word  }
 | |
|      TIOCLSET = tIOC or 125;
 | |
|   { get local modes  }
 | |
|      TIOCLGET = tIOC or 124;
 | |
|   { set break bit  }
 | |
|      TIOCSBRK = tIOC or 123;
 | |
|   { clear break bit  }
 | |
|      TIOCCBRK = tIOC or 122;
 | |
|   { set data terminal ready  }
 | |
|      TIOCSDTR = tIOC or 121;
 | |
|   { clear data terminal ready  }
 | |
|      TIOCCDTR = tIOC or 120;
 | |
|   { set local special chars  }
 | |
|      TIOCSLTC = tIOC or 117;
 | |
|   { get local special chars  }
 | |
|      TIOCGLTC = tIOC or 116;
 | |
|   { driver output queue size  }
 | |
|      TIOCOUTQ = tIOC or 115;
 | |
|   { void tty association  }
 | |
|      TIOCNOTTY = tIOC or 113;
 | |
|   { stop output, like ^S  }
 | |
|      TIOCSTOP = tIOC or 111;
 | |
|   { start output, like ^Q  }
 | |
|      TIOCSTART = tIOC or 110;
 | |
|   { private to Sun; do not use  }
 | |
|      TIOCSILOOP = tIOC or 109;
 | |
|   { end _SYS_TTOLD_H  }
 | |
|   { POSIX job control ioctls  }
 | |
| 
 | |
|   { get pgrp of tty  }
 | |
|   const
 | |
|      TIOCGPGRP = tIOC or 20;
 | |
|   { set pgrp of tty  }
 | |
|      TIOCSPGRP = tIOC or 21;
 | |
|   { get session id on ctty  }
 | |
|      TIOCGSID = tIOC or 22;
 | |
|   { Miscellaneous  }
 | |
|   { simulate terminal input  }
 | |
|      TIOCSTI = tIOC or 23;
 | |
|   { Modem control  }
 | |
|   { set all modem bits  }
 | |
|      TIOCMSET = tIOC or 26;
 | |
|   { bis modem bits  }
 | |
|      TIOCMBIS = tIOC or 27;
 | |
|   { bic modem bits  }
 | |
|      TIOCMBIC = tIOC or 28;
 | |
|   { get all modem bits  }
 | |
|      TIOCMGET = tIOC or 29;
 | |
|   { line enable  }
 | |
|      TIOCM_LE = &0001;
 | |
|   { data terminal ready  }
 | |
|      TIOCM_DTR = &0002;
 | |
|   { request to send  }
 | |
|      TIOCM_RTS = &0004;
 | |
|   { secondary transmit  }
 | |
|      TIOCM_ST = &0010;
 | |
|   { secondary receive  }
 | |
|      TIOCM_SR = &0020;
 | |
|   { clear to send  }
 | |
|      TIOCM_CTS = &0040;
 | |
|   { carrier detect  }
 | |
|      TIOCM_CAR = &0100;
 | |
|      TIOCM_CD = TIOCM_CAR;
 | |
|   { ring  }
 | |
|      TIOCM_RNG = &0200;
 | |
|      TIOCM_RI = TIOCM_RNG;
 | |
|   { data set ready  }
 | |
|      TIOCM_DSR = &0400;
 | |
|   { pseudo-tty  }
 | |
|   { remote input editing  }
 | |
|      TIOCREMOTE = tIOC or 30;
 | |
|   { pty: send signal to slave  }
 | |
|      TIOCSIGNAL = tIOC or 31;
 | |
|   { Some more 386 xenix stuff  }
 | |
|      LDIOC = ord('D') shl 8;
 | |
|      LDOPEN = LDIOC or 0;
 | |
|      LDCLOSE = LDIOC or 1;
 | |
|      LDCHG = LDIOC or 2;
 | |
|      LDGETT = LDIOC or 8;
 | |
|      LDSETT = LDIOC or 9;
 | |
|   { Slots for 386 compatibility  }
 | |
|      LDSMAP = LDIOC or 110;
 | |
|      LDGMAP = LDIOC or 111;
 | |
|      LDNMAP = LDIOC or 112;
 | |
|      LDEMAP = LDIOC or 113;
 | |
|      LDDMAP = LDIOC or 114;
 | |
|   {
 | |
|    * These are retained for 386/XENIX compatibility.
 | |
|     }
 | |
|      DIOC = ord('d') shl 8;
 | |
|   { V7  }
 | |
|      DIOCGETP = DIOC or 8;
 | |
|   { V7  }
 | |
|      DIOCSETP = DIOC or 9;
 | |
|   {
 | |
|    * Returns a non-zero value if there
 | |
|    * are characters in the input queue.
 | |
|    *
 | |
|    * XXX - somebody is confused here.  V7 had no such "ioctl", although XENIX may
 | |
|    * have added it; 4BSD had FIONREAD, which returned the number of characters
 | |
|    * waiting, and was supposed to work on all descriptors (i.e., every driver
 | |
|    * should make a stab at implementing it).
 | |
|     }
 | |
|   { V7  }
 | |
|      FIORDCHK = (ord('f') shl 8) or 3;
 | |
|   {
 | |
|    * Speeds
 | |
|     }
 | |
| 
 | |
|   { parameter length, at most 255 bytes }
 | |
|   IOCPARM_MASK = $ff;
 | |
| 
 | |
|   {  max size of ioctl args  }
 | |
|   IOCPARM_MAX = IOCPARM_MASK + 1;
 | |
| 
 | |
|   { no parameters }
 | |
|   IOC_VOID = culong($20000000);
 | |
| 
 | |
|   { copy parameters out }
 | |
|   IOC_OUT = culong($40000000);
 | |
| 
 | |
|   { copy parameters in }
 | |
|   IOC_IN = culong($80000000);
 | |
| 
 | |
|   { copy paramters in and out }
 | |
|   IOC_INOUT = (IOC_IN or IOC_OUT);
 | |
| 
 | |
|   { mask for IN/OUT/VOID }
 | |
|   IOC_DIRMASK = culong($e0000000);
 | |
| 
 | |
|   FIOCLEX = (IOC_VOID or (0 and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 1);
 | |
|   FIONCLEX = (IOC_VOID or (0 and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 2);
 | |
|   FIONREAD = (IOC_OUT or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 127);
 | |
|   FIONBIO = (IOC_IN or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 126);
 | |
|   FIOASYNC = (IOC_IN or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 125);
 | |
|   FIOSETOWN = (IOC_IN or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 124);
 | |
|   FIOGETOWN = (IOC_OUT or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 123);
 | |
|   FIODTYPE = (IOC_OUT or (sizeof(cint) and IOCPARM_MASK) << 16) or ((ord('f') << 8) or 122);
 | |
|   
 | |
|   const
 | |
|      B0 = 0;
 | |
|      B50 = 1;
 | |
|      B75 = 2;
 | |
|      B110 = 3;
 | |
|      B134 = 4;
 | |
|      B150 = 5;
 | |
|      B200 = 6;
 | |
|      B300 = 7;
 | |
|      B600 = 8;
 | |
|      B1200 = 9;
 | |
|      B1800 = 10;
 | |
|      B2400 = 11;
 | |
|      B4800 = 12;
 | |
|      B9600 = 13;
 | |
|      B19200 = 14;
 | |
|      B38400 = 15;
 | |
|      B57600 = 16;
 | |
|      B76800 = 17;
 | |
|      B115200 = 18;
 | |
|      B153600 = 19;
 | |
|      B230400 = 20;
 | |
|      B307200 = 21;
 | |
|      B460800 = 22;
 | |
|   { Windowing structure to support JWINSIZE/TIOCSWINSZ/TIOCGWINSZ  }
 | |
|   { rows, in characters  }
 | |
|   { columns, in character  }
 | |
|   { horizontal size, pixels  }
 | |
|   { vertical size, pixels  }
 | |
| 
 | |
|   type
 | |
|      winsize = record
 | |
|           ws_row : word;
 | |
|           ws_col : word;
 | |
|           ws_xpixel : word;
 | |
|           ws_ypixel : word;
 | |
|        end;
 | |
|      twinsize = winsize;
 | |
|      pwinsize = ^twinsize;
 | |
| 
 | |
|   const
 | |
|     { alias for FPC rtl }
 | |
|      TIOCGETA = _TIOC or 1;
 | |
|      TIOCSETA = _TIOC or 2;
 | |
|      TIOCSETAW = _TIOC or 3;
 | |
|      TIOCSETAF = _TIOC or 4;
 | |
| 
 | |
|   { same as TCSETSW  }
 | |
|      TIOCDRAIN = _TIOC or 15;
 | 
