* support for clock_gettime(), patch by Graeme.

git-svn-id: trunk@28599 -
This commit is contained in:
marco 2014-09-05 13:01:04 +00:00
parent 4102061e8a
commit 316a50ff23
3 changed files with 50 additions and 2 deletions

View File

@ -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;

View File

@ -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+}

View File

@ -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}