fpc/packages/base/libc/kernelioctl.pp
2005-02-14 17:13:06 +00:00

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.