lazarus/components/debuggerintf/ideminilibc.pas

82 lines
2.2 KiB
ObjectPascal

{
This unit contains all access functions to libc (unix like OS like
Linux, Mac OS X, BSD), which are needed by the IDE, but are not provided
by FPC units SysUtils, Unix and BaseUnix.
Before adding stuff here always check if fpc units Unix or BaseUnix already
contains corresponding functions.
Always use types from the ctypes unit.
}
unit IDEMiniLibC;
{$IFDEF linux} {$DEFINE DBG_ENABLE_TERMINAL} {$ENDIF}
{$mode objfpc}{$H+}
{$packrecords c}
interface
uses
ctypes
{$IFDEF DBG_ENABLE_TERMINAL}
, BaseUnix
{$ENDIF}
//,libc
;
const
clib = 'c';
InvalHandle = -1;
ICANON = $0000002;
ECHO = $0000008;
VMIN = 6;
VTIME = 5;
TCSANOW = 0;
F_DUPFD = 0;
F_GETFD = 1;
F_SETFD = 2;
F_GETFL = 3;
F_SETFL = 4;
{$IFDEF DBG_ENABLE_TERMINAL}
O_NONBLOCK = BaseUnix.O_NONBLOCK;
{$ENDIF}
EINTR = 4;
NCCS = 32;
type
error_t = cint;
tcflag_t = cuint;
cc_t = cchar;
speed_t = cuint;
size_t = cuint;
ssize_t = cint;
Ptermios = ^termios;
termios = record
c_iflag : tcflag_t;
c_oflag : tcflag_t;
c_cflag : tcflag_t;
c_lflag : tcflag_t;
c_line : cc_t;
c_cc : array[0..(NCCS)-1] of cc_t;
c_ispeed : speed_t;
c_ospeed : speed_t;
end;
function tcgetattr(__fd:cint; __termios_p: Ptermios):cint;cdecl;external clib name 'tcgetattr';
function tcsetattr(__fd:cint; __optional_actions:cint; __termios_p: Ptermios):cint;cdecl;external clib name 'tcsetattr';
function __read(Handle: cint; var Buffer; Count: size_t): ssize_t; cdecl;external clib name 'read';
function __write(Handle: cint; const Buffer; Count: size_t): ssize_t; cdecl;external clib name 'write';
function __close(Handle: cint): cint; cdecl;external clib name 'close';
function getpt:cint;cdecl;external clib name 'getpt';
function posix_openpt(oflag: cint):cint;cdecl;external clib name 'posix_openpt';
function grantpt(__fd:cint):cint;cdecl;external clib name 'grantpt';
function unlockpt(__fd:cint):cint;cdecl;external clib name 'unlockpt';
function ptsname_r(__fd:cint; __buf:Pchar; __buflen:size_t):cint;cdecl;external clib name 'ptsname_r';
function fcntl(Handle: cint; Command: cint; Arg: clong): cint; cdecl;external clib name 'fcntl';
implementation
end.