Jump to content

DosTmrQueryTime: Difference between revisions

From EDM2
Ak120 (talk | contribs)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
==Description==
Provides a snapshot of the time from the IRQ0 high resolution timer (Intel 8254). Queries the performance timer for a time value.
Provides a snapshot of the time from the IRQ0 high resolution timer (Intel 8254). / Queries the performance timer for a time value.


==Syntax==
==Syntax==
Line 9: Line 8:
A snapshot of the time from the IRQ0 high resolution timer.
A snapshot of the time from the IRQ0 high resolution timer.


It is a pointer, supplied by the calling application, to the following structure:  
It is a pointer, supplied by the calling application, to the following structure:
      typedef struct _QWORD {  
typedef struct _QWORD {  
           [[ULONG]] ulLo,
           [[ULONG]] ulLo,
           ULONG ulHi,
           ULONG ulHi,
       } QWORD;
       } QWORD;
      typedef QWORD *PQWORD;
typedef QWORD *PQWORD;


==Return Code==
==Return Code==
Line 26: Line 25:


==Example Source Code==
==Example Source Code==
Calling example:
<PRE>
#define INCL_DOSPROFILE
#include <os2.h>
PQWORD    pqwTmrTime;  /*  Time. */
APIRET    rc;          /*  Return Code. */
rc = DosTmrQueryTime(pqwTmrTime);
</PRE>
Use Example:
Use Example:
<PRE>
<PRE>
Line 41: Line 30:
   * Description: Display high resolution system time.
   * Description: Display high resolution system time.
   */
   */
 
  #define INCL_DOS
#define INCL_DOS
  #define INCL_DOSERRORS
#define INCL_DOSERRORS
 
  #include <os2.h>
#include <os2.h>
  #include <stdio.h>
#include <stdio.h>
 
  VOID  
VOID main() {  
  main()
  {  
     QWORD qwTime;
     QWORD qwTime;
     ULONG rc;
     ULONG rc;


          if ((rc = DosTmrQueryTime(&qwTime)) != NO_ERROR)
    if ((rc = DosTmrQueryTime(&qwTime)) != NO_ERROR)
                  printf("\nERROR (DosTmrQueryTime): %d\n", rc);
          printf("\nERROR (DosTmrQueryTime): %d\n", rc);
          else  
      else  
                  printf("Time = 0x %08lx %08lx\n",
          printf("Time = 0x %08lx %08lx\n", qwTime.ulHi, qwTime.ulLo);
                          qwTime.ulHi, qw
}
</PRE>
</PRE>



Latest revision as of 19:45, 5 February 2024

Provides a snapshot of the time from the IRQ0 high resolution timer (Intel 8254). Queries the performance timer for a time value.

Syntax

DosTmrQueryTime(pqwTmrTime);

Parameters

pqwTmrTime (PQWORD) - output
Time.

A snapshot of the time from the IRQ0 high resolution timer.

It is a pointer, supplied by the calling application, to the following structure:

typedef struct _QWORD { 
         ULONG ulLo,
         ULONG ulHi,
     } QWORD;
typedef QWORD *PQWORD;

Return Code

rc (APIRET) - returns

DosTmrQueryTime returns the following values:

  • 0 NO_ERROR
  • 87 ERROR_INVALID_PARAMETER
  • 53 ERROR_TMR_NO_DEVICE
  • 99 ERROR_DEVICE_IN_USE
  • 536 ERROR_TMR_INVALID_TIME

Example Source Code

Use Example:

 /*
  * Description: Display high resolution system time.
  */
 
 #define INCL_DOS
 #define INCL_DOSERRORS
 
 #include <os2.h>
 #include <stdio.h>
 
 VOID main() { 
    QWORD qwTime;
    ULONG rc;

    if ((rc = DosTmrQueryTime(&qwTime)) != NO_ERROR)
          printf("\nERROR (DosTmrQueryTime): %d\n", rc);
       else 
          printf("Time = 0x %08lx %08lx\n", qwTime.ulHi, qwTime.ulLo);
 }

Remarks

This API will fill the QWORD structure, supplied by the caller, with the 64-bit timer value such that :

  • pqwTime->ulHi = The most significant 32-bits of the timer value.
  • pqwTime->ulLo = The least significant 32-bits of the timer value.

The performance timer is a free running counter; it is initialized to 0 at boot time and thereafter increments. When it reaches its maximum value of (2¬64 - 1), it rolls over to 0 and continues incrementing. A process can time an event by subtracting the value of the timer at the start of the event from the value of the timer at the end of the event. Currently, ulTimerFreq = 1.19318 Mhz, for a timer resolution of about .838 microseconds. (See also DosTmrQueryFreq.)

Related Functions