src/os/windows/vm/jvm_windows.h

Fri, 15 Apr 2011 09:34:43 -0400

author
zgu
date
Fri, 15 Apr 2011 09:34:43 -0400
changeset 3031
b1cbb0907b36
parent 2314
f95d63e2154a
child 3344
11c26bfcf8c7
permissions
-rw-r--r--

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

     1 /*
     2  * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
     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  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  *
    23  */
    25 #ifndef _JAVASOFT_JVM_MD_H_
    26 #define _JAVASOFT_JVM_MD_H_
    28 /*
    29  * This file is currently collecting system-specific dregs for the
    30  * JNI conversion, which should be sorted out later.
    31  */
    33 // JDK7 requires VS2010
    34 #if _MSC_VER >= 1600
    35 // JDK7 minimum platform requirement: Windows XP
    36 #if _WIN32_WINNT < 0x0501
    37 #undef _WIN32_WINNT
    38 #define _WIN32_WINNT  0x0501
    39 #endif
    40 #endif
    42 #include <windows.h>
    44 #if _MSC_VER <= 1200
    45 // Psapi.h doesn't come with Visual Studio 6; it can be downloaded as Platform
    46 // SDK from Microsoft.  Here are the definitions copied from Psapi.h
    47 typedef struct _MODULEINFO {
    48     LPVOID lpBaseOfDll;
    49     DWORD SizeOfImage;
    50     LPVOID EntryPoint;
    51 } MODULEINFO, *LPMODULEINFO;
    53 #else
    54 #include <Psapi.h>
    55 #endif
    59 #include <Tlhelp32.h>
    61 // #include "jni.h"
    63 #define JNI_ONLOAD_SYMBOLS      {"_JNI_OnLoad@8", "JNI_OnLoad"}
    64 #define JNI_ONUNLOAD_SYMBOLS    {"_JNI_OnUnload@8", "JNI_OnUnload"}
    65 #define JVM_ONLOAD_SYMBOLS      {"_JVM_OnLoad@12", "JVM_OnLoad"}
    66 #define AGENT_ONLOAD_SYMBOLS    {"_Agent_OnLoad@12", "Agent_OnLoad"}
    67 #define AGENT_ONUNLOAD_SYMBOLS  {"_Agent_OnUnload@4", "Agent_OnUnload"}
    68 #define AGENT_ONATTACH_SYMBOLS  {"_Agent_OnAttach@12", "Agent_OnAttach"}
    70 #define JNI_LIB_PREFIX ""
    71 #define JNI_LIB_SUFFIX ".dll"
    73 struct dirent {
    74     char d_name[MAX_PATH];
    75 };
    77 typedef struct {
    78     struct dirent dirent;
    79     char *path;
    80     HANDLE handle;
    81     WIN32_FIND_DATA find_data;
    82 } DIR;
    84 #include <stdlib.h>
    86 #define JVM_MAXPATHLEN _MAX_PATH
    88 #define JVM_R_OK    4
    89 #define JVM_W_OK    2
    90 #define JVM_X_OK    1
    91 #define JVM_F_OK    0
    93 #ifdef __cplusplus
    94 extern "C" {
    95 #endif
    97 JNIEXPORT void * JNICALL
    98 JVM_GetThreadInterruptEvent();
   100 #ifdef __cplusplus
   101 } /* extern "C" */
   102 #endif /* __cplusplus */
   104 /*
   105  * File I/O
   106  */
   108 // #include <sys/types.h>
   109 // #include <sys/stat.h>
   110 // #include <fcntl.h>
   111 // #include <errno.h>
   113 /* O Flags */
   115 #define JVM_O_RDONLY     O_RDONLY
   116 #define JVM_O_WRONLY     O_WRONLY
   117 #define JVM_O_RDWR       O_RDWR
   118 #define JVM_O_O_APPEND   O_APPEND
   119 #define JVM_O_EXCL       O_EXCL
   120 #define JVM_O_CREAT      O_CREAT
   121 #define JVM_O_DELETE     O_TEMPORARY
   123 /* Signals */
   125 #define JVM_SIGINT     SIGINT
   126 #define JVM_SIGTERM    SIGTERM
   128 #define SHUTDOWN1_SIGNAL SIGINT            /* Shutdown Hooks support.    */
   129 #define SHUTDOWN2_SIGNAL SIGTERM
   131 #endif /* !_JAVASOFT_JVM_MD_H_ */

mercurial