Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(150)

Side by Side Diff: chrome/browser/task_manager/sampling/shared_sampler_win_defines.h

Issue 2657393003: Add unit-test for SharedSampler handling of zero-thread processes. (Closed)
Patch Set: Address review comments Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef CHROME_BROWSER_TASK_MANAGER_SAMPLING_SHARED_SAMPLER_WIN_DEFINES_H_
6 #define CHROME_BROWSER_TASK_MANAGER_SAMPLING_SHARED_SAMPLER_WIN_DEFINES_H_
7
8 #include <windows.h>
9 #include <winternl.h>
10
11 namespace task_manager {
12
13 namespace {
ncarter (slow) 2017/02/02 20:17:14 lgtm assuming this "namespace {" is dropped (i'm a
14
15 // From <wdm.h>
16 typedef LONG KPRIORITY;
17 typedef LONG KWAIT_REASON; // Full definition is in wdm.h
18
19 // From ntddk.h
20 typedef struct _VM_COUNTERS {
21 SIZE_T PeakVirtualSize;
22 SIZE_T VirtualSize;
23 ULONG PageFaultCount;
24 // Padding here in 64-bit
25 SIZE_T PeakWorkingSetSize;
26 SIZE_T WorkingSetSize;
27 SIZE_T QuotaPeakPagedPoolUsage;
28 SIZE_T QuotaPagedPoolUsage;
29 SIZE_T QuotaPeakNonPagedPoolUsage;
30 SIZE_T QuotaNonPagedPoolUsage;
31 SIZE_T PagefileUsage;
32 SIZE_T PeakPagefileUsage;
33 } VM_COUNTERS;
34
35 // Two possibilities available from here:
36 // http://stackoverflow.com/questions/28858849/where-is-system-information-class -defined
37
38 typedef enum _SYSTEM_INFORMATION_CLASS {
39 SystemProcessInformation = 5, // This is the number that we need.
40 } SYSTEM_INFORMATION_CLASS;
41
42 // https://msdn.microsoft.com/en-us/library/gg750647.aspx?f=255&MSPPError=-21472 17396
43 typedef struct {
44 HANDLE UniqueProcess; // Actually process ID
45 HANDLE UniqueThread; // Actually thread ID
46 } CLIENT_ID;
47
48 // From http://alax.info/blog/1182, with corrections and modifications
49 // Originally from
50 // http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%2 0Functions%2FSystem%20Information%2FStructures%2FSYSTEM_THREAD.html
51 struct SYSTEM_THREAD_INFORMATION {
52 ULONGLONG KernelTime;
53 ULONGLONG UserTime;
54 ULONGLONG CreateTime;
55 ULONG WaitTime;
56 // Padding here in 64-bit
57 PVOID StartAddress;
58 CLIENT_ID ClientId;
59 KPRIORITY Priority;
60 LONG BasePriority;
61 ULONG ContextSwitchCount;
62 ULONG State;
63 KWAIT_REASON WaitReason;
64 };
65 #if _M_X64
66 static_assert(sizeof(SYSTEM_THREAD_INFORMATION) == 80,
67 "Structure size mismatch");
68 #else
69 static_assert(sizeof(SYSTEM_THREAD_INFORMATION) == 64,
70 "Structure size mismatch");
71 #endif
72
73 // From http://alax.info/blog/1182, with corrections and modifications
74 // Originally from
75 // http://undocumented.ntinternals.net/index.html?page=UserMode%2FUndocumented%2 0Functions%2FSystem%20Information%2FStructures%2FSYSTEM_THREAD.html
76 struct SYSTEM_PROCESS_INFORMATION {
77 ULONG NextEntryOffset;
78 ULONG NumberOfThreads;
79 // http://processhacker.sourceforge.net/doc/struct___s_y_s_t_e_m___p_r_o_c_e_s _s___i_n_f_o_r_m_a_t_i_o_n.html
80 ULONGLONG WorkingSetPrivateSize;
81 ULONG HardFaultCount;
82 ULONG Reserved1;
83 ULONGLONG CycleTime;
84 ULONGLONG CreateTime;
85 ULONGLONG UserTime;
86 ULONGLONG KernelTime;
87 UNICODE_STRING ImageName;
88 KPRIORITY BasePriority;
89 HANDLE ProcessId;
90 HANDLE ParentProcessId;
91 ULONG HandleCount;
92 ULONG Reserved2[2];
93 // Padding here in 64-bit
94 VM_COUNTERS VirtualMemoryCounters;
95 size_t Reserved3;
96 IO_COUNTERS IoCounters;
97 SYSTEM_THREAD_INFORMATION Threads[1];
98 };
99 #if _M_X64
100 static_assert(sizeof(SYSTEM_PROCESS_INFORMATION) == 336,
101 "Structure size mismatch");
102 #else
103 static_assert(sizeof(SYSTEM_PROCESS_INFORMATION) == 248,
104 "Structure size mismatch");
105 #endif
106
107 typedef NTSTATUS(WINAPI* NTQUERYSYSTEMINFORMATION)(
108 SYSTEM_INFORMATION_CLASS SystemInformationClass,
109 PVOID SystemInformation,
110 ULONG SystemInformationLength,
111 PULONG ReturnLength);
112
113 } // namespace
114
115 } // namespace task_manager
116
117 #endif // CHROME_BROWSER_TASK_MANAGER_SAMPLING_SHARED_SAMPLER_WIN_DEFINES_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698