00001
00010 #ifndef PERFEVAL_H
00011 #define PERFEVAL_H
00012
00013 #ifdef __cplusplus
00014 extern "C" {
00015 #endif
00016
00017 #include "debug.h"
00018
00019 #ifdef PERFEVAL
00020
00024 typedef struct
00025 PERFORMANCE_EVAL_ENTRY
00026 {
00028 __int64 Timestamp;
00029
00031 ULONG Processor;
00032
00034 PETHREAD PeThread;
00035
00037 ULONG_PTR Event;
00038
00040 ULONG_PTR Data;
00041
00042 } PERFORMANCE_EVAL_ENTRY, *PPERFORMANCE_EVAL_ENTRY;
00043
00044 extern VOID PerfInit(VOID);
00045 extern VOID PerfEvent(IN ULONG_PTR Event, IN ULONG_PTR Data);
00046 extern VOID PerfSave(VOID);
00047
00049 #define PERF_INIT() PerfInit()
00050
00052 #define PERF_EVENT(_Event_, _Data_) PerfEvent(_Event_, _Data_)
00053
00055 #ifdef PERFEVAL_VERBOSE
00056 #define PERF_EVENT_VERBOSE(_Event_, _Data_) PERF_EVENT(_Event_, _Data_)
00057 #else
00058 #define PERF_EVENT_VERBOSE(_Event_, _Data_)
00059 #endif
00060
00061 #ifdef PERFEVAL_PARBURST
00062 #define PERF_EVENT_PARBURST(_Event_, _Data_) PERF_EVENT(_Event_, _Data_)
00063 #else
00064 #define PERF_EVENT_PARBURST(_Event_, _Data_)
00065 #endif
00066
00068 #define PERF_SAVE() PerfSave()
00069
00070 #else
00071
00073 #define PERF_INIT()
00074
00076 #define PERF_EVENT(_Event_, _Data_)
00077
00079 #define PERF_SAVE()
00080
00081 #endif
00082
00083 #ifdef __cplusplus
00084 }
00085 #endif
00086
00087 #endif // #ifndef PERFEVAL_H