Mercurial > hg > truffle
annotate src/os/windows/vm/jvm_windows.h @ 17716:cdb71841f4bc
6498581: ThreadInterruptTest3 produces wrong output on Windows
Summary: There is race condition between os::interrupt and os::is_interrupted on Windows. In JVM_Sleep(Thread.sleep), check if thread gets interrupted, it may see interrupted but not really interrupted so cause spurious waking up (early return from sleep). Fix by checking if interrupt event really gets set thus prevent false return. For intrinsic of _isInterrupted, on Windows, go fastpath only on bit not set.
Reviewed-by: acorn, kvn
Contributed-by: david.holmes@oracle.com, yumin.qi@oracle.com
author | minqi |
---|---|
date | Wed, 26 Feb 2014 15:20:41 -0800 |
parents | ba8fd2fe198b |
children |
rev | line source |
---|---|
0 | 1 /* |
6833
ba8fd2fe198b
7198519: Broken build, hotspot-rt win USE_PRECOMPILED_HEADER=0
coleenp
parents:
6044
diff
changeset
|
2 * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. |
0 | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | |
5 * This code is free software; you can redistribute it and/or modify it | |
6 * under the terms of the GNU General Public License version 2 only, as | |
7 * published by the Free Software Foundation. | |
8 * | |
9 * This code is distributed in the hope that it will be useful, but WITHOUT | |
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | |
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License | |
12 * version 2 for more details (a copy is included in the LICENSE file that | |
13 * accompanied this code). | |
14 * | |
15 * You should have received a copy of the GNU General Public License version | |
16 * 2 along with this work; if not, write to the Free Software Foundation, | |
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. | |
18 * | |
1552
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
c18cbe5936b8
6941466: Oracle rebranding changes for Hotspot repositories
trims
parents:
0
diff
changeset
|
21 * questions. |
0 | 22 * |
23 */ | |
24 | |
4717
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
25 #ifndef OS_WINDOWS_VM_JVM_WINDOWS_H |
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
26 #define OS_WINDOWS_VM_JVM_WINDOWS_H |
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
27 |
0 | 28 #ifndef _JAVASOFT_JVM_MD_H_ |
29 #define _JAVASOFT_JVM_MD_H_ | |
30 | |
31 /* | |
32 * This file is currently collecting system-specific dregs for the | |
33 * JNI conversion, which should be sorted out later. | |
34 */ | |
35 | |
3833
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
36 // JDK7 requires VS2010 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
37 #if _MSC_VER >= 1600 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
38 // JDK7 minimum platform requirement: Windows XP |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
39 #if _WIN32_WINNT < 0x0501 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
40 #undef _WIN32_WINNT |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
41 #define _WIN32_WINNT 0x0501 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
42 #endif |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
43 #endif |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
44 |
0 | 45 #include <windows.h> |
46 | |
3833
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
47 #if _MSC_VER <= 1200 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
48 // Psapi.h doesn't come with Visual Studio 6; it can be downloaded as Platform |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
49 // SDK from Microsoft. Here are the definitions copied from Psapi.h |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
50 typedef struct _MODULEINFO { |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
51 LPVOID lpBaseOfDll; |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
52 DWORD SizeOfImage; |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
53 LPVOID EntryPoint; |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
54 } MODULEINFO, *LPMODULEINFO; |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
55 |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
56 #else |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
57 #include <Psapi.h> |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
58 #endif |
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
59 |
4717
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
60 #include <Tlhelp32.h> |
3833
b1cbb0907b36
7016797: Hotspot: securely/restrictive load dlls and new API for loading system dlls
zgu
parents:
1972
diff
changeset
|
61 |
6044
ec15e8f6e4f1
7157695: Add windows implementation of socket interface
twisti
parents:
4717
diff
changeset
|
62 typedef int socklen_t; |
0 | 63 |
64 #define JNI_ONLOAD_SYMBOLS {"_JNI_OnLoad@8", "JNI_OnLoad"} | |
65 #define JNI_ONUNLOAD_SYMBOLS {"_JNI_OnUnload@8", "JNI_OnUnload"} | |
66 #define JVM_ONLOAD_SYMBOLS {"_JVM_OnLoad@12", "JVM_OnLoad"} | |
67 #define AGENT_ONLOAD_SYMBOLS {"_Agent_OnLoad@12", "Agent_OnLoad"} | |
68 #define AGENT_ONUNLOAD_SYMBOLS {"_Agent_OnUnload@4", "Agent_OnUnload"} | |
69 #define AGENT_ONATTACH_SYMBOLS {"_Agent_OnAttach@12", "Agent_OnAttach"} | |
70 | |
71 #define JNI_LIB_PREFIX "" | |
72 #define JNI_LIB_SUFFIX ".dll" | |
73 | |
74 struct dirent { | |
75 char d_name[MAX_PATH]; | |
76 }; | |
77 | |
78 typedef struct { | |
79 struct dirent dirent; | |
80 char *path; | |
81 HANDLE handle; | |
82 WIN32_FIND_DATA find_data; | |
83 } DIR; | |
84 | |
85 #include <stdlib.h> | |
86 | |
87 #define JVM_MAXPATHLEN _MAX_PATH | |
88 | |
89 #define JVM_R_OK 4 | |
90 #define JVM_W_OK 2 | |
91 #define JVM_X_OK 1 | |
92 #define JVM_F_OK 0 | |
93 | |
94 #ifdef __cplusplus | |
95 extern "C" { | |
96 #endif | |
97 | |
98 JNIEXPORT void * JNICALL | |
99 JVM_GetThreadInterruptEvent(); | |
100 | |
101 #ifdef __cplusplus | |
102 } /* extern "C" */ | |
103 #endif /* __cplusplus */ | |
104 | |
105 /* | |
106 * File I/O | |
107 */ | |
108 | |
6833
ba8fd2fe198b
7198519: Broken build, hotspot-rt win USE_PRECOMPILED_HEADER=0
coleenp
parents:
6044
diff
changeset
|
109 #include <sys/stat.h> |
0 | 110 |
111 /* O Flags */ | |
112 | |
113 #define JVM_O_RDONLY O_RDONLY | |
114 #define JVM_O_WRONLY O_WRONLY | |
115 #define JVM_O_RDWR O_RDWR | |
116 #define JVM_O_O_APPEND O_APPEND | |
117 #define JVM_O_EXCL O_EXCL | |
118 #define JVM_O_CREAT O_CREAT | |
119 #define JVM_O_DELETE O_TEMPORARY | |
120 | |
121 /* Signals */ | |
122 | |
123 #define JVM_SIGINT SIGINT | |
124 #define JVM_SIGTERM SIGTERM | |
125 | |
126 #define SHUTDOWN1_SIGNAL SIGINT /* Shutdown Hooks support. */ | |
127 #define SHUTDOWN2_SIGNAL SIGTERM | |
128 | |
129 #endif /* !_JAVASOFT_JVM_MD_H_ */ | |
4717
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
130 |
11c26bfcf8c7
7091417: recvfrom's 6th input should be of type socklen_t
phh
parents:
3833
diff
changeset
|
131 #endif // OS_WINDOWS_VM_JVM_WINDOWS_H |