175 static BOOL initialized;
176
177 static void initialize();
178 #endif
179 };
180
181 class Kernel32Dll: AllStatic {
182 public:
183 static BOOL SwitchToThread();
184 static SIZE_T GetLargePageMinimum();
185
186 static BOOL SwitchToThreadAvailable();
187 static BOOL GetLargePageMinimumAvailable();
188
189 // Help tools
190 static BOOL HelpToolsAvailable();
191 static HANDLE CreateToolhelp32Snapshot(DWORD,DWORD);
192 static BOOL Module32First(HANDLE,LPMODULEENTRY32);
193 static BOOL Module32Next(HANDLE,LPMODULEENTRY32);
194
195 static BOOL GetNativeSystemInfoAvailable();
196 static void GetNativeSystemInfo(LPSYSTEM_INFO);
197
198 // NUMA calls
199 static BOOL NumaCallsAvailable();
200 static LPVOID VirtualAllocExNuma(HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
201 static BOOL GetNumaHighestNodeNumber(PULONG);
202 static BOOL GetNumaNodeProcessorMask(UCHAR, PULONGLONG);
203
204 // Stack walking
205 static USHORT RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
206
207 private:
208 // GetLargePageMinimum available on Windows Vista/Windows Server 2003
209 // and later
210 // NUMA calls available Windows Vista/WS2008 and later
211
212 static SIZE_T (WINAPI *_GetLargePageMinimum)(void);
213 static LPVOID (WINAPI *_VirtualAllocExNuma) (HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
214 static BOOL (WINAPI *_GetNumaHighestNodeNumber) (PULONG);
215 static BOOL (WINAPI *_GetNumaNodeProcessorMask) (UCHAR, PULONGLONG);
|
175 static BOOL initialized;
176
177 static void initialize();
178 #endif
179 };
180
181 class Kernel32Dll: AllStatic {
182 public:
183 static BOOL SwitchToThread();
184 static SIZE_T GetLargePageMinimum();
185
186 static BOOL SwitchToThreadAvailable();
187 static BOOL GetLargePageMinimumAvailable();
188
189 // Help tools
190 static BOOL HelpToolsAvailable();
191 static HANDLE CreateToolhelp32Snapshot(DWORD,DWORD);
192 static BOOL Module32First(HANDLE,LPMODULEENTRY32);
193 static BOOL Module32Next(HANDLE,LPMODULEENTRY32);
194
195 static void GetNativeSystemInfo(LPSYSTEM_INFO);
196
197 // NUMA calls
198 static BOOL NumaCallsAvailable();
199 static LPVOID VirtualAllocExNuma(HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
200 static BOOL GetNumaHighestNodeNumber(PULONG);
201 static BOOL GetNumaNodeProcessorMask(UCHAR, PULONGLONG);
202
203 // Stack walking
204 static USHORT RtlCaptureStackBackTrace(ULONG, ULONG, PVOID*, PULONG);
205
206 private:
207 // GetLargePageMinimum available on Windows Vista/Windows Server 2003
208 // and later
209 // NUMA calls available Windows Vista/WS2008 and later
210
211 static SIZE_T (WINAPI *_GetLargePageMinimum)(void);
212 static LPVOID (WINAPI *_VirtualAllocExNuma) (HANDLE, LPVOID, SIZE_T, DWORD, DWORD, DWORD);
213 static BOOL (WINAPI *_GetNumaHighestNodeNumber) (PULONG);
214 static BOOL (WINAPI *_GetNumaNodeProcessorMask) (UCHAR, PULONGLONG);
|