/* MSHV * * By Hrisimir Hristov - LZ2HV * (Edited by Harper Innes, VK1TTY - to remove Gendered Language and Replace with Non-Gendered language) NOTE:May be used under the terms of the GNU General Public License (GPL) */ #ifndef CPUSENSORHV_H #define CPUSENSORHV_H #include "../config.h" //#include #include #include #include #if defined _WIN32_ #include "windows.h" #define MAX_PROC 32 typedef DWORD (__stdcall *LPFN_NtQuerySystemInformation)(DWORD, PVOID, DWORD, PDWORD); #define SystemProcessorPerformanceInformation 0x8 #pragma pack(push,8) typedef struct _SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION { LARGE_INTEGER IdleTime; LARGE_INTEGER KernelTime; LARGE_INTEGER UserTime; LARGE_INTEGER DpcTime; LARGE_INTEGER InterruptTime; ULONG InterruptCount; } SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION, *PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION; #pragma pack(pop) extern int GetProc_Info_(SYSTEM_INFO &,LPFN_NtQuerySystemInformation &,SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *,SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION *); #endif //#include class CpuSensorHv //: public QObject { //Q_OBJECT public: CpuSensorHv(QString,int); virtual ~CpuSensorHv(); int getCPULoad(); private: #if defined _LINUX_ long userTicks; long sysTicks; long niceTicks; long idleTicks; int user; int system; int nice; int idle; void getTicks(long &u,long &s,long &n,long &i); #endif QString cpuNbr; int cpu_num;// for windows #if defined _WIN32_ SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION spi_old[MAX_PROC]; SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION spi[MAX_PROC]; SYSTEM_INFO systeminfo; unsigned long bytesreturned; LPFN_NtQuerySystemInformation ntquerysysteminformation; int cpu_usage; bool f_function; #endif }; #endif