[25] | 1 | '\" |
---|
| 2 | '\" Copyright (c) 2001 by Kevin B. Kenny <kennykb@acm.org>. |
---|
| 3 | '\" |
---|
| 4 | '\" See the file "license.terms" for information on usage and redistribution |
---|
| 5 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
---|
| 6 | '\" |
---|
| 7 | '\" RCS: @(#) $Id$ |
---|
| 8 | '\" |
---|
| 9 | .so man.macros |
---|
| 10 | .TH Tcl_GetTime 3 8.4 Tcl "Tcl Library Procedures" |
---|
| 11 | .BS |
---|
| 12 | .SH NAME |
---|
| 13 | Tcl_GetTime, Tcl_SetTimeProc, Tcl_QueryTimeProc \- get date and time |
---|
| 14 | .SH SYNOPSIS |
---|
| 15 | .nf |
---|
| 16 | \fB#include <tcl.h>\fR |
---|
| 17 | .sp |
---|
| 18 | \fBTcl_GetTime\fR(\fItimePtr\fR) |
---|
| 19 | .sp |
---|
| 20 | \fBTcl_SetTimeProc\fR(\fIgetProc, scaleProc, clientData\fR) |
---|
| 21 | .sp |
---|
| 22 | \fBTcl_QueryTimeProc\fR(\fIgetProcPtr, scaleProcPtr, clientDataPtr\fR) |
---|
| 23 | .SH ARGUMENTS |
---|
| 24 | .AS "Tcl_Time *" timePtr out |
---|
| 25 | .AP "Tcl_Time *" timePtr out |
---|
| 26 | Points to memory in which to store the date and time information. |
---|
| 27 | .AS "Tcl_GetTimeProc *" getProc in |
---|
| 28 | .AP "Tcl_GetTimeProc *" getProc in |
---|
| 29 | Pointer to handler function replacing \fBTcl_GetTime\fR's access to the OS. |
---|
| 30 | .AS "Tcl_ScaleTimeProc *" scaleProc in |
---|
| 31 | .AP "Tcl_ScaleTimeProc *" scaleProc in |
---|
| 32 | Pointer to handler function for the conversion of time delays in the |
---|
| 33 | virtual domain to real-time. |
---|
| 34 | .AS "ClientData *" clientData in |
---|
| 35 | .AP "ClientData *" clientData in |
---|
| 36 | Value passed through to the two handler functions. |
---|
| 37 | .AS "Tcl_GetTimeProc **" getProcPtr inout |
---|
| 38 | .AP "Tcl_GetTimeProc **" getProcPtr inout |
---|
| 39 | Pointer to place the currently registered get handler function into. |
---|
| 40 | .AS "Tcl_ScaleTimeProc **" scaleProcPtr inout |
---|
| 41 | .AP "Tcl_ScaleTimeProc **" scaleProcPtr inout |
---|
| 42 | Pointer to place the currently registered scale handler function into. |
---|
| 43 | .AS "ClientData **" clientDataPtr inout |
---|
| 44 | .AP "ClientData **" clientDataPtr inout |
---|
| 45 | Pointer to place the currently registered pass-through value into. |
---|
| 46 | .BE |
---|
| 47 | .SH DESCRIPTION |
---|
| 48 | .PP |
---|
| 49 | The \fBTcl_GetTime\fR function retrieves the current time as a |
---|
| 50 | \fITcl_Time\fR structure in memory the caller provides. This |
---|
| 51 | structure has the following definition: |
---|
| 52 | .CS |
---|
| 53 | typedef struct Tcl_Time { |
---|
| 54 | long sec; |
---|
| 55 | long usec; |
---|
| 56 | } Tcl_Time; |
---|
| 57 | .CE |
---|
| 58 | .PP |
---|
| 59 | On return, the \fIsec\fR member of the structure is filled in with the |
---|
| 60 | number of seconds that have elapsed since the \fIepoch:\fR the epoch |
---|
| 61 | is the point in time of 00:00 UTC, 1 January 1970. This number does |
---|
| 62 | \fInot\fR count leap seconds \- an interval of one day advances it by |
---|
| 63 | 86400 seconds regardless of whether a leap second has been inserted. |
---|
| 64 | .PP |
---|
| 65 | The \fIusec\fR member of the structure is filled in with the number of |
---|
| 66 | microseconds that have elapsed since the start of the second |
---|
| 67 | designated by \fIsec\fR. The Tcl library makes every effort to keep |
---|
| 68 | this number as precise as possible, subject to the limitations of the |
---|
| 69 | computer system. On multiprocessor variants of Windows, this number |
---|
| 70 | may be limited to the 10- or 20-ms granularity of the system clock. |
---|
| 71 | (On single-processor Windows systems, the \fIusec\fR field is derived |
---|
| 72 | from a performance counter and is highly precise.) |
---|
| 73 | .PP |
---|
| 74 | The \fBTcl_SetTime\fR function registers two related handler functions |
---|
| 75 | with the core. The first handler function is a replacement for |
---|
| 76 | \fBTcl_GetTime\fR, or rather the OS access made by |
---|
| 77 | \fBTcl_GetTime\fR. The other handler function is used by the Tcl |
---|
| 78 | notifier to convert wait/block times from the virtual domain into real |
---|
| 79 | time. |
---|
| 80 | .PP |
---|
| 81 | The \fBTcl_QueryTime\fR function returns the currently registered |
---|
| 82 | handler functions. If no external handlers were set then this will |
---|
| 83 | return the standard handlers accessing and processing the native time |
---|
| 84 | of the OS. The arguments to the function are allowed to be NULL; and |
---|
| 85 | any argument which is NULL is ignored and not set. |
---|
| 86 | .PP |
---|
| 87 | Any handler pair specified has to return data which is consistent |
---|
| 88 | between them. In other words, setting one handler of the pair to |
---|
| 89 | something assuming a 10-times slowdown, and the other handler of the |
---|
| 90 | pair to something assuming a two-times slowdown is wrong and not |
---|
| 91 | allowed. |
---|
| 92 | .PP |
---|
| 93 | The set handler functions are allowed to run the delivered time |
---|
| 94 | backwards, however this should be avoided. We have to allow it as the |
---|
| 95 | native time can run backwards as the user can fiddle with the system |
---|
| 96 | time one way or other. Note that the insertion of the hooks will not |
---|
| 97 | change the behaviour of the Tcl core with regard to this situation, |
---|
| 98 | i.e. the existing behaviour is retained. |
---|
| 99 | .SH "SEE ALSO" |
---|
| 100 | clock |
---|
| 101 | .SH KEYWORDS |
---|
| 102 | date, time |
---|