diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /sp/src/public/tier0/PMELib.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'sp/src/public/tier0/PMELib.h')
| -rw-r--r-- | sp/src/public/tier0/PMELib.h | 382 |
1 files changed, 191 insertions, 191 deletions
diff --git a/sp/src/public/tier0/PMELib.h b/sp/src/public/tier0/PMELib.h index 2ad59145..5eeb63cf 100644 --- a/sp/src/public/tier0/PMELib.h +++ b/sp/src/public/tier0/PMELib.h @@ -1,192 +1,192 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-#ifndef PMELIB_H
-#define PMELIB_H
-
-#include "Windows.h"
-#include "tier0/platform.h"
-
-// Get rid of a bunch of STL warnings!
-#pragma warning( push, 3 )
-#pragma warning( disable : 4018 )
-
-#define VERSION "1.0.2"
-
-// uncomment this list to add some runtime checks
-//#define PME_DEBUG
-
-#include "tier0/valve_off.h"
-#include <string>
-#include "tier0/valve_on.h"
-
-using namespace std;
-
-// RDTSC Instruction macro
-#define RDTSC(var) var = __rdtsc()
-
-// RDPMC Instruction macro
-#define RDPMC(counter, var) \
-_asm mov ecx, counter \
-_asm RDPMC \
-_asm mov DWORD PTR var,eax \
-_asm mov DWORD PTR var+4,edx
-
-// RDPMC Instruction macro, for performance counter 1 (ecx = 1)
-#define RDPMC0(var) \
-_asm mov ecx, 0 \
-_asm RDPMC \
-_asm mov DWORD PTR var,eax \
-_asm mov DWORD PTR var+4,edx
-
-#define RDPMC1(var) \
-_asm mov ecx, 1 \
-_asm RDPMC \
-_asm mov DWORD PTR var,eax \
-_asm mov DWORD PTR var+4,edx
-
-#define EVENT_TYPE(mode) EventType##mode
-#define EVENT_MASK(mode) EventMask##mode
-
-#include "ia32detect.h"
-
-enum ProcessPriority
-{
- ProcessPriorityNormal,
- ProcessPriorityHigh,
-};
-
-enum PrivilegeCapture
-{
- OS_Only, // ring 0, kernel level
- USR_Only, // app level
- OS_and_USR, // all levels
-};
-
-enum CompareMethod
-{
- CompareGreater, //
- CompareLessEqual, //
-};
-
-enum EdgeState
-{
- RisingEdgeDisabled, //
- RisingEdgeEnabled, //
-};
-
-enum CompareState
-{
- CompareDisable, //
- CompareEnable, //
-};
-
-// Singletion Class
-class PME : public ia32detect
-{
-public:
-//private:
-
- static PME* _singleton;
-
- HANDLE hFile;
- bool bDriverOpen;
- double m_CPUClockSpeed;
-
- //ia32detect detect;
- HRESULT Init();
- HRESULT Close();
-
-protected:
-
- PME()
- {
- hFile = NULL;
- bDriverOpen = FALSE;
- m_CPUClockSpeed = 0;
- Init();
- }
-
-public:
-
- static PME* Instance(); // gives back a real object
-
- ~PME()
- {
- Close();
- }
-
- double GetCPUClockSpeedSlow( void );
- double GetCPUClockSpeedFast( void );
-
- HRESULT SelectP5P6PerformanceEvent( uint32 dw_event, uint32 dw_counter, bool b_user, bool b_kernel );
-
- HRESULT ReadMSR( uint32 dw_reg, int64 * pi64_value );
- HRESULT ReadMSR( uint32 dw_reg, uint64 * pi64_value );
-
- HRESULT WriteMSR( uint32 dw_reg, const int64 & i64_value );
- HRESULT WriteMSR( uint32 dw_reg, const uint64 & i64_value );
-
- void SetProcessPriority( ProcessPriority priority )
- {
- switch( priority )
- {
- case ProcessPriorityNormal:
- {
- SetPriorityClass (GetCurrentProcess(),NORMAL_PRIORITY_CLASS);
- SetThreadPriority (GetCurrentThread(),THREAD_PRIORITY_NORMAL);
- break;
- }
- case ProcessPriorityHigh:
- {
- SetPriorityClass (GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
- SetThreadPriority (GetCurrentThread(),THREAD_PRIORITY_HIGHEST);
- break;
- }
- }
- }
-
- //---------------------------------------------------------------------------
- // Return the family of the processor
- //---------------------------------------------------------------------------
- CPUVendor GetVendor(void)
- {
- return vendor;
- }
-
- int GetProcessorFamily(void)
- {
- return version.Family;
- }
-
-#ifdef DBGFLAG_VALIDATE
- void Validate( CValidator &validator, tchar *pchName ); // Validate our internal structures
-#endif // DBGFLAG_VALIDATE
-
-};
-
-#include "P5P6PerformanceCounters.h"
-#include "P4PerformanceCounters.h"
-#include "K8PerformanceCounters.h"
-
-enum PerfErrors
-{
- E_UNKNOWN_CPU_VENDOR = -1,
- E_BAD_COUNTER = -2,
- E_UNKNOWN_CPU = -3,
- E_CANT_OPEN_DRIVER = -4,
- E_DRIVER_ALREADY_OPEN = -5,
- E_DRIVER_NOT_OPEN = -6,
- E_DISABLED = -7,
- E_BAD_DATA = -8,
- E_CANT_CLOSE = -9,
- E_ILLEGAL_OPERATION = -10,
-};
-
-#pragma warning( pop )
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +#ifndef PMELIB_H +#define PMELIB_H + +#include "Windows.h" +#include "tier0/platform.h" + +// Get rid of a bunch of STL warnings! +#pragma warning( push, 3 ) +#pragma warning( disable : 4018 ) + +#define VERSION "1.0.2" + +// uncomment this list to add some runtime checks +//#define PME_DEBUG + +#include "tier0/valve_off.h" +#include <string> +#include "tier0/valve_on.h" + +using namespace std; + +// RDTSC Instruction macro +#define RDTSC(var) var = __rdtsc() + +// RDPMC Instruction macro +#define RDPMC(counter, var) \ +_asm mov ecx, counter \ +_asm RDPMC \ +_asm mov DWORD PTR var,eax \ +_asm mov DWORD PTR var+4,edx + +// RDPMC Instruction macro, for performance counter 1 (ecx = 1) +#define RDPMC0(var) \ +_asm mov ecx, 0 \ +_asm RDPMC \ +_asm mov DWORD PTR var,eax \ +_asm mov DWORD PTR var+4,edx + +#define RDPMC1(var) \ +_asm mov ecx, 1 \ +_asm RDPMC \ +_asm mov DWORD PTR var,eax \ +_asm mov DWORD PTR var+4,edx + +#define EVENT_TYPE(mode) EventType##mode +#define EVENT_MASK(mode) EventMask##mode + +#include "ia32detect.h" + +enum ProcessPriority +{ + ProcessPriorityNormal, + ProcessPriorityHigh, +}; + +enum PrivilegeCapture +{ + OS_Only, // ring 0, kernel level + USR_Only, // app level + OS_and_USR, // all levels +}; + +enum CompareMethod +{ + CompareGreater, // + CompareLessEqual, // +}; + +enum EdgeState +{ + RisingEdgeDisabled, // + RisingEdgeEnabled, // +}; + +enum CompareState +{ + CompareDisable, // + CompareEnable, // +}; + +// Singletion Class +class PME : public ia32detect +{ +public: +//private: + + static PME* _singleton; + + HANDLE hFile; + bool bDriverOpen; + double m_CPUClockSpeed; + + //ia32detect detect; + HRESULT Init(); + HRESULT Close(); + +protected: + + PME() + { + hFile = NULL; + bDriverOpen = FALSE; + m_CPUClockSpeed = 0; + Init(); + } + +public: + + static PME* Instance(); // gives back a real object + + ~PME() + { + Close(); + } + + double GetCPUClockSpeedSlow( void ); + double GetCPUClockSpeedFast( void ); + + HRESULT SelectP5P6PerformanceEvent( uint32 dw_event, uint32 dw_counter, bool b_user, bool b_kernel ); + + HRESULT ReadMSR( uint32 dw_reg, int64 * pi64_value ); + HRESULT ReadMSR( uint32 dw_reg, uint64 * pi64_value ); + + HRESULT WriteMSR( uint32 dw_reg, const int64 & i64_value ); + HRESULT WriteMSR( uint32 dw_reg, const uint64 & i64_value ); + + void SetProcessPriority( ProcessPriority priority ) + { + switch( priority ) + { + case ProcessPriorityNormal: + { + SetPriorityClass (GetCurrentProcess(),NORMAL_PRIORITY_CLASS); + SetThreadPriority (GetCurrentThread(),THREAD_PRIORITY_NORMAL); + break; + } + case ProcessPriorityHigh: + { + SetPriorityClass (GetCurrentProcess(),REALTIME_PRIORITY_CLASS); + SetThreadPriority (GetCurrentThread(),THREAD_PRIORITY_HIGHEST); + break; + } + } + } + + //--------------------------------------------------------------------------- + // Return the family of the processor + //--------------------------------------------------------------------------- + CPUVendor GetVendor(void) + { + return vendor; + } + + int GetProcessorFamily(void) + { + return version.Family; + } + +#ifdef DBGFLAG_VALIDATE + void Validate( CValidator &validator, tchar *pchName ); // Validate our internal structures +#endif // DBGFLAG_VALIDATE + +}; + +#include "P5P6PerformanceCounters.h" +#include "P4PerformanceCounters.h" +#include "K8PerformanceCounters.h" + +enum PerfErrors +{ + E_UNKNOWN_CPU_VENDOR = -1, + E_BAD_COUNTER = -2, + E_UNKNOWN_CPU = -3, + E_CANT_OPEN_DRIVER = -4, + E_DRIVER_ALREADY_OPEN = -5, + E_DRIVER_NOT_OPEN = -6, + E_DISABLED = -7, + E_BAD_DATA = -8, + E_CANT_CLOSE = -9, + E_ILLEGAL_OPERATION = -10, +}; + +#pragma warning( pop ) + #endif // PMELIB_H
\ No newline at end of file |