mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-03 03:13:46 +02:00
193 lines
4.1 KiB
ObjectPascal
193 lines
4.1 KiB
ObjectPascal
{$mode objfpc}
|
|
{$h+}
|
|
|
|
Unit kernelioctl;
|
|
|
|
Interface
|
|
|
|
const
|
|
_IOC_NRBITS = 8;
|
|
_IOC_TYPEBITS = 8;
|
|
_IOC_SIZEBITS = 14;
|
|
_IOC_DIRBITS = 2;
|
|
_IOC_NRMASK = (1 shl _IOC_NRBITS) - 1;
|
|
_IOC_TYPEMASK = (1 shl _IOC_TYPEBITS) - 1;
|
|
_IOC_SIZEMASK = (1 shl _IOC_SIZEBITS) - 1;
|
|
_IOC_DIRMASK = (1 shl _IOC_DIRBITS) - 1;
|
|
_IOC_NRSHIFT = 0;
|
|
_IOC_TYPESHIFT = _IOC_NRSHIFT + _IOC_NRBITS;
|
|
_IOC_SIZESHIFT = _IOC_TYPESHIFT + _IOC_TYPEBITS;
|
|
_IOC_DIRSHIFT = _IOC_SIZESHIFT + _IOC_SIZEBITS;
|
|
_IOC_NONE = 0;
|
|
_IOC_WRITE = 1;
|
|
_IOC_READ = 2;
|
|
|
|
Function _IOC(dir, __type, nr, size: cardinal): cardinal;
|
|
Function _IOR(_type,nr,size : cardinal) : cardinal;
|
|
Function _IOW(_type,nr,size : cardinal) : cardinal;
|
|
Function _IOWR(_type,nr,size : cardinal) : cardinal;
|
|
Function _IOC_DIR(nr : cardinal) : cardinal;
|
|
Function _IOC_TYPE(nr : cardinal) : cardinal;
|
|
Function _IOC_NR(nr : cardinal) : cardinal;
|
|
Function _IOC_SIZE(nr : cardinal) : cardinal;
|
|
Function _IO(__type, nr: Cardinal): cardinal;
|
|
|
|
|
|
const
|
|
IOC_IN = _IOC_WRITE shl _IOC_DIRSHIFT;
|
|
IOC_OUT = _IOC_READ shl _IOC_DIRSHIFT;
|
|
IOC_INOUT = (_IOC_WRITE or _IOC_READ) shl _IOC_DIRSHIFT;
|
|
IOCSIZE_MASK = _IOC_SIZEMASK shl _IOC_SIZESHIFT;
|
|
IOCSIZE_SHIFT = _IOC_SIZESHIFT;
|
|
|
|
const
|
|
TCGETS = $5401;
|
|
TCSETS = $5402;
|
|
TCSETSW = $5403;
|
|
TCSETSF = $5404;
|
|
TCGETA = $5405;
|
|
TCSETA = $5406;
|
|
TCSETAW = $5407;
|
|
TCSETAF = $5408;
|
|
TCSBRK = $5409;
|
|
TCXONC = $540A;
|
|
TCFLSH = $540B;
|
|
TIOCEXCL = $540C;
|
|
TIOCNXCL = $540D;
|
|
TIOCSCTTY = $540E;
|
|
TIOCGPGRP = $540F;
|
|
TIOCSPGRP = $5410;
|
|
TIOCOUTQ = $5411;
|
|
TIOCSTI = $5412;
|
|
TIOCGWINSZ = $5413;
|
|
TIOCSWINSZ = $5414;
|
|
TIOCMGET = $5415;
|
|
TIOCMBIS = $5416;
|
|
TIOCMBIC = $5417;
|
|
TIOCMSET = $5418;
|
|
TIOCGSOFTCAR = $5419;
|
|
TIOCSSOFTCAR = $541A;
|
|
FIONREAD = $541B;
|
|
TIOCINQ = FIONREAD;
|
|
TIOCLINUX = $541C;
|
|
TIOCCONS = $541D;
|
|
TIOCGSERIAL = $541E;
|
|
TIOCSSERIAL = $541F;
|
|
TIOCPKT = $5420;
|
|
FIONBIO = $5421;
|
|
TIOCNOTTY = $5422;
|
|
TIOCSETD = $5423;
|
|
TIOCGETD = $5424;
|
|
TCSBRKP = $5425;
|
|
TIOCTTYGSTRUCT = $5426;
|
|
TIOCSBRK = $5427;
|
|
TIOCCBRK = $5428;
|
|
TIOCGSID = $5429;
|
|
|
|
Function TIOCGPTN : Cardinal;
|
|
Function TIOCSPTLCK : Cardinal;
|
|
Function TIOCGDEV : Cardinal;
|
|
|
|
const
|
|
FIONCLEX = $5450;
|
|
FIOCLEX = $5451;
|
|
FIOASYNC = $5452;
|
|
TIOCSERCONFIG = $5453;
|
|
TIOCSERGWILD = $5454;
|
|
TIOCSERSWILD = $5455;
|
|
TIOCGLCKTRMIOS = $5456;
|
|
TIOCSLCKTRMIOS = $5457;
|
|
TIOCSERGSTRUCT = $5458;
|
|
TIOCSERGETLSR = $5459;
|
|
TIOCSERGETMULTI = $545A;
|
|
TIOCSERSETMULTI = $545B;
|
|
TIOCMIWAIT = $545C;
|
|
TIOCGICOUNT = $545D;
|
|
TIOCGHAYESESP = $545E;
|
|
TIOCSHAYESESP = $545F;
|
|
TIOCPKT_DATA = 0;
|
|
TIOCPKT_FLUSHREAD = 1;
|
|
TIOCPKT_FLUSHWRITE = 2;
|
|
TIOCPKT_STOP = 4;
|
|
TIOCPKT_START = 8;
|
|
TIOCPKT_NOSTOP = 16;
|
|
TIOCPKT_DOSTOP = 32;
|
|
TIOCSER_TEMT = $01;
|
|
|
|
Implementation
|
|
|
|
Function _IOC(dir, __type, nr, size: cardinal): cardinal;
|
|
|
|
begin
|
|
Result:=(dir shl _IOC_DIRSHIFT) or (__type shl _IOC_TYPESHIFT) or
|
|
(nr shl _IOC_NRSHIFT) or (size shl _IOC_SIZESHIFT);
|
|
end;
|
|
|
|
|
|
Function _IO(__type, nr: Cardinal): cardinal;
|
|
begin
|
|
Result := _IOC(_IOC_NONE,__type,nr,0);
|
|
end;
|
|
|
|
|
|
Function _IOR(_type,nr,size : cardinal) : cardinal;
|
|
begin
|
|
_IOR:=_IOC(_IOC_READ,_type,nr,size);
|
|
end;
|
|
|
|
|
|
Function _IOW(_type,nr,size : cardinal) : cardinal;
|
|
begin
|
|
_IOW:=_IOC(_IOC_WRITE,_type,nr,size);
|
|
end;
|
|
|
|
|
|
Function _IOWR(_type,nr,size : cardinal) : cardinal;
|
|
begin
|
|
_IOWR:=_IOC(_IOC_READ or _IOC_WRITE,_type,nr,size);
|
|
end;
|
|
|
|
|
|
Function _IOC_DIR(nr : cardinal) : cardinal;
|
|
begin
|
|
_IOC_DIR:=(nr shr _IOC_DIRSHIFT) and _IOC_DIRMASK;
|
|
end;
|
|
|
|
|
|
Function _IOC_TYPE(nr : cardinal) : cardinal;
|
|
begin
|
|
_IOC_TYPE:=(nr shr _IOC_TYPESHIFT) and _IOC_TYPEMASK;
|
|
end;
|
|
|
|
|
|
Function _IOC_NR(nr : cardinal) : cardinal;
|
|
begin
|
|
_IOC_NR:=(nr shr _IOC_NRSHIFT) and _IOC_NRMASK;
|
|
end;
|
|
|
|
|
|
Function _IOC_SIZE(nr : cardinal) : cardinal;
|
|
begin
|
|
_IOC_SIZE:=(nr shr _IOC_SIZESHIFT) and _IOC_SIZEMASK;
|
|
end;
|
|
|
|
|
|
Function TIOCGPTN : cardinal;
|
|
begin
|
|
TIOCGPTN:=_IOR(ord('T'),$30,4);
|
|
end;
|
|
|
|
Function TIOCSPTLCK : cardinal;
|
|
|
|
begin
|
|
TIOCSPTLCK:=_IOW(ord('T'),$31,4);
|
|
end;
|
|
|
|
Function TIOCGDEV : cardinal;
|
|
|
|
begin
|
|
TIOCGDEV:=_IOR(ord('T'),$32,4);
|
|
end;
|
|
|
|
end.
|