ports/java/openjdk7/files/patch-src-solaris-native-sun-nio-ch-NativeThread.c
Jung-uk Kim 6d8c62429c Implement current and signal methods for sun.nio.ch.NativeThread. Note this
fixes a test case in the following Apache Solr bug report.

https://issues.apache.org/jira/browse/SOLR-6204

Reported by:	Dawid Weiss <dawid.weiss@gmail.com>
2014-06-27 18:41:19 +00:00

51 lines
1.5 KiB
C

--- jdk/src/solaris/native/sun/nio/ch/NativeThread.c
+++ jdk/src/solaris/native/sun/nio/ch/NativeThread.c
@@ -33,12 +33,20 @@
#include "nio_util.h"
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
+#if defined(__linux__)
#include <pthread.h>
#include <sys/signal.h>
/* Also defined in src/solaris/native/java/net/linux_close.c */
#define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
+#else
+#include <pthread.h>
+#include <signal.h>
+
+/* Also defined in src/solaris/native/java/net/bsd_close.c */
+#define INTERRUPT_SIGNAL SIGIO
+#endif
static void
nullHandler(int sig)
@@ -51,7 +59,7 @@
JNIEXPORT void JNICALL
Java_sun_nio_ch_NativeThread_init(JNIEnv *env, jclass cl)
{
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
/* Install the null handler for INTERRUPT_SIGNAL. This might overwrite the
* handler previously installed by java/net/linux_close.c, but that's okay
@@ -74,7 +82,7 @@
JNIEXPORT jlong JNICALL
Java_sun_nio_ch_NativeThread_current(JNIEnv *env, jclass cl)
{
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
return (long)pthread_self();
#else
return -1;
@@ -84,7 +92,7 @@
JNIEXPORT void JNICALL
Java_sun_nio_ch_NativeThread_signal(JNIEnv *env, jclass cl, jlong thread)
{
-#ifdef __linux__
+#if defined(__linux__) || defined(_ALLBSD_SOURCE)
if (pthread_kill((pthread_t)thread, INTERRUPT_SIGNAL))
JNU_ThrowIOExceptionWithLastError(env, "Thread signal failed");
#endif