Mercurial > hg > truffle
comparison src/os/windows/vm/os_windows.hpp @ 3429:5def270bc147
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
Summary: Created Windows Dll wrapped to handle jdk6 and jdk7 platform requirements, also provided more restictive Dll search orders for Windows system Dlls.
Reviewed-by: acorn, dcubed, ohair, alanb
author | zgu |
---|---|
date | Fri, 15 Apr 2011 09:34:43 -0400 |
parents | 63d374c54045 |
children | 3cd0157e1d4d |
comparison
equal
deleted
inserted
replaced
3428:c97b08c7d72a | 3429:5def270bc147 |
---|---|
22 * | 22 * |
23 */ | 23 */ |
24 | 24 |
25 #ifndef OS_WINDOWS_VM_OS_WINDOWS_HPP | 25 #ifndef OS_WINDOWS_VM_OS_WINDOWS_HPP |
26 #define OS_WINDOWS_VM_OS_WINDOWS_HPP | 26 #define OS_WINDOWS_VM_OS_WINDOWS_HPP |
27 | |
28 // Win32_OS defines the interface to windows operating systems | 27 // Win32_OS defines the interface to windows operating systems |
29 | 28 |
30 class win32 { | 29 class win32 { |
31 | 30 |
32 protected: | 31 protected: |
53 return _processor_level; | 52 return _processor_level; |
54 } | 53 } |
55 static julong available_memory(); | 54 static julong available_memory(); |
56 static julong physical_memory() { return _physical_memory; } | 55 static julong physical_memory() { return _physical_memory; } |
57 | 56 |
57 // load dll from Windows system directory or Windows directory | |
58 static HINSTANCE load_Windows_dll(const char* name, char *ebuf, int ebuflen); | |
59 | |
58 public: | 60 public: |
59 // Generic interface: | 61 // Generic interface: |
60 | 62 |
61 // Trace number of created threads | 63 // Trace number of created threads |
62 static intx _os_thread_limit; | 64 static intx _os_thread_limit; |
130 guarantee (_ParkEvent != NULL, "invariant") ; | 132 guarantee (_ParkEvent != NULL, "invariant") ; |
131 } | 133 } |
132 | 134 |
133 } ; | 135 } ; |
134 | 136 |
137 // JDK7 requires VS2010 | |
138 #if _MSC_VER < 1600 | |
139 #define JDK6_OR_EARLIER 1 | |
140 #endif | |
141 | |
142 | |
143 | |
144 class WinSock2Dll: AllStatic { | |
145 public: | |
146 static BOOL WSAStartup(WORD, LPWSADATA); | |
147 static struct hostent* gethostbyname(const char *name); | |
148 static BOOL WinSock2Available(); | |
149 #ifdef JDK6_OR_EARLIER | |
150 private: | |
151 static int (PASCAL FAR* _WSAStartup)(WORD, LPWSADATA); | |
152 static struct hostent *(PASCAL FAR *_gethostbyname)(...); | |
153 static BOOL initialized; | |
154 | |
155 static void initialize(); | |
156 #endif | |
157 }; | |
158 | |
159 class Kernel32Dll: AllStatic { | |
160 public: | |
161 static BOOL SwitchToThread(); | |
162 static SIZE_T GetLargePageMinimum(); | |
163 | |
164 static BOOL SwitchToThreadAvailable(); | |
165 static BOOL GetLargePageMinimumAvailable(); | |
166 | |
167 // Help tools | |
168 static BOOL HelpToolsAvailable(); | |
169 static HANDLE CreateToolhelp32Snapshot(DWORD,DWORD); | |
170 static BOOL Module32First(HANDLE,LPMODULEENTRY32); | |
171 static BOOL Module32Next(HANDLE,LPMODULEENTRY32); | |
172 | |
173 static BOOL GetNativeSystemInfoAvailable(); | |
174 static void GetNativeSystemInfo(LPSYSTEM_INFO); | |
175 | |
176 private: | |
177 // GetLargePageMinimum available on Windows Vista/Windows Server 2003 | |
178 // and later | |
179 static SIZE_T (WINAPI *_GetLargePageMinimum)(void); | |
180 static BOOL initialized; | |
181 | |
182 static void initialize(); | |
183 | |
184 #ifdef JDK6_OR_EARLIER | |
185 private: | |
186 static BOOL (WINAPI *_SwitchToThread)(void); | |
187 static HANDLE (WINAPI* _CreateToolhelp32Snapshot)(DWORD,DWORD); | |
188 static BOOL (WINAPI* _Module32First)(HANDLE,LPMODULEENTRY32); | |
189 static BOOL (WINAPI* _Module32Next)(HANDLE,LPMODULEENTRY32); | |
190 static void (WINAPI *_GetNativeSystemInfo)(LPSYSTEM_INFO); | |
191 #endif | |
192 | |
193 }; | |
194 | |
195 class Advapi32Dll: AllStatic { | |
196 public: | |
197 static BOOL AdjustTokenPrivileges(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); | |
198 static BOOL OpenProcessToken(HANDLE, DWORD, PHANDLE); | |
199 static BOOL LookupPrivilegeValue(LPCTSTR, LPCTSTR, PLUID); | |
200 | |
201 static BOOL AdvapiAvailable(); | |
202 | |
203 #ifdef JDK6_OR_EARLIER | |
204 private: | |
205 static BOOL (WINAPI *_AdjustTokenPrivileges)(HANDLE, BOOL, PTOKEN_PRIVILEGES, DWORD, PTOKEN_PRIVILEGES, PDWORD); | |
206 static BOOL (WINAPI *_OpenProcessToken)(HANDLE, DWORD, PHANDLE); | |
207 static BOOL (WINAPI *_LookupPrivilegeValue)(LPCTSTR, LPCTSTR, PLUID); | |
208 static BOOL initialized; | |
209 | |
210 static void initialize(); | |
211 #endif | |
212 }; | |
213 | |
214 class PSApiDll: AllStatic { | |
215 public: | |
216 static BOOL EnumProcessModules(HANDLE, HMODULE *, DWORD, LPDWORD); | |
217 static DWORD GetModuleFileNameEx(HANDLE, HMODULE, LPTSTR, DWORD); | |
218 static BOOL GetModuleInformation(HANDLE, HMODULE, LPMODULEINFO, DWORD); | |
219 | |
220 static BOOL PSApiAvailable(); | |
221 | |
222 #ifdef JDK6_OR_EARLIER | |
223 private: | |
224 static BOOL (WINAPI *_EnumProcessModules)(HANDLE, HMODULE *, DWORD, LPDWORD); | |
225 static BOOL (WINAPI *_GetModuleFileNameEx)(HANDLE, HMODULE, LPTSTR, DWORD);; | |
226 static BOOL (WINAPI *_GetModuleInformation)(HANDLE, HMODULE, LPMODULEINFO, DWORD); | |
227 static BOOL initialized; | |
228 | |
229 static void initialize(); | |
230 #endif | |
231 }; | |
232 | |
135 #endif // OS_WINDOWS_VM_OS_WINDOWS_HPP | 233 #endif // OS_WINDOWS_VM_OS_WINDOWS_HPP |