1 /*
2 * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2013, 2016 SAP SE. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
123 static bool signal_handlers_are_installed;
124
125 static int get_our_sigflags(int);
126 static void set_our_sigflags(int, int);
127 static void signal_sets_init();
128 static void install_signal_handlers();
129 static void set_signal_handler(int, bool);
130 static bool is_sig_ignored(int sig);
131
132 static sigset_t* unblocked_signals();
133 static sigset_t* vm_signals();
134 static sigset_t* allowdebug_blocked_signals();
135
136 // For signal-chaining
137 static struct sigaction *get_chained_signal_action(int sig);
138 static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
139
140 // libpthread version string
141 static void libpthread_init();
142
143 // Minimum stack size a thread can be created with (allowing
144 // the VM to completely create the thread and enter user code)
145 static size_t min_stack_allowed;
146
147 // Return default stack size or guard size for the specified thread type
148 static size_t default_stack_size(os::ThreadType thr_type);
149 static size_t default_guard_size(os::ThreadType thr_type);
150
151 // Function returns true if we run on OS/400 (pase), false if we run
152 // on AIX.
153 static bool on_pase() {
154 assert(_on_pase != -1, "not initialized");
155 return _on_pase ? true : false;
156 }
157
158 // Function returns true if we run on AIX, false if we run on OS/400
159 // (pase).
160 static bool on_aix() {
161 assert(_on_pase != -1, "not initialized");
162 return _on_pase ? false : true;
163 }
164
165 // Get 4 byte AIX kernel version number:
166 // highest 2 bytes: Version, Release
167 // if available: lowest 2 bytes: Tech Level, Service Pack.
168 static uint32_t os_version() {
169 assert(_os_version != 0, "not initialized");
170 return _os_version;
|
1 /*
2 * Copyright (c) 1999, 2016, Oracle and/or its affiliates. All rights reserved.
3 * Copyright (c) 2013, 2016 SAP SE. All rights reserved.
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 *
6 * This code is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License version 2 only, as
8 * published by the Free Software Foundation.
9 *
10 * This code is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * version 2 for more details (a copy is included in the LICENSE file that
14 * accompanied this code).
15 *
16 * You should have received a copy of the GNU General Public License version
17 * 2 along with this work; if not, write to the Free Software Foundation,
18 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
19 *
20 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
21 * or visit www.oracle.com if you need additional information or have any
22 * questions.
123 static bool signal_handlers_are_installed;
124
125 static int get_our_sigflags(int);
126 static void set_our_sigflags(int, int);
127 static void signal_sets_init();
128 static void install_signal_handlers();
129 static void set_signal_handler(int, bool);
130 static bool is_sig_ignored(int sig);
131
132 static sigset_t* unblocked_signals();
133 static sigset_t* vm_signals();
134 static sigset_t* allowdebug_blocked_signals();
135
136 // For signal-chaining
137 static struct sigaction *get_chained_signal_action(int sig);
138 static bool chained_handler(int sig, siginfo_t* siginfo, void* context);
139
140 // libpthread version string
141 static void libpthread_init();
142
143 // Function returns true if we run on OS/400 (pase), false if we run
144 // on AIX.
145 static bool on_pase() {
146 assert(_on_pase != -1, "not initialized");
147 return _on_pase ? true : false;
148 }
149
150 // Function returns true if we run on AIX, false if we run on OS/400
151 // (pase).
152 static bool on_aix() {
153 assert(_on_pase != -1, "not initialized");
154 return _on_pase ? false : true;
155 }
156
157 // Get 4 byte AIX kernel version number:
158 // highest 2 bytes: Version, Release
159 // if available: lowest 2 bytes: Tech Level, Service Pack.
160 static uint32_t os_version() {
161 assert(_os_version != 0, "not initialized");
162 return _os_version;
|