implement monotonic clock on unix platforms

db4
Doug Coleman 2009-11-15 00:47:20 -06:00
parent 0af1b3a7d9
commit 6f38690050
5 changed files with 28 additions and 6 deletions

View File

@ -1,7 +1,12 @@
! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: system ;
USING: combinators system vocabs.loader ;
IN: monotonic-clock
HOOK: monotonic-count os ( -- n )
{
{ [ os unix? ] [ "monotonic-clock.unix" ] }
{ [ os windows? ] [ "monotonic-clock.windows" ] }
{ [ os macosx? ] [ "monotonic-clock.unix.macosx" ] }
} cond require

View File

@ -1,4 +0,0 @@
! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: ;
IN: monotonic-clock.unix.linux

View File

@ -1 +0,0 @@
unportable

View File

@ -0,0 +1,22 @@
! Copyright (C) 2009 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
USING: alien.c-types alien.syntax calendar.unix classes.struct
kernel monotonic-clock system unix unix.time unix.types ;
IN: monotonic-clock.unix
LIBRARY: librt
FUNCTION: int clock_settime ( clockid_t clock_id, timespec* tp ) ;
FUNCTION: int clock_gettime ( clockid_t clock_id, timespec* tp ) ;
FUNCTION: int clock_getres ( clockid_t clock_id, timespec* res ) ;
CONSTANT: CLOCK_REALTIME 0
CONSTANT: CLOCK_MONOTONIC 1
CONSTANT: CLOCK_PROCESS_CPUTIME_ID 2
CONSTANT: CLOCK_THREAD_CPUTIME_ID 3
CONSTANT: TIMER_ABSTIME 1
M: unix monotonic-count
CLOCK_MONOTONIC timespec <struct> [ clock_gettime io-error ] keep
timespec>nanoseconds ;