diff options
| author | sebres <sebres@users.sourceforge.net> | 2019-03-05 16:25:17 (GMT) |
|---|---|---|
| committer | sebres <sebres@users.sourceforge.net> | 2019-03-05 16:25:17 (GMT) |
| commit | bc27eb24301d103830c029cb4260e0338177e331 (patch) | |
| tree | 65e4c8ff44f60a54faf85fd5dc1940e88724a826 /unix/tclUnixTime.c | |
| parent | 809bbc79fb31d2381e7ec0f4c35fca0fe3db8998 (diff) | |
| parent | 2e2fdf481a1adc01e01df1b72add387325868bfd (diff) | |
| download | tcl-bc27eb24301d103830c029cb4260e0338177e331.zip tcl-bc27eb24301d103830c029cb4260e0338177e331.tar.gz tcl-bc27eb24301d103830c029cb4260e0338177e331.tar.bz2 | |
merge sebres-8-5-timerate (TIP#527 - New measurement facilities in TCL: New command timerate, performance test suite)
Diffstat (limited to 'unix/tclUnixTime.c')
| -rw-r--r-- | unix/tclUnixTime.c | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/unix/tclUnixTime.c b/unix/tclUnixTime.c index 11b0ecf..1b4ea15 100644 --- a/unix/tclUnixTime.c +++ b/unix/tclUnixTime.c @@ -87,6 +87,32 @@ TclpGetSeconds(void) /* *---------------------------------------------------------------------- * + * TclpGetMicroseconds -- + * + * This procedure returns the number of microseconds from the epoch. + * On most Unix systems the epoch is Midnight Jan 1, 1970 GMT. + * + * Results: + * Number of microseconds from the epoch. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +Tcl_WideInt +TclpGetMicroseconds(void) +{ + Tcl_Time time; + + tclGetTimeProcPtr(&time, tclTimeClientData); + return ((Tcl_WideInt)time.sec)*1000000 + time.usec; +} + +/* + *---------------------------------------------------------------------- + * * TclpGetClicks -- * * This procedure returns a value that represents the highest resolution @@ -219,6 +245,51 @@ TclpWideClicksToNanoseconds( return nsec; } + +/* + *---------------------------------------------------------------------- + * + * TclpWideClickInMicrosec -- + * + * This procedure return scale to convert click values from the + * TclpGetWideClicks native resolution to microsecond resolution + * and back. + * + * Results: + * 1 click in microseconds as double. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +double +TclpWideClickInMicrosec(void) +{ + if (tclGetTimeProcPtr != NativeGetTime) { + return 1.0; + } else { +#ifdef MAC_OSX_TCL + static int initialized = 0; + static double scale = 0.0; + + if (initialized) { + return scale; + } else { + mach_timebase_info_data_t tb; + + mach_timebase_info(&tb); + /* value of tb.numer / tb.denom = 1 click in nanoseconds */ + scale = ((double)tb.numer) / tb.denom / 1000; + initialized = 1; + return scale; + } +#else +#error Wide high-resolution clicks not implemented on this platform +#endif + } +} #endif /* TCL_WIDE_CLICKS */ /* |
