: time-since-midnight ( timestamp -- duration )
dup midnight time- ;
+: since-1970 ( time -- timestamp )
+ unix-1970 time+ >local-time ;
+
: timeval>unix-time ( timeval -- timestamp )
[ timeval-sec seconds ] [ timeval-usec microseconds ] bi
- time+ unix-1970 time+ >local-time ;
+ time+ since-1970 ;
+
+: timespec>unix-time ( timeval -- timestamp )
+ [ timespec-sec seconds ] [ timespec-nsec nanoseconds ] bi
+ time+ since-1970 ;
M: timestamp sleep-until timestamp>millis sleep-until ;
"timeval" <c-object>
[ set-timeval-usec ] keep
[ set-timeval-sec ] keep ;
+
+C-STRUCT: timespec
+ { "time_t" "sec" }
+ { "long" "nsec" } ;
+
+: make-timespec ( ms -- timespec )
+ 1000 /mod 1000000 *
+ "timespec" <c-object>
+ [ set-timespec-nsec ] keep
+ [ set-timespec-sec ] keep ;
-
USING: kernel alien.syntax alien.c-types math ;
-
IN: unix.time
TYPEDEF: uint time_t
{ "long" "gmtoff" } ! Seconds: 0-59 (K&R says 0-61?)
{ "char*" "zone" } ;
-C-STRUCT: timespec
- { "time_t" "sec" }
- { "long" "nsec" } ;
-
-: make-timespec ( ms -- timespec )
- 1000 /mod 1000000 *
- "timespec" <c-object>
- [ set-timespec-nsec ] keep
- [ set-timespec-sec ] keep ;
-
FUNCTION: time_t time ( time_t* t ) ;
FUNCTION: tm* localtime ( time_t* clock ) ;
FUNCTION: int gettimeofday ( timespec* TP, void* TZP ) ;