]> gitweb.factorcode.org Git - factor.git/commitdiff
implement monotonic clock on unix platforms
authorDoug Coleman <doug.coleman@gmail.com>
Sun, 15 Nov 2009 06:47:20 +0000 (00:47 -0600)
committerDoug Coleman <doug.coleman@gmail.com>
Sun, 15 Nov 2009 06:47:20 +0000 (00:47 -0600)
extra/monotonic-clock/monotonic-clock.factor
extra/monotonic-clock/unix/authors.txt [new file with mode: 0644]
extra/monotonic-clock/unix/linux/authors.txt [deleted file]
extra/monotonic-clock/unix/linux/linux.factor [deleted file]
extra/monotonic-clock/unix/linux/tags.txt [deleted file]
extra/monotonic-clock/unix/unix.factor [new file with mode: 0644]

index 1dead952b21d42f0cda3d11fafbc84c5c6dee4e0..8f277fbd34f7f0f2a6dbaa24db670411b5f124d5 100755 (executable)
@@ -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/authors.txt b/extra/monotonic-clock/unix/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/extra/monotonic-clock/unix/linux/authors.txt b/extra/monotonic-clock/unix/linux/authors.txt
deleted file mode 100644 (file)
index 7c1b2f2..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Doug Coleman
diff --git a/extra/monotonic-clock/unix/linux/linux.factor b/extra/monotonic-clock/unix/linux/linux.factor
deleted file mode 100755 (executable)
index 2ceb0c3..0000000
+++ /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 (file)
index 6bf6830..0000000
+++ /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 (file)
index 0000000..d739735
--- /dev/null
@@ -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 ;