src/os/solaris/vm/os_share_solaris.hpp

Wed, 27 Mar 2013 19:21:18 +0100

author
tschatzl
date
Wed, 27 Mar 2013 19:21:18 +0100
changeset 4854
754c24457b20
parent 2314
f95d63e2154a
child 5237
f2110083203d
permissions
-rw-r--r--

7112912: Message "Error occurred during initialization of VM" on boxes with lots of RAM
Summary: Ergonomics now also takes available virtual memory into account when deciding for a heap size. The helper method to determine the maximum allocatable memory block now uses the appropriate OS specific calls to retrieve available virtual memory for the java process. In 32 bit environments this method now also searches for the maximum actually reservable amount of memory. Merge previously separate implementations for Linux/BSD/Solaris into a single method.
Reviewed-by: jmasa, tamao

duke@435 1 /*
stefank@2314 2 * Copyright (c) 1999, 2010, 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_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
stefank@2314 26 #define OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP
stefank@2314 27
duke@435 28 // Defines the interfaces to Solaris operating systems that vary across platforms
duke@435 29
duke@435 30
duke@435 31 // This is a simple callback that just fetches a PC for an interrupted thread.
duke@435 32 // The thread need not be suspended and the fetched PC is just a hint.
duke@435 33 // Returned PC and nPC are not necessarily consecutive.
duke@435 34 // This one is currently used for profiling the VMThread ONLY!
duke@435 35
duke@435 36 // Must be synchronous
duke@435 37 class GetThreadPC_Callback : public OSThread::Sync_Interrupt_Callback {
duke@435 38 private:
duke@435 39 ExtendedPC _addr;
duke@435 40
duke@435 41 public:
duke@435 42
duke@435 43 GetThreadPC_Callback(Monitor *sync) :
duke@435 44 OSThread::Sync_Interrupt_Callback(sync) { }
duke@435 45 ExtendedPC addr() const { return _addr; }
duke@435 46
duke@435 47 void set_addr(ExtendedPC addr) { _addr = addr; }
duke@435 48
duke@435 49 void execute(OSThread::InterruptArguments *args);
duke@435 50 };
duke@435 51
duke@435 52 // misc
duke@435 53 extern "C" {
duke@435 54 void signalHandler(int, siginfo_t*, void*);
duke@435 55 }
duke@435 56 void resolve_lwp_exit_calls(void);
duke@435 57 void handle_unexpected_exception(Thread* thread, int sig, siginfo_t* info, address pc, address adjusted_pc);
duke@435 58 #ifndef PRODUCT
duke@435 59 void continue_with_dump(void);
duke@435 60 #endif
duke@435 61
duke@435 62 #if defined(__sparc) && defined(COMPILER2)
duke@435 63 // For Sun Studio compiler implementation is in file
duke@435 64 // src/os_cpu/solaris_sparc/vm/solaris_sparc.il
duke@435 65 // For gcc implementation is in file
duke@435 66 // src/os_cpu/solaris_sparc/vm/os_solaris_sparc.cpp
duke@435 67 extern "C" void _mark_fpu_nosave() ;
duke@435 68 #endif
duke@435 69
duke@435 70 #define PROCFILE_LENGTH 128
stefank@2314 71
stefank@2314 72 #endif // OS_SOLARIS_VM_OS_SHARE_SOLARIS_HPP

mercurial