Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Berserker: CPU utilization gage
- FILETIME userTime_prev;
- int totalTime_prev;
- void GLimp_GetCpuUtilization(unsigned *cpuUtil)
- {
- int util;
- HANDLE hProcess = GetCurrentProcess();
- FILETIME ft[4];
- SYSTEMTIME sdU;
- FILETIME dU, userTime;
- int dT, totalTime;
- long long usT, usT_prev, usT_delta, time, time2, time3;
- float deltaTime;
- if (!GetProcessTimes(hProcess, &ft[0], &ft[1], &ft[2], &ft[3]))
- {
- *cpuUtil = INT_MAX;
- return;
- }
- totalTime = Sys_Milliseconds();
- time2 = ((long long)ft[2].dwHighDateTime << 32) + ft[2].dwLowDateTime; // kernel time
- time3 = ((long long)ft[3].dwHighDateTime << 32) + ft[3].dwLowDateTime; // user time
- time = time2 + time3;
- userTime.dwHighDateTime = time >> 32;
- userTime.dwLowDateTime = time & 0xFFFFFFFF;
- usT = time;
- usT_prev = ((long long)userTime_prev.dwHighDateTime << 32) + userTime_prev.dwLowDateTime;
- usT_delta = usT - usT_prev;
- dU.dwHighDateTime = usT_delta >> 32;
- dU.dwLowDateTime = usT_delta & 0xFFFFFFFF;
- FileTimeToSystemTime(&dU, &sdU);
- dT = totalTime - totalTime_prev;
- deltaTime = sdU.wMilliseconds + sdU.wSecond * 1000.0 + sdU.wMinute * 60000.0 + sdU.wHour * 3600000.0 + (sdU.wDay - 1) * 86400000.0; /// дальше не будем раскручивать ;)
- util = (int)(100.0 * deltaTime / (float)dT);
- if (util < 0) util = 0;
- else if (util > 100) util = 100;
- userTime_prev = userTime;
- totalTime_prev = totalTime;
- *cpuUtil = util;
- }
- void GLimp_InitCPU(void)
- {
- HANDLE hProcess;
- FILETIME ft[4];
- long long time2, time3, time;
- hProcess = GetCurrentProcess();
- GetProcessTimes(hProcess, &ft[0], &ft[1], &ft[2], &ft[3]);
- totalTime_prev = Sys_Milliseconds();
- time2 = ((long long)ft[2].dwHighDateTime << 32) + ft[2].dwLowDateTime; // kernel time
- time3 = ((long long)ft[3].dwHighDateTime << 32) + ft[3].dwLowDateTime; // user time
- time = time2 + time3;
- userTime_prev.dwHighDateTime = time >> 32;
- userTime_prev.dwLowDateTime = time & 0xFFFFFFFF;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement