From c836607e2aec8f180affe315fa466635e037d98f Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Sun, 15 Nov 2009 00:47:20 -0600 Subject: [PATCH] implement monotonic clock on unix platforms --- extra/monotonic-clock/monotonic-clock.factor | 7 +++++- .../unix/{linux => }/authors.txt | 0 extra/monotonic-clock/unix/linux/linux.factor | 4 ---- extra/monotonic-clock/unix/linux/tags.txt | 1 - extra/monotonic-clock/unix/unix.factor | 22 +++++++++++++++++++ 5 files changed, 28 insertions(+), 6 deletions(-) rename extra/monotonic-clock/unix/{linux => }/authors.txt (100%) delete mode 100755 extra/monotonic-clock/unix/linux/linux.factor delete mode 100644 extra/monotonic-clock/unix/linux/tags.txt create mode 100644 extra/monotonic-clock/unix/unix.factor diff --git a/extra/monotonic-clock/monotonic-clock.factor b/extra/monotonic-clock/monotonic-clock.factor index 1dead952b2..8f277fbd34 100755 --- a/extra/monotonic-clock/monotonic-clock.factor +++ b/extra/monotonic-clock/monotonic-clock.factor @@ -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 diff --git a/extra/monotonic-clock/unix/linux/authors.txt b/extra/monotonic-clock/unix/authors.txt similarity index 100% rename from extra/monotonic-clock/unix/linux/authors.txt rename to extra/monotonic-clock/unix/authors.txt diff --git a/extra/monotonic-clock/unix/linux/linux.factor b/extra/monotonic-clock/unix/linux/linux.factor deleted file mode 100755 index 2ceb0c398b..0000000000 --- a/extra/monotonic-clock/unix/linux/linux.factor +++ /dev/null @@ -1,4 +0,0 @@ -! Copyright (C) 2009 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: ; -IN: monotonic-clock.unix.linux diff --git a/extra/monotonic-clock/unix/linux/tags.txt b/extra/monotonic-clock/unix/linux/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/extra/monotonic-clock/unix/linux/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/extra/monotonic-clock/unix/unix.factor b/extra/monotonic-clock/unix/unix.factor new file mode 100644 index 0000000000..d739735f42 --- /dev/null +++ b/extra/monotonic-clock/unix/unix.factor @@ -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 [ clock_gettime io-error ] keep + timespec>nanoseconds ;