mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 21:07:54 +02:00
194 lines
12 KiB
PHP
194 lines
12 KiB
PHP
{
|
|
This file is part of the Free Pascal run time library.
|
|
Copyright (c) 2001 by the Free Pascal development team
|
|
|
|
This file should become an alternative to the syscalls in due time,
|
|
to import the base calls from libc.
|
|
Be very careful though. Kernel types and libc types are often not the
|
|
same on Linux.
|
|
|
|
See the file COPYING.FPC, included in this distribution,
|
|
for details about the copyright.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
***********************************************************************}
|
|
|
|
{ var
|
|
Errno : cint; external clib name 'errno';}
|
|
|
|
{$if defined(aix) and not defined(FPC_IS_SYSTEM)}
|
|
{ in AIX, several UNIX routines are part of the "compatibility interface for
|
|
older Berkeley Software Distribution (BSD) system programs" }
|
|
{$linklib libbsd}
|
|
{$endif aix}
|
|
|
|
Type TGrpArr = Array [0..0] of TGid; { C style array workarounds}
|
|
pGrpArr = ^TGrpArr;
|
|
TFilDes = Array [0..1] of cInt;
|
|
pFilDes = ^TFilDes;
|
|
|
|
const
|
|
{$if (defined(linux) and defined(cpu32) and not defined(fs32bit)) or defined(aix)}
|
|
suffix64bit = '64';
|
|
darwinsuffix64bit = '';
|
|
{$elseif defined(darwin_new_iostructs) and (defined(cpui386) or defined(cpux86_64))}
|
|
suffix64bit = '';
|
|
darwinsuffix64bit = '$INODE64';
|
|
{$else}
|
|
suffix64bit = '';
|
|
darwinsuffix64bit = '';
|
|
{$endif}
|
|
|
|
function FPSigProcMask(how:cint;nset : psigset;oset : psigset):cint;cdecl; external clib name 'sigprocmask';
|
|
function FPSigProcMask(how:cint;const nset : sigset;var oset : sigset):cint;cdecl; external clib name 'sigprocmask';
|
|
Function FpSigPending (var nset : sigset): cInt; external clib name 'sigpending';
|
|
Function FpSigSuspend (constref sigmask : TSigSet): cInt; external clib name 'sigsuspend';
|
|
{$if not defined(darwin) and not defined(haiku) and not defined(beos)}
|
|
Function FpSigTimedWait (Constref sigset : TSigSet; info : Psiginfo; timeout:Ptimespec): cInt; cdecl; external clib name 'sigtimedwait';
|
|
{$endif}
|
|
Function FpUmask (cmask : TMode): TMode; cdecl; external clib name 'umask';
|
|
Function FpLink (existing : PAnsiChar; newone : PAnsiChar): cInt; cdecl; external clib name 'link';
|
|
Function FpMkfifo (path: PAnsiChar; mode: tmode): cint; cdecl; external clib name 'mkfifo';
|
|
Function FpChmod (path : PAnsiChar; Mode : TMode): cInt; cdecl; external clib name 'chmod';
|
|
Function FpChown (path : PAnsiChar; owner : TUid; group : TGid): cInt; cdecl; external clib name 'chown';
|
|
Function FPUtime(path:PAnsiChar;times:putimbuf):cint; cdecl; external clib name 'utime';
|
|
Function FPFUtimens(handle: cint;constref times: TTimespecArr):cint; cdecl; external clib name 'futimens';
|
|
Function FpPipe (var fildes : tfildes):cInt; cdecl;external clib name 'pipe';
|
|
function FpDup (oldd:cint):cint; cdecl; external clib name 'dup';
|
|
function FpDup2 (oldd:cint;newd:cint):cint; cdecl; external clib name 'dup2';
|
|
function FpTimes (var buffer : tms): TClock; cdecl; external clib name 'times';
|
|
|
|
Function FpAlarm (seconds : cuint) : cuint; cdecl;external clib name 'alarm';
|
|
Function FpPause : cInt; cdecl; external clib name 'pause';
|
|
Function FpSleep (seconds : cuint): cuint; external clib name 'sleep';
|
|
|
|
Function FpGetpid : TPid; cdecl;external clib name 'getpid';
|
|
Function FpGetppid : TPid;cdecl;external clib name 'getppid';
|
|
Function FpGetuid : TUid;cdecl;external clib name 'getuid';
|
|
Function FpGeteuid : TUid;cdecl;external clib name 'geteuid';
|
|
Function FpGetgid : TGid;cdecl;external clib name 'getgid';
|
|
Function FpGetegid : TGid;cdecl;external clib name 'getegid';
|
|
Function FpSetuid (uid : TUid): cInt;cdecl;external clib name 'setuid';
|
|
Function FpSetgid (gid : TGid): cInt;cdecl;external clib name 'setgid';
|
|
Function FpGetgroups (gidsetsize : cInt; var grouplist : tgrparr):cint; cdecl;external clib name 'getgroups';
|
|
Function FpGetpgrp : TPid; cdecl;external clib name 'getpgrp';
|
|
Function FpSetsid : TPid; cdecl;external clib name 'setsid';
|
|
Function FpGetsid (pid:TPid) : TPid; cdecl; external clib name 'getsid';
|
|
|
|
{ The libc version has "..." as third parameter -> wrap for }
|
|
{ interface compatibility with syscalls }
|
|
Function FpFcntl (fildes : cInt; cmd : cInt): cInt; {$ifdef FPC_IS_SYSTEM}forward;{$endif}
|
|
Function FpFcntl (fildes : cInt; cmd : cInt; arg :cInt): cInt; {$ifdef FPC_IS_SYSTEM}forward;{$endif}
|
|
Function FpFcntl (fildes : cInt; cmd : cInt; var arg : flock): cInt; {$ifdef FPC_IS_SYSTEM}forward;{$endif}
|
|
|
|
Function FpGetcwd (path:PAnsiChar; siz:TSize):PAnsiChar; cdecl; external clib name 'getcwd';
|
|
function FpFork : TPid; cdecl; external clib name 'fork';
|
|
function FpExecve (path : PAnsiChar; argv : PPAnsiChar; envp: PPAnsiChar): cint; cdecl; external clib name 'execve';
|
|
function FpExecv (path : PAnsiChar; argv : PPAnsiChar): cint; cdecl; external clib name 'execv';
|
|
function FpWaitpid (pid : TPid; stat_loc : pcint; options: cint): TPid; cdecl; external clib name 'waitpid';
|
|
Function FpWait (var stat_loc : cInt): TPid; cdecl; external clib name 'wait';
|
|
procedure FpExit (status : cint); cdecl; external clib name '_exit';
|
|
Function FpKill (pid : TPid; sig: cInt): cInt; cdecl; external clib name 'kill';
|
|
function FpUname (var name: utsname): cint; cdecl; external clib name 'uname';
|
|
function FpOpendir (dirname : PAnsiChar): pdir; cdecl; external clib name 'opendir'{$ifdef aix}+suffix64bit{$endif};
|
|
Function FpReaddir (var dirp : Dir) : pDirent;cdecl; external clib name 'readdir'+suffix64bit+darwinsuffix64bit;
|
|
Function FpClosedir (var dirp : Dir): cInt; cdecl; external clib name 'closedir'{$ifdef aix}+suffix64bit{$endif};
|
|
function FpChdir (path : PAnsiChar): cint; cdecl; external clib name 'chdir';
|
|
{ emulate the bunxovl version that automatically passes
|
|
638 as mode }
|
|
function FpOpen (path: PAnsiChar; flags : cint; mode: TMode):cint; {$ifdef FPC_IS_SYSTEM}forward;{$endif}
|
|
function FpMkdir (path : PAnsiChar; mode: TMode):cint; cdecl; external clib name 'mkdir';
|
|
function FpUnlink (path: PAnsiChar): cint; cdecl; external clib name 'unlink';
|
|
function FpRmdir (path : PAnsiChar): cint; cdecl; external clib name 'rmdir';
|
|
function FpRename (old : PAnsiChar; newpath: PAnsiChar): cint; cdecl;external clib name 'rename';
|
|
{$ifdef linux}
|
|
{$ifndef FPC_IS_SYSTEM}
|
|
{ those functions are macros on linux }
|
|
function FpFstat (fd : cint; var sb : stat): cint;inline;
|
|
Function fpLstat (path:PAnsiChar;Info:pstat):cint;inline;
|
|
function FpStat (path: PAnsiChar; var buf : stat): cint;inline;
|
|
{$endif FPC_IS_SYSTEM}
|
|
{$else linux}
|
|
function FpFstat (fd : cint; var sb : stat): cint; cdecl; external clib name 'fstat'+suffix64bit+darwinsuffix64bit;
|
|
Function fpLstat (path:PAnsiChar;Info:pstat):cint; cdecl; external clib name 'lstat'+suffix64bit+darwinsuffix64bit;
|
|
function FpStat (path: PAnsiChar; var buf : stat): cint; cdecl; external clib name 'stat'+suffix64bit+darwinsuffix64bit;
|
|
{$endif linux}
|
|
function FpAccess (pathname : PAnsiChar; amode : cint): cint; cdecl; external clib name 'access';
|
|
function FpClose (fd : cint): cint; cdecl; external clib name 'close';
|
|
|
|
function FpRead (fd: cint; buf: PAnsiChar; nbytes : TSize): TSSize; cdecl; external clib name 'read';
|
|
Function FpPRead (fd : cInt; buf: PAnsiChar; nbytes : TSize; offset:Toff): TSsize; cdecl; external clib name 'pread'+suffix64bit;
|
|
function FpReadV (fd: cint; const iov : piovec; iovcnt : cint):TSSize; cdecl; external clib name 'readv';
|
|
function FpWrite (fd: cint;buf:PAnsiChar; nbytes : TSize): TSSize; cdecl; external clib name 'write';
|
|
Function FpPWrite (fd : cInt; buf:PAnsiChar; nbytes : TSize; offset:Toff): TSSize; cdecl; external clib name 'pwrite'+suffix64bit;
|
|
function FpWriteV (fd: cint; const iov : piovec; iovcnt : cint):TSSize; cdecl; external clib name 'writev';
|
|
|
|
function FpLseek (fd : cint; offset : TOff; whence : cint): TOff; cdecl; external clib name 'lseek'+suffix64bit;
|
|
Function FpTime (var tloc : Time_t): Time_t; cdecl; external clib name 'time';
|
|
function FpFtruncate(fd : cint; flength : TOff): cint; cdecl; external clib name 'ftruncate'+suffix64bit;
|
|
Function FPSigaction (sig: cInt; act :pSigActionRec;oact:pSigActionRec):cint;cdecl; external clib name 'sigaction';
|
|
{$ifdef beos}
|
|
{$ifdef haiku}
|
|
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external 'network' name 'select';
|
|
Function FpPoll (fds: ppollfd; nfds: cuint; timeout: clong): cint; cdecl; external clib name 'poll';
|
|
{$else}
|
|
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external 'net' name 'select';
|
|
Function FpPoll (fds: ppollfd; nfds: cuint; timeout: clong): cint; cdecl; external clib name 'poll';
|
|
{$endif}
|
|
{$else}
|
|
Function FPSelect (N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cint; cdecl; external clib name 'select';
|
|
Function FpPoll (fds: ppollfd; nfds: cuint; timeout: clong): cint; cdecl; external clib name 'poll';
|
|
{$endif}
|
|
{ The libc version has "..." as third parameter -> wrap for }
|
|
{ interface compatibility with syscalls }
|
|
function FpIOCtl (Handle:cint;Ndx: TIOCtlRequest;Data: Pointer):cint; {$ifdef FPC_IS_SYSTEM}forward;{$endif}
|
|
{$ifdef solaris}
|
|
{$linklib md5}
|
|
{$linklib aio}
|
|
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep';
|
|
{$else solaris}
|
|
{$if not defined(beos) or defined(haiku)}
|
|
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep';
|
|
{$endif}
|
|
{$endif solaris}
|
|
Function fpSymlink (oldname,newname:PAnsiChar):cint; cdecl; external clib name 'symlink';
|
|
Function fpReadLink (name,linkname:PAnsiChar;maxlen:size_t):cint; cdecl; external clib name 'readlink';
|
|
|
|
function fpNice (N:cint):cint; cdecl; external clib name 'nice';
|
|
Function fpGetPriority (Which,Who:cint):cint; cdecl; external clib name 'getpriority';
|
|
Function fpSetPriority (Which,Who,What:cint):cint; cdecl; external clib name 'setpriority';
|
|
function fpmmap (addr:pointer;len:size_t;prot:cint;flags:cint;fd:cint;ofs:off_t):pointer; cdecl; external clib name 'mmap'+suffix64bit;
|
|
function fpmunmap (addr:pointer;len:size_t):cint; cdecl; external clib name 'munmap';
|
|
function fpmprotect(addr:pointer;len:size_t;prot:cint):cint; cdecl; external clib name 'mprotect';
|
|
|
|
function fpgetenv (name : PAnsiChar):PAnsiChar; cdecl; external clib name 'getenv';
|
|
{$ifndef beos}
|
|
function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; cdecl; external clib name 'settimeofday';
|
|
{$else}
|
|
// function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint;
|
|
{$endif}
|
|
|
|
function FpGetRLimit(resource : cInt; rlim : PRLimit) : cInt; cdecl; external clib name 'getrlimit';
|
|
function FpSetRLimit(resource : cInt; rlim : PRLimit) : cInt; cdecl; external clib name 'setrlimit';
|
|
|
|
{ not supported with syscalls }
|
|
function FpvFork : TPid; cdecl; external clib name 'vfork';
|
|
|
|
{ overloads not available in bunxh.inc }
|
|
function FpReaddir (dirp : pdir) : pdirent;cdecl; external clib name 'readdir'+suffix64bit;
|
|
function FpClosedir (dirp : pdir): cint; cdecl; external clib name 'closedir'{$ifdef aix}+suffix64bit{$endif};
|
|
function FpSigaction (sig: cint;var act : sigactionrec; var oact : sigactionrec): cint; cdecl; external clib name 'sigaction';
|
|
{$if not defined(darwin) and not defined(haiku) and not defined(beos)}
|
|
Function FpSigTimedWait (Const sigset : TSigSet; info : Psiginfo; var timeout:Ttimespec): cInt; cdecl; external clib name 'sigtimedwait';
|
|
{$endif}
|
|
function FpTime (tloc:ptime_t): time_t; cdecl; external clib name 'time';
|
|
|
|
{$if defined(linux)}
|
|
function FpSchedGetAffinity(pid : pid_t;cpusetsize : size_t;mask : pcpu_set_t) : cint; cdecl; external clib name 'sched_getaffinity';
|
|
{$endif}
|
|
Function FpPathconf(path : PAnsiChar;name : cint) : clong; cdecl; external clib name 'pathconf';
|
|
|