8035881: PPC64: Fix AIX build in ppc-aix-port/stage after syncing 7133499 and 8028293 from jdk8u
Reviewed-by: alanb
diff --git a/make/lib/NioLibraries.gmk b/make/lib/NioLibraries.gmk
index 5c648c2..6c9c46a 100644
--- a/make/lib/NioLibraries.gmk
+++ b/make/lib/NioLibraries.gmk
@@ -120,7 +120,7 @@
BUILD_LIBNIO_FILES += \
AixPollPort.c \
InheritedChannel.c \
- NativeThread.c \
+ AixNativeThread.c \
PollArrayWrapper.c \
UnixAsynchronousServerSocketChannelImpl.c \
UnixAsynchronousSocketChannelImpl.c \
diff --git a/src/aix/native/sun/nio/ch/AixNativeThread.c b/src/aix/native/sun/nio/ch/AixNativeThread.c
new file mode 100644
index 0000000..c0d5857
--- /dev/null
+++ b/src/aix/native/sun/nio/ch/AixNativeThread.c
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation. Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include <sys/types.h>
+#include <string.h>
+#include "jni.h"
+#include "jni_util.h"
+#include "jvm.h"
+#include "jlong.h"
+#include "sun_nio_ch_NativeThread.h"
+
+#include <pthread.h>
+#include <sys/signal.h>
+
+/* Also defined in src/aix/native/java/net/aix_close.c */
+#define INTERRUPT_SIGNAL (SIGRTMAX - 1)
+
+static void
+nullHandler(int sig)
+{
+}
+
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl)
+{
+ /* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the
+ * handler previously installed by java/net/aix_close.c, but that's okay
+ * since neither handler actually does anything. We install our own
+ * handler here simply out of paranoia; ultimately the two mechanisms
+ * should somehow be unified, perhaps within the VM.
+ */
+
+ sigset_t ss;
+ struct sigaction sa, osa;
+ sa.sa_handler = nullHandler;
+ sa.sa_flags = 0;
+ sigemptyset(&sa.sa_mask);
+ if (sigaction(INTERRUPT_SIGNAL, &sa, &osa) < 0)
+ JNU_ThrowIOExceptionWithLastError(env, "sigaction");
+}
+
+JNIEXPORT jlong JNICALL
+Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl)
+{
+ return (long)pthread_self();
+}
+
+JNIEXPORT void JNICALL
+Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread)
+{
+ if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL))
+ JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
+}
diff --git a/src/share/lib/security/java.security-aix b/src/share/lib/security/java.security-aix
index fd49537..d31a1e3 100644
--- a/src/share/lib/security/java.security-aix
+++ b/src/share/lib/security/java.security-aix
@@ -182,6 +182,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -205,7 +206,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -228,6 +229,7 @@
com.sun.istack.internal.,\
com.sun.jmx.,\
com.sun.media.sound.,\
+ com.sun.naming.internal.,\
com.sun.proxy.,\
com.sun.corba.se.,\
com.sun.org.apache.bcel.internal.,\
@@ -251,7 +253,7 @@
com.sun.org.glassfish.,\
com.oracle.xmlns.internal.,\
com.oracle.webservices.internal.,\
- oracle.jrockit.jfr.,\
+ oracle.jrockit.jfr.,\
org.jcp.xml.dsig.internal.,\
jdk.internal.,\
jdk.nashorn.internal.,\
@@ -494,4 +496,3 @@
#
# Example:
# jdk.tls.disabledAlgorithms=MD5, SHA1, DSA, RSA keySize < 2048
-
diff --git a/src/solaris/classes/sun/net/PortConfig.java b/src/solaris/classes/sun/net/PortConfig.java
index 0f4ca74..1825b0b 100644
--- a/src/solaris/classes/sun/net/PortConfig.java
+++ b/src/solaris/classes/sun/net/PortConfig.java
@@ -55,6 +55,14 @@
} else if (os.contains("OS X")) {
defaultLower = 49152;
defaultUpper = 65535;
+ } else if (os.startsWith("AIX")) {
+ // The ephemeral port is OS version dependent on AIX:
+ // http://publib.boulder.ibm.com/infocenter/aix/v7r1/topic/com.ibm.aix.rsct315.admin/bl503_ephport.htm
+ // However, on AIX 5.3 / 6.1 / 7.1 we always see the
+ // settings below by using:
+ // /usr/sbin/no -a | fgrep ephemeral
+ defaultLower = 32768;
+ defaultUpper = 65535;
} else {
throw new InternalError(
"sun.net.PortConfig: unknown OS");