- add sources.
[platform/framework/web/crosswalk.git] / src / tools / traceline / traceline / rdtsc.h
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef TRACELINE_RDTSC_H_
6 #define TRACELINE_RDTSC_H_
7
8 #include <windows.h>
9 #include <powrprof.h>
10
11 #include <map>
12
13 #include "logging.h"
14
15 class RDTSCNormalizer {
16  public:
17   RDTSCNormalizer() { }
18   ~RDTSCNormalizer() { }
19
20   void Start() {
21     LARGE_INTEGER freq, now;
22     if (QueryPerformanceFrequency(&freq) == 0) {
23       NOTREACHED("");
24     }
25     freq_ = freq.QuadPart;
26
27     if (QueryPerformanceCounter(&now) == 0) {
28       NOTREACHED("");
29     }
30     start_ = now.QuadPart;
31   }
32
33   // Calculate the time from start for a given processor.
34   double MsFromStart(void* procid, __int64 stamp) {
35     return (stamp - start_) / (freq_ / 1000.0);
36   }
37
38  private:
39   __int64 freq_;
40   __int64 start_;
41 };
42
43 #endif  // TRACELINE_RDTSC_H_