src/os/windows/vm/os_windows.inline.hpp

Fri, 05 Apr 2013 11:15:13 -0700

author
ccheung
date
Fri, 05 Apr 2013 11:15:13 -0700
changeset 4893
4b7cf00ccb08
parent 4675
63e54c37ac64
child 5365
59b052799158
permissions
-rw-r--r--

8006001: [parfait] Possible file leak in hotspot/src/os/linux/vm/perfMemory_linux.cpp
Reviewed-by: zgu, coleenp, hseigel, dholmes

duke@435 1 /*
hseigel@4465 2 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #ifndef OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP
stefank@2314 26 #define OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP
stefank@2314 27
twisti@4318 28 #include "runtime/atomic.inline.hpp"
stefank@2314 29 #include "runtime/os.hpp"
twisti@4318 30
stefank@2314 31 #ifdef TARGET_OS_ARCH_windows_x86
stefank@2314 32 # include "orderAccess_windows_x86.inline.hpp"
stefank@2314 33 #endif
stefank@2314 34
duke@435 35 inline const char* os::file_separator() { return "\\"; }
duke@435 36 inline const char* os::line_separator() { return "\r\n"; }
duke@435 37 inline const char* os::path_separator() { return ";"; }
ikrylov@2322 38 inline const char* os::dll_file_extension() { return ".dll"; }
duke@435 39
ikrylov@2322 40 inline const int os::default_file_open_flags() { return O_BINARY | O_NOINHERIT;}
ikrylov@2322 41
duke@435 42 // File names are case-insensitive on windows only
duke@435 43 inline int os::file_name_strcmp(const char* s, const char* t) {
duke@435 44 return _stricmp(s, t);
duke@435 45 }
duke@435 46
ikrylov@2322 47 inline void os::dll_unload(void *lib) {
ikrylov@2322 48 ::FreeLibrary((HMODULE)lib);
ikrylov@2322 49 }
ikrylov@2322 50
ikrylov@2322 51 inline void* os::dll_lookup(void *lib, const char *name) {
ikrylov@2322 52 return (void*)::GetProcAddress((HMODULE)lib, name);
ikrylov@2322 53 }
ikrylov@2322 54
duke@435 55 // Used to improve time-sharing on some systems
duke@435 56 inline void os::loop_breaker(int attempts) {}
duke@435 57
duke@435 58 inline bool os::obsolete_option(const JavaVMOption *option) {
duke@435 59 return false;
duke@435 60 }
duke@435 61
duke@435 62 inline bool os::uses_stack_guard_pages() {
duke@435 63 return os::win32::is_nt();
duke@435 64 }
duke@435 65
duke@435 66 inline bool os::allocate_stack_guard_pages() {
duke@435 67 assert(uses_stack_guard_pages(), "sanity check");
duke@435 68 return true;
duke@435 69 }
duke@435 70
duke@435 71 inline int os::readdir_buf_size(const char *path)
duke@435 72 {
duke@435 73 /* As Windows doesn't use the directory entry buffer passed to
duke@435 74 os::readdir() this can be as short as possible */
duke@435 75
duke@435 76 return 1;
duke@435 77 }
duke@435 78
duke@435 79 // Bang the shadow pages if they need to be touched to be mapped.
duke@435 80 inline void os::bang_stack_shadow_pages() {
duke@435 81 // Write to each page of our new frame to force OS mapping.
duke@435 82 // If we decrement stack pointer more than one page
duke@435 83 // the OS may not map an intervening page into our space
duke@435 84 // and may fault on a memory access to interior of our frame.
duke@435 85 address sp = current_stack_pointer();
duke@435 86 for (int pages = 1; pages <= StackShadowPages; pages++) {
duke@435 87 *((int *)(sp - (pages * vm_page_size()))) = 0;
duke@435 88 }
duke@435 89 }
iveresov@576 90
iveresov@576 91 inline bool os::numa_has_static_binding() { return true; }
iveresov@576 92 inline bool os::numa_has_group_homing() { return false; }
stefank@2314 93
ikrylov@2322 94 inline size_t os::read(int fd, void *buf, unsigned int nBytes) {
ikrylov@2322 95 return ::read(fd, buf, nBytes);
ikrylov@2322 96 }
ikrylov@2322 97
ikrylov@2322 98 inline size_t os::restartable_read(int fd, void *buf, unsigned int nBytes) {
ikrylov@2322 99 return ::read(fd, buf, nBytes);
ikrylov@2322 100 }
ikrylov@2322 101
ikrylov@2322 102 inline size_t os::write(int fd, const void *buf, unsigned int nBytes) {
ikrylov@2322 103 return ::write(fd, buf, nBytes);
ikrylov@2322 104 }
ikrylov@2322 105
ikrylov@2322 106 inline int os::close(int fd) {
ikrylov@2322 107 return ::close(fd);
ikrylov@2322 108 }
stefank@2314 109 #endif // OS_WINDOWS_VM_OS_WINDOWS_INLINE_HPP

mercurial