mirror of
https://github.com/mirror/processhacker
synced 2026-06-08 16:03:24 +00:00
509ea2d378
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3966 21ef857c-d57f-4fe0-8362-d861dc6d29cd
105 lines
4.4 KiB
Diff
105 lines
4.4 KiB
Diff
Index: ProcessHacker/ProcessHacker.rc
|
|
===================================================================
|
|
--- ProcessHacker/ProcessHacker.rc (revision 3742)
|
|
+++ ProcessHacker/ProcessHacker.rc (working copy)
|
|
@@ -1291,10 +1291,10 @@
|
|
LTEXT "Write Bytes",IDC_STATIC,262,37,38,8
|
|
LTEXT "Other",IDC_STATIC,262,47,20,8
|
|
LTEXT "Other Bytes",IDC_STATIC,262,56,40,8
|
|
- GROUPBOX "CPU",IDC_STATIC,255,71,132,40
|
|
- LTEXT "Context Switches",IDC_STATIC,262,81,57,8
|
|
- LTEXT "Interrupts",IDC_STATIC,262,90,34,8
|
|
- LTEXT "System Calls",IDC_STATIC,262,99,41,8
|
|
+ GROUPBOX "CPU",IDC_STATIC,255,71,132,53
|
|
+ LTEXT "Context Switches",IDC_STATIC,262,91,57,8
|
|
+ LTEXT "Interrupts",IDC_STATIC,262,100,34,8
|
|
+ LTEXT "System Calls",IDC_STATIC,262,110,41,8
|
|
RTEXT "Static",IDC_ZPROCESSES_V,57,10,50,8,SS_ENDELLIPSIS
|
|
RTEXT "Static",IDC_ZTHREADS_V,50,19,57,8,SS_ENDELLIPSIS
|
|
RTEXT "Static",IDC_ZHANDLES_V,45,28,62,8,SS_ENDELLIPSIS
|
|
@@ -1324,9 +1324,11 @@
|
|
RTEXT "Static",IDC_ZIOWRITEBYTES_V,313,37,67,8,SS_ENDELLIPSIS
|
|
RTEXT "Static",IDC_ZIOOTHER_V,313,47,67,8,SS_ENDELLIPSIS
|
|
RTEXT "Static",IDC_ZIOOTHERBYTES_V,313,56,67,8,SS_ENDELLIPSIS
|
|
- RTEXT "Static",IDC_ZCONTEXTSWITCHES_V,326,81,54,8,SS_ENDELLIPSIS
|
|
- RTEXT "Static",IDC_ZINTERRUPTS_V,326,90,54,8,SS_ENDELLIPSIS
|
|
- RTEXT "Static",IDC_ZSYSTEMCALLS_V,326,99,54,8,SS_ENDELLIPSIS
|
|
+ RTEXT "Static",IDC_ZCONTEXTSWITCHES_V,326,91,54,8,SS_ENDELLIPSIS
|
|
+ RTEXT "Static",IDC_ZINTERRUPTS_V,326,100,54,8,SS_ENDELLIPSIS
|
|
+ RTEXT "Static",IDC_ZSYSTEMCALLS_V,326,110,54,8,SS_ENDELLIPSIS
|
|
+ LTEXT "Cycles",IDC_STATIC,262,81,22,8
|
|
+ RTEXT "Static",IDC_ZCYCLES_V,298,81,82,8,SS_ENDELLIPSIS
|
|
END
|
|
|
|
IDD_GDIHANDLES DIALOGEX 0, 0, 351, 307
|
|
Index: ProcessHacker/sysinfo.c
|
|
===================================================================
|
|
--- ProcessHacker/sysinfo.c (revision 3742)
|
|
+++ ProcessHacker/sysinfo.c (working copy)
|
|
@@ -68,6 +68,8 @@
|
|
static PH_GRAPH_STATE PhysicalGraphState;
|
|
static PPH_GRAPH_STATE CpusGraphState;
|
|
|
|
+static PULARGE_INTEGER CpuCyclesBlock = NULL;
|
|
+
|
|
static BOOLEAN MmAddressesInitialized = FALSE;
|
|
static PSIZE_T MmSizeOfPagedPoolInBytes = NULL;
|
|
static PSIZE_T MmMaximumNonPagedPoolInBytes = NULL;
|
|
@@ -413,6 +415,12 @@
|
|
PhDeleteGraphState(&IoGraphState);
|
|
PhDeleteGraphState(&PhysicalGraphState);
|
|
|
|
+ if (CpuCyclesBlock)
|
|
+ {
|
|
+ PhFree(CpuCyclesBlock);
|
|
+ CpuCyclesBlock = NULL;
|
|
+ }
|
|
+
|
|
PhSetIntegerSetting(L"SysInfoWindowAlwaysOnTop", AlwaysOnTop);
|
|
PhSetIntegerSetting(L"SysInfoWindowOneGraphPerCpu", OneGraphPerCpu);
|
|
|
|
@@ -1241,6 +1249,43 @@
|
|
|
|
// CPU
|
|
|
|
+ if (WINDOWS_HAS_CYCLE_TIME)
|
|
+ {
|
|
+ ULONG blockSize;
|
|
+
|
|
+ blockSize = sizeof(ULARGE_INTEGER) * (ULONG)PhSystemBasicInformation.NumberOfProcessors;
|
|
+
|
|
+ if (!CpuCyclesBlock)
|
|
+ CpuCyclesBlock = PhAllocate(blockSize);
|
|
+
|
|
+ if (NT_SUCCESS(NtQuerySystemInformation(
|
|
+ SystemProcessorCycleTimeInformation,
|
|
+ CpuCyclesBlock,
|
|
+ blockSize,
|
|
+ NULL
|
|
+ )))
|
|
+ {
|
|
+ ULONG64 total;
|
|
+ ULONG i;
|
|
+
|
|
+ total = 0;
|
|
+
|
|
+ for (i = 0; i < (ULONG)PhSystemBasicInformation.NumberOfProcessors; i++)
|
|
+ total += CpuCyclesBlock[i].QuadPart;
|
|
+
|
|
+ SetDlgItemText(hwndDlg, IDC_ZCYCLES_V,
|
|
+ PhaFormatUInt64(total, TRUE)->Buffer);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ SetDlgItemText(hwndDlg, IDC_ZCYCLES_V, L"Unknown");
|
|
+ }
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ SetDlgItemText(hwndDlg, IDC_ZCYCLES_V, L"N/A");
|
|
+ }
|
|
+
|
|
SetDlgItemText(hwndDlg, IDC_ZCONTEXTSWITCHES_V,
|
|
PhaFormatUInt64(PhPerfInformation.ContextSwitches, TRUE)->Buffer);
|
|
SetDlgItemText(hwndDlg, IDC_ZINTERRUPTS_V,
|