Files
wj32 509ea2d378 imported "incomplete" code
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@3966 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2011-01-02 07:51:31 +00:00

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,