27 |
27 |
28 #include "runtime/os.hpp" |
28 #include "runtime/os.hpp" |
29 #include "runtime/thread.hpp" |
29 #include "runtime/thread.hpp" |
30 |
30 |
31 inline const char* os::dll_file_extension() { return ".dll"; } |
31 inline const char* os::dll_file_extension() { return ".dll"; } |
32 |
|
33 inline const int os::default_file_open_flags() { return O_BINARY | O_NOINHERIT;} |
|
34 |
|
35 // File names are case-insensitive on windows only |
|
36 inline int os::file_name_strncmp(const char* s, const char* t, size_t num) { |
|
37 return _strnicmp(s, t, num); |
|
38 } |
|
39 |
32 |
40 inline void os::dll_unload(void *lib) { |
33 inline void os::dll_unload(void *lib) { |
41 ::FreeLibrary((HMODULE)lib); |
34 ::FreeLibrary((HMODULE)lib); |
42 } |
35 } |
43 |
36 |
84 |
77 |
85 inline void os::exit(int num) { |
78 inline void os::exit(int num) { |
86 win32::exit_process_or_thread(win32::EPT_PROCESS, num); |
79 win32::exit_process_or_thread(win32::EPT_PROCESS, num); |
87 } |
80 } |
88 |
81 |
89 // Platform Monitor implementation |
82 // Platform Mutex/Monitor implementation |
|
83 |
|
84 inline os::PlatformMutex::PlatformMutex() { |
|
85 InitializeCriticalSection(&_mutex); |
|
86 } |
|
87 |
|
88 inline os::PlatformMutex::~PlatformMutex() { |
|
89 DeleteCriticalSection(&_mutex); |
|
90 } |
90 |
91 |
91 inline os::PlatformMonitor::PlatformMonitor() { |
92 inline os::PlatformMonitor::PlatformMonitor() { |
92 InitializeConditionVariable(&_cond); |
93 InitializeConditionVariable(&_cond); |
93 InitializeCriticalSection(&_mutex); |
|
94 } |
94 } |
95 |
95 |
96 inline os::PlatformMonitor::~PlatformMonitor() { |
96 inline os::PlatformMonitor::~PlatformMonitor() { |
97 DeleteCriticalSection(&_mutex); |
97 // There is no DeleteConditionVariable API |
98 } |
98 } |
99 |
99 |
100 inline void os::PlatformMonitor::lock() { |
100 inline void os::PlatformMutex::lock() { |
101 EnterCriticalSection(&_mutex); |
101 EnterCriticalSection(&_mutex); |
102 } |
102 } |
103 |
103 |
104 inline void os::PlatformMonitor::unlock() { |
104 inline void os::PlatformMutex::unlock() { |
105 LeaveCriticalSection(&_mutex); |
105 LeaveCriticalSection(&_mutex); |
106 } |
106 } |
107 |
107 |
108 inline bool os::PlatformMonitor::try_lock() { |
108 inline bool os::PlatformMutex::try_lock() { |
109 return TryEnterCriticalSection(&_mutex); |
109 return TryEnterCriticalSection(&_mutex); |
110 } |
110 } |
111 |
111 |
112 inline void os::PlatformMonitor::notify() { |
112 inline void os::PlatformMonitor::notify() { |
113 WakeConditionVariable(&_cond); |
113 WakeConditionVariable(&_cond); |