< prev index next >
src/java.base/aix/native/libjsig/jsig.c
Print this page
*** 35,44 ****
--- 35,45 ----
#include <dlfcn.h>
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
+ #include "jni.h"
#define bool int
#define true 1
#define false 0
*** 138,152 ****
signal_unlock();
return oldhandler;
}
}
! sa_handler_t signal(int sig, sa_handler_t disp) {
return set_signal(sig, disp, false);
}
! sa_handler_t sigset(int sig, sa_handler_t disp) {
return set_signal(sig, disp, true);
}
static int call_os_sigaction(int sig, const struct sigaction *act,
struct sigaction *oact) {
--- 139,155 ----
signal_unlock();
return oldhandler;
}
}
! JNIEXPORT sa_handler_t JNICALL
! signal(int sig, sa_handler_t disp) {
return set_signal(sig, disp, false);
}
! JNIEXPORT sa_handler_t JNICALL
! sigset(int sig, sa_handler_t disp) {
return set_signal(sig, disp, true);
}
static int call_os_sigaction(int sig, const struct sigaction *act,
struct sigaction *oact) {
*** 159,169 ****
}
}
return (*os_sigaction)(sig, act, oact);
}
! int sigaction(int sig, const struct sigaction *act, struct sigaction *oact) {
int res;
bool sigused;
struct sigaction oldAct;
signal_lock();
--- 162,173 ----
}
}
return (*os_sigaction)(sig, act, oact);
}
! JNIEXPORT int JNICALL
! sigaction(int sig, const struct sigaction *act, struct sigaction *oact) {
int res;
bool sigused;
struct sigaction oldAct;
signal_lock();
*** 204,230 ****
return res;
}
}
/* The three functions for the jvm to call into. */
! void JVM_begin_signal_setting() {
signal_lock();
sigemptyset(&jvmsigs);
jvm_signal_installing = true;
tid = pthread_self();
signal_unlock();
}
! void JVM_end_signal_setting() {
signal_lock();
jvm_signal_installed = true;
jvm_signal_installing = false;
pthread_cond_broadcast(&cond);
signal_unlock();
}
! struct sigaction *JVM_get_signal_action(int sig) {
/* Does race condition make sense here? */
if (sigismember(&jvmsigs, sig)) {
return &sact[sig];
}
return NULL;
--- 208,237 ----
return res;
}
}
/* The three functions for the jvm to call into. */
! JNIEXPORT void JNICALL
! JVM_begin_signal_setting() {
signal_lock();
sigemptyset(&jvmsigs);
jvm_signal_installing = true;
tid = pthread_self();
signal_unlock();
}
! JNIEXPORT void JNICALL
! JVM_end_signal_setting() {
signal_lock();
jvm_signal_installed = true;
jvm_signal_installing = false;
pthread_cond_broadcast(&cond);
signal_unlock();
}
! JNIEXPORT struct sigaction * JNICALL
! JVM_get_signal_action(int sig) {
/* Does race condition make sense here? */
if (sigismember(&jvmsigs, sig)) {
return &sact[sig];
}
return NULL;
< prev index next >