mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-09 07:28:26 +02:00
* support for clock_gettime(), patch by Graeme.
git-svn-id: trunk@28599 -
This commit is contained in:
parent
4102061e8a
commit
316a50ff23
@ -207,6 +207,33 @@ function kernproc_getgenvalue(pid:pid_t;kernproc_variable:cint;var s:ansistring)
|
||||
function kernproc_getargs(pid:pid_t;var fn:ansistring):cint;
|
||||
function kernproc_getpath(pid:pid_t;var fn:ansistring):cint;
|
||||
|
||||
|
||||
// Taken from /usr/include/time.h
|
||||
const
|
||||
CLOCK_REALTIME = 0;
|
||||
CLOCK_VIRTUAL = 1;
|
||||
CLOCK_PROF = 2;
|
||||
CLOCK_MONOTONIC = 4;
|
||||
// FreeBSD specific
|
||||
CLOCK_UPTIME = 5;
|
||||
CLOCK_UPTIME_PRECISE = 7;
|
||||
CLOCK_UPTIME_FAST = 8;
|
||||
CLOCK_REALTIME_PRECISE = 9;
|
||||
CLOCK_REALTIME_FAST = 10;
|
||||
CLOCK_MONOTONIC_PRECISE = 11;
|
||||
CLOCK_MONOTONIC_FAST = 12;
|
||||
CLOCK_SECOND = 13;
|
||||
CLOCK_THREAD_CPUTIME_ID = 14;
|
||||
CLOCK_PROCESS_CPUTIME_ID = 15;
|
||||
|
||||
Type
|
||||
clockid_t = cint;
|
||||
|
||||
function clock_getres(clk_id: clockid_t; res: ptimespec): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'clock_getres'; {$ENDIF}
|
||||
function clock_gettime(clk_id: clockid_t; tp: ptimespec): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'clock_gettime'; {$ENDIF}
|
||||
function clock_settime(clk_id: clockid_t; tp: ptimespec): cint; {$ifdef FPC_USE_LIBC} cdecl; external name 'clock_settime'; {$ENDIF}
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
Uses Sysctl,
|
||||
@ -307,6 +334,22 @@ function fpgetfsstat(buf:pstatfs;bufsize:clong;flags:cint):cint;
|
||||
begin
|
||||
fpgetfsstat:=do_syscall(syscall_nr_getfsstat,TSysParam(buf),TSysParam(Bufsize),TSysParam(Flags));
|
||||
end;
|
||||
|
||||
function clock_getres(clk_id: clockid_t; res: ptimespec): cint;
|
||||
begin
|
||||
clock_getres := do_SysCall(syscall_nr_clock_getres,tsysparam(clk_id),tsysparam(res));
|
||||
end;
|
||||
|
||||
function clock_gettime(clk_id: clockid_t; tp: ptimespec): cint;
|
||||
begin
|
||||
clock_gettime := do_SysCall(syscall_nr_clock_gettime,tsysparam(clk_id),tsysparam(tp));
|
||||
end;
|
||||
|
||||
function clock_settime(clk_id: clockid_t; tp: ptimespec): cint;
|
||||
begin
|
||||
clock_settime := do_SysCall(syscall_nr_clock_settime,tsysparam(clk_id),tsysparam(tp));
|
||||
end;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
function kernproc_getgenvalue(pid:pid_t;kernproc_variable:cint;var s:ansistring):cint;
|
||||
|
@ -106,6 +106,9 @@ const
|
||||
syscall_nr_munmap = 73;
|
||||
syscall_nr_getsockopt = 118;
|
||||
syscall_nr_rfork = 251;
|
||||
syscall_nr_clock_gettime = 232;
|
||||
syscall_nr_clock_settime = 233;
|
||||
syscall_nr_clock_getres = 234;
|
||||
syscall_nr_nanosleep = 240;
|
||||
syscall_nr_getrusage = 117;
|
||||
syscall_nr_uuidgen = 392; { 5.x+}
|
||||
|
@ -42,9 +42,11 @@ interface
|
||||
{$define SYSUTILS_HAS_ANSISTR_ENVVAR_IMPL}
|
||||
|
||||
uses
|
||||
{$IFDEF LINUX}linux,{$ENDIF} Unix,errors,sysconst,Unixtype;
|
||||
{$IFDEF LINUX}linux,{$ENDIF}
|
||||
{$IFDEF FreeBSD}freebsd,{$ENDIF}
|
||||
Unix,errors,sysconst,Unixtype;
|
||||
|
||||
{$IFDEF LINUX}
|
||||
{$IF defined(LINUX) or defined(FreeBSD)}
|
||||
{$DEFINE HAVECLOCKGETTIME}
|
||||
{$ENDIF}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user