haiku: update baseunix unit, remove syscalls code, flock() and nanosleep() is actually supported on Haiku for a long time now, so lets use it

git-svn-id: trunk@40823 -
This commit is contained in:
Károly Balogh 2019-01-10 03:51:35 +00:00
parent 66dc27d6b6
commit e547dfa837
3 changed files with 17 additions and 87 deletions

View File

@ -25,39 +25,22 @@ Uses UnixType;
{$packrecords C} {$packrecords C}
{$ifndef FPC_USE_LIBC}
{$define FPC_USE_SYSCALL}
{$endif}
{$i errno.inc} { Error numbers } {$i errno.inc} { Error numbers }
{$i ostypes.inc} {$i ostypes.inc}
{$ifdef FPC_USE_LIBC} const
const clib = 'root'; clib = 'root';
const netlib = 'network'; netlib = 'network';
{$i oscdeclh.inc}
{$ELSE}
{$i bunxh.inc} { Functions}
{$ENDIF}
function fpgeterrno:longint; {$i oscdeclh.inc}
procedure fpseterrno(err:longint);
{$ifndef ver1_0} function fpgeterrno:longint; external name 'FPC_SYS_GETERRNO';
property errno : cint read fpgeterrno write fpseterrno; procedure fpseterrno(err:longint); external name 'FPC_SYS_SETERRNO';
{$endif} property errno : cint read fpgeterrno write fpseterrno;
{$i bunxovlh.inc} {$i bunxovlh.inc}
{$ifdef FPC_USE_LIBC}
{$ifdef beos}
function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint;
Function fpFlock (var fd : text; mode : longint) : cint;
Function fpFlock (var fd : File; mode : longint) : cint;
Function fpFlock (fd, mode : longint) : cint;
Function FpNanoSleep (req : ptimespec;rem : ptimespec):cint;
{$endif}
{$endif}
{$i genfunch.inc} {$i genfunch.inc}
@ -90,70 +73,18 @@ Uses Sysctl;
{$I gensigset.inc} // general sigset funcs implementation. {$I gensigset.inc} // general sigset funcs implementation.
{$I genfdset.inc} // general fdset funcs. {$I genfdset.inc} // general fdset funcs.
{$ifdef FPC_USE_LIBC} {$i oscdecl.inc} // implementation of wrappers in oscdeclh.inc
{$i oscdecl.inc} // implementation of wrappers in oscdeclh.inc
{$else}
{$i syscallh.inc} // do_syscall declarations themselves
{$i sysnr.inc} // syscall numbers.
{$i bsyscall.inc} // cpu specific syscalls
{$i bunxsysc.inc} // syscalls in system unit.
// {$i settimeo.inc}
{$endif}
{$i settimeo.inc}
{$i osmacro.inc} { macro implenenations } {$i osmacro.inc} { macro implenenations }
{$i bunxovl.inc} { redefs and overloads implementation } {$i bunxovl.inc} { redefs and overloads implementation }
{$ifndef ver1_0}
function fpgeterrno:longint; external name 'FPC_SYS_GETERRNO';
procedure fpseterrno(err:longint); external name 'FPC_SYS_SETERRNO';
{$else}
// workaround for 1.0.10 bugs.
function intgeterrno:longint; external name 'FPC_SYS_GETERRNO'; function stime(t: ptime_t): cint; cdecl; external clib name 'stime';
procedure intseterrno(err:longint); external name 'FPC_SYS_SETERRNO';
function fpgeterrno:longint;
begin
fpgeterrno:=intgeterrno;
end;
procedure fpseterrno(err:longint);
begin
intseterrno(err);
end;
{$endif}
function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint; function fpsettimeofday(tp:ptimeval;tzp:ptimezone):cint;
begin begin
fpsettimeofday := settimeofday(tp, tzp); fpsettimeofday:=stime(@tp^.tv_sec);
end; end;
Function fpFlock (var fd : File; mode : longint) : cint;
begin
{$warning TODO BeOS fpFlock implementation}
end;
Function fpFlock (var fd : Text; mode : longint) : cint;
begin
{$warning TODO BeOS fpFlock implementation}
end;
Function fpFlock (fd, mode : longint) : cint;
begin
{$warning TODO BeOS fpFlock implementation}
end;
function snooze(microseconds : bigtime_t) : status_t; cdecl; external 'root' name 'snooze';
Function FpNanoSleep (req : ptimespec;rem : ptimespec):cint;
begin
case snooze((req^.tv_nsec div 1000) + (req^.tv_sec * 1000 * 1000)) of
B_OK : FpNanoSleep := 0;
B_INTERRUPTED : FpNanoSleep := - 1;
else
FpNanoSleep := - 1;
end;
end;
end. end.

View File

@ -144,9 +144,8 @@ const
{$linklib aio} {$linklib aio}
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep'; Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external 'rt' name 'nanosleep';
{$else solaris} {$else solaris}
{$ifndef beos} {$if not defined(beos) or defined(haiku)}
Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep'; Function FPnanosleep (const rqtp: ptimespec; rmtp: ptimespec): cint; cdecl; external clib name 'nanosleep';
{$else}
{$endif} {$endif}
{$endif solaris} {$endif solaris}
Function fpSymlink (oldname,newname:pchar):cint; cdecl; external clib name 'symlink'; Function fpSymlink (oldname,newname:pchar):cint; cdecl; external clib name 'symlink';

View File

@ -18,7 +18,7 @@ type filedesarray=array[0..1] of cint;
{$if defined(solaris) or defined(aix)} {$if defined(solaris) or defined(aix)}
Function fpFlock (fd,mode : longint) : cint;{$ifdef IN_SYSTEM}forward;{$endif IN_SYSTEM} Function fpFlock (fd,mode : longint) : cint;{$ifdef IN_SYSTEM}forward;{$endif IN_SYSTEM}
{$else solaris or aix} {$else solaris or aix}
{$ifndef beos} {$if not defined(beos) or defined(haiku)}
Function fpFlock (fd,mode : longint) : cint; cdecl; external clib name 'flock'; Function fpFlock (fd,mode : longint) : cint; cdecl; external clib name 'flock';
{$endif beos} {$endif beos}
{$endif solaris or aix} {$endif solaris or aix}