hotspot/src/os/windows/vm/os_windows.hpp
changeset 10246 adee0cf4c981
parent 8119 81eef1b06988
child 10494 3f347ed8bd3c
equal deleted inserted replaced
10234:31f396799198 10246:adee0cf4c981
    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