fpc/rtl/solaris/termios.inc
Michael VAN CANNEYT 7c538b1797 * Char -> AnsiChar
2023-07-14 17:26:09 +02:00

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;
function tcgetattr(_para1:cint; _para2:Ptermios):cint;cdecl;external;
(* Const before type ignored *)
function tcsetattr(_para1:cint; _para2:cint; _para3:Ptermios):cint;cdecl;external;
(* Const before type ignored *)
function tcsetattr(_para1:cint; _para2:cint; const _para3:termios):cint;cdecl;
// 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 AnsiChar (V7 compatability) }
VCEOF = NCC;
{ RESERVED true EOL AnsiChar }
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;