source: trunk/src/win32k/test/PrfTiming.h@ 10367

Last change on this file since 10367 was 10056, checked in by bird, 22 years ago

Initial coding / fixup.

File size: 4.5 KB
Line 
1/* $Id: PrfTiming.h,v 1.1 2003-05-01 11:20:51 bird Exp $
2 *
3 * Common timing code.
4 *
5 * Copyright (c) 2001-2003 knut st. osmundsen (bird@anduin.net)
6 *
7 * GPL
8 *
9 */
10
11#include <stdio.h>
12#if !defined(__WINNT__)
13#include <sys/time.h>
14#endif
15#ifndef __NOTPC__
16#include <process.h>
17#endif
18
19#ifdef __OS2__
20#define INCL_DOSPROFILE
21#include <os2.h>
22
23long double gettime(void)
24{
25 QWORD qw;
26 DosTmrQueryTime(&qw);
27 return (long double)qw.ulHi * (4294967296.00) + qw.ulLo;
28}
29
30unsigned getHz(void)
31{
32 ULONG ul = -1;
33 DosTmrQueryFreq(&ul);
34 return ul;
35}
36
37void printSystemInfo(void)
38{
39}
40
41#elif defined(__WINNT__)
42#include <windows.h>
43/*
44 * Windows
45 */
46unsigned long __stdcall GetTickCount(void);
47
48long double gettime(void)
49{
50 //return (long double)GetTickCount();
51 LARGE_INTEGER ullCounter;
52 ullCounter.QuadPart = 0;
53 QueryPerformanceCounter(&ullCounter);
54 return (long double)ullCounter.QuadPart;
55}
56
57unsigned getHz(void)
58{
59 //return 1000;
60 LARGE_INTEGER ullFrequency;
61 ullFrequency.QuadPart = 0;
62 QueryPerformanceFrequency(&ullFrequency);
63 return (unsigned)ullFrequency.QuadPart;
64}
65
66void printSystemInfo(void)
67{
68 LONG lrc;
69 SYSTEM_INFO si;
70 HKEY hProcessor0;
71 char szMhz[16];
72 szMhz[0] = '\0';
73
74 lrc = RegOpenKey(HKEY_LOCAL_MACHINE,
75 "HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0",
76 &hProcessor0);
77 if (!lrc)
78 {
79 LONG cchMhz = sizeof(szMhz);
80 DWORD iKey;
81 CHAR szValueName[256];
82 DWORD cchValueName = sizeof(szValueName);
83 DWORD dwType;
84 BYTE abData[256];
85 DWORD cbData;
86
87 iKey = 0;
88 szMhz[0] = '\0';
89 while ((lrc = RegEnumValue(hProcessor0,
90 iKey,
91 szValueName,
92 &cchValueName,
93 NULL,
94 &dwType,
95 &abData,
96 &cbData)) == 0
97 || lrc == ERROR_MORE_DATA)
98 {
99 switch (dwType)
100 {
101 case REG_SZ:
102 case REG_EXPAND_SZ:
103 /*
104 printf("%-24s = type: %1x namesize: %2d data size: %3d bytes\n %s\n",
105 szValueName, dwType, cchValueName, cbData, &abData[0]);
106 */
107 break;
108
109 default:
110 {
111 /*
112 int i,j;
113 printf("%-24s = type: %1x namesize: %2d data size: %3d bytes\n",
114 szValueName, dwType, cchValueName, cbData);
115 for (i = 0; i < cbData; i += 16)
116 {
117 printf(" %04x ", i);
118 for (j = 0; j < 16; j++)
119 {
120 if (j + i < cbData)
121 printf(j == 8 ? "- %02x " : "%02x ",
122 (BYTE)abData[i+j]);
123 else
124 printf(j == 8 ? " " : " ");
125 }
126 putc(' ', stdout);
127 for (j = 0; j < 16; j++)
128 {
129 if (j+i < cbData)
130 putc(isprint(abData[j]) ? abData[j] : '.', stdout);
131 else
132 putc(' ', stdout);
133 }
134 putc('\n', stdout);
135 }
136 */
137 if ( !szMhz[0]
138 && stricmp(szValueName, "~MHz") == 0
139 && dwType == REG_DWORD
140 && cbData == sizeof(DWORD))
141 sprintf(szMhz, "%d", *(PDWORD)&abData[0]);
142 }
143 }
144
145 /* next */
146 iKey++;
147 dwType = 0;
148 cchValueName = sizeof(szValueName);
149 szValueName[0] = '\0';
150 }
151 RegCloseKey(hProcessor0);
152 }
153
154 GetSystemInfo(&si);
155 printf(" %d %d CPUs %s Mhz\n",
156 si.dwNumberOfProcessors,
157 si.dwProcessorType,
158 szMhz
159 );
160}
161
162#else
163
164long double gettime(void)
165{
166 struct timeval tp;
167 long sec = 0L;
168
169 if (gettimeofday(&tp, NULL))
170 return -1;
171 return tp.tv_usec / 1000000.00 + tp.tv_sec;
172}
173
174unsigned getHz(void)
175{
176 return 1;//000000;
177}
178
179void printSystemInfo(void)
180{
181}
182
183#endif
184
Note: See TracBrowser for help on using the repository browser.