From 3b54853878930c087ff9c577d714c526ac82f08c Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Fri, 22 Oct 2010 21:59:18 +0000 Subject: [PATCH] This old native code for dispatching signals needs to die die die. It's long since been replaced by using the secret undocumented JDK APIs for doing the same thing. AFAIK that works on all of our servers and we're not shipping libsignal.so with anything. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6225 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- build.xml | 14 +- .../presents/server/NativeSignalHandler.java | 69 ----- .../presents/server/PresentsServer.java | 6 +- .../threerings/util/signal/FreeBSD/Makefile | 45 --- ...com_threerings_util_signal_SignalManager.c | 96 ------ .../util/signal/FreeBSD/libsignal.so | Bin 6700 -> 0 bytes .../com/threerings/util/signal/Linux/Makefile | 45 --- ...com_threerings_util_signal_SignalManager.c | 1 - .../threerings/util/signal/Linux/libsignal.so | Bin 9594 -> 0 bytes .../threerings/util/signal/Mac OS X/Makefile | 45 --- ...com_threerings_util_signal_SignalManager.c | 1 - .../util/signal/Mac OS X/libsignal.jnilib | Bin 13580 -> 0 bytes .../threerings/util/signal/SignalManager.java | 277 ------------------ ...com_threerings_util_signal_SignalManager.h | 104 ------- 14 files changed, 3 insertions(+), 700 deletions(-) delete mode 100644 src/main/java/com/threerings/presents/server/NativeSignalHandler.java delete mode 100644 src/main/java/com/threerings/util/signal/FreeBSD/Makefile delete mode 100644 src/main/java/com/threerings/util/signal/FreeBSD/com_threerings_util_signal_SignalManager.c delete mode 100755 src/main/java/com/threerings/util/signal/FreeBSD/libsignal.so delete mode 100644 src/main/java/com/threerings/util/signal/Linux/Makefile delete mode 120000 src/main/java/com/threerings/util/signal/Linux/com_threerings_util_signal_SignalManager.c delete mode 100755 src/main/java/com/threerings/util/signal/Linux/libsignal.so delete mode 100644 src/main/java/com/threerings/util/signal/Mac OS X/Makefile delete mode 120000 src/main/java/com/threerings/util/signal/Mac OS X/com_threerings_util_signal_SignalManager.c delete mode 100755 src/main/java/com/threerings/util/signal/Mac OS X/libsignal.jnilib delete mode 100644 src/main/java/com/threerings/util/signal/SignalManager.java delete mode 100644 src/main/java/com/threerings/util/signal/com_threerings_util_signal_SignalManager.h diff --git a/build.xml b/build.xml index 22fe04d75..b60be861b 100644 --- a/build.xml +++ b/build.xml @@ -132,15 +132,6 @@ - - - - - - - - - + - + @@ -391,7 +382,6 @@ - diff --git a/src/main/java/com/threerings/presents/server/NativeSignalHandler.java b/src/main/java/com/threerings/presents/server/NativeSignalHandler.java deleted file mode 100644 index 638bf72e6..000000000 --- a/src/main/java/com/threerings/presents/server/NativeSignalHandler.java +++ /dev/null @@ -1,69 +0,0 @@ -// -// $Id$ -// -// Narya library - tools for developing networked games -// Copyright (C) 2002-2010 Three Rings Design, Inc., All Rights Reserved -// http://code.google.com/p/narya/ -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.threerings.presents.server; - -import com.threerings.util.signal.SignalManager; - -import static com.threerings.presents.Log.log; - -/** - * Handles signals using Narya's native libsignal. - */ -public class NativeSignalHandler extends AbstractSignalHandler - implements SignalManager.SignalHandler -{ - // from interface SignalManager.SignalHandler - public boolean signalReceived (int signo) - { - switch (signo) { - case SignalManager.SIGTERM: - termReceived(); - break; - case SignalManager.SIGINT: - intReceived(); - break; - case SignalManager.SIGHUP: - hupReceived(); - break; - case SignalManager.SIGUSR2: - usr2Received(); - break; - default: - log.warning("Received unknown signal", "signo", signo); - break; - } - return true; - } - - @Override - protected boolean registerHandlers () - { - if (!SignalManager.servicesAvailable()) { - return false; - } - SignalManager.registerSignalHandler(SignalManager.SIGTERM, this); - SignalManager.registerSignalHandler(SignalManager.SIGINT, this); - SignalManager.registerSignalHandler(SignalManager.SIGHUP, this); - SignalManager.registerSignalHandler(SignalManager.SIGUSR2, this); - return true; - } -} diff --git a/src/main/java/com/threerings/presents/server/PresentsServer.java b/src/main/java/com/threerings/presents/server/PresentsServer.java index a6bf25338..ee348e035 100644 --- a/src/main/java/com/threerings/presents/server/PresentsServer.java +++ b/src/main/java/com/threerings/presents/server/PresentsServer.java @@ -179,15 +179,11 @@ public class PresentsServer protected void registerSignalHandlers (Injector injector) { // register SIGTERM, SIGINT (ctrl-c) and a SIGHUP handlers - boolean registered = false; try { - registered = injector.getInstance(SunSignalHandler.class).init(); + injector.getInstance(SunSignalHandler.class).init(); } catch (Throwable t) { log.warning("Unable to register Sun signal handlers", "error", t); } - if (!registered) { - injector.getInstance(NativeSignalHandler.class).init(); - } } /** diff --git a/src/main/java/com/threerings/util/signal/FreeBSD/Makefile b/src/main/java/com/threerings/util/signal/FreeBSD/Makefile deleted file mode 100644 index ebdbbe0da..000000000 --- a/src/main/java/com/threerings/util/signal/FreeBSD/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id$ - -# -# Executable definitions - -CC=gcc -RM=rm -CP=cp -MKDIR=mkdir - -# -# Directory definitions - -ROOT=../../../../../../.. -LIBRARIES_PATH= -OSINCDIR!=uname -s | tr 'A-Z' 'a-z' -INSTALL_PATH=${ROOT}/dist/lib/i386-FreeBSD - -# -# Parameter and file definitions - -INCLUDES=-I.. -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OSINCDIR} -LIBRARIES= -TARGET=libsignal.so - -# -# Target definitions - -all: ${TARGET} - -install: - @${MKDIR} -p ${INSTALL_PATH} - cp ${TARGET} ${INSTALL_PATH} - -${TARGET}: com_threerings_util_signal_SignalManager.c - @echo "Compiling SignalManager.c" - @${CC} ${INCLUDES} -c com_threerings_util_signal_SignalManager.c \ - -o com_threerings_util_signal_SignalManager.o - @echo "Creating libsignal.so" - @${CC} -o ${TARGET} com_threerings_util_signal_SignalManager.o \ - ${LIBRARIES} ${LIBRARIES_PATH} -shared - -clean: - -${RM} -f *.o ${TARGET} diff --git a/src/main/java/com/threerings/util/signal/FreeBSD/com_threerings_util_signal_SignalManager.c b/src/main/java/com/threerings/util/signal/FreeBSD/com_threerings_util_signal_SignalManager.c deleted file mode 100644 index e8113cf77..000000000 --- a/src/main/java/com/threerings/util/signal/FreeBSD/com_threerings_util_signal_SignalManager.c +++ /dev/null @@ -1,96 +0,0 @@ -/** - * $Id$ - */ - -#include -#include -#include -#include - -#include -#include "com_threerings_util_signal_SignalManager.h" - -static int writefd; - -typedef void (*sighandler_t)(int); -static sighandler_t old_handlers[64]; -static sighandler_t handlers[64]; - -static void -signal_handler (int signo) -{ - write(writefd, &signo, sizeof(signo)); - signal(SIGINT, signal_handler); -} - -/** - * Class: com_threerings_util_signal_SignalManager - * Method: activateHandler - * Signature: (I)V - */ -JNIEXPORT void JNICALL -Java_com_threerings_util_signal_SignalManager_activateHandler ( - JNIEnv* env, jclass clazz, jint signo) -{ - old_handlers[signo] = signal(signo, signal_handler); - if (old_handlers[signo] == SIG_ERR) { - fprintf(stderr, "Error setting signal handler (%d): %s\n", - signo, strerror(errno)); - old_handlers[signo] = 0; - } else { - handlers[signo] = signal_handler; - } -} - -/** - * Class: com_threerings_util_signal_SignalManager - * Method: deactivateHandler - * Signature: (I)V - */ -JNIEXPORT void JNICALL -Java_com_threerings_util_signal_SignalManager_deactivateHandler ( - JNIEnv* env, jclass clazz, jint signo) -{ - if (old_handlers[signo] != 0) { - signal(signo, old_handlers[signo]); - old_handlers[signo] = 0; - handlers[signo] = 0; - } -} - -/** - * Class: com_threerings_util_signal_SignalManager - * Method: dispatchSignals - * Signature: ()V - */ -JNIEXPORT void JNICALL -Java_com_threerings_util_signal_SignalManager_dispatchSignals ( - JNIEnv* env, jclass clazz) -{ - int filedes[2], readfd; - jint signo; - jmethodID mid = (*env)->GetStaticMethodID( - env, clazz, "signalReceived", "(I)V"); - - if (pipe(filedes) < 0) { - fprintf(stderr, "Failed to create signal pipe: %s\n", strerror(errno)); - return; - } - readfd = filedes[0]; - writefd = filedes[1]; - - while (1) { - int got = read(readfd, &signo, sizeof(int)); - if (got < 0) { - fprintf(stderr, "Signal pipe read failed: %s\n", strerror(errno)); - } else if (got == 0) { - fprintf(stderr, "Signal pipe read returned zero bytes.\n"); - } else { - if (signo < 0 || signo >= 64 || handlers[signo] == 0) { - fprintf(stderr, "Received bogus signal (%d).\n", signo); - } else { - (*env)->CallStaticVoidMethod(env, clazz, mid, signo); - } - } - } -} diff --git a/src/main/java/com/threerings/util/signal/FreeBSD/libsignal.so b/src/main/java/com/threerings/util/signal/FreeBSD/libsignal.so deleted file mode 100755 index c9ded61ebd03d460a75feca15ff1012a22b27617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6700 zcmeHLZEO_B8J_bwi9;aaD}kgfT~cW6mYi*32ytBkm@^phVPS(>QFnE|Tl~y3F|t(BN>!^MksnlzDir!7lB3F!Q5sZK(JEExp9%@JvW11*3PmV#dwrhS zne%c63TmbP=_}1X^UV9s=e|2L`@Rz2+Y*UH9u-QWA}S)tS5*no0KD{gplA>VG}U62 zSSj_&T*Af0LNGlg7a5;H1MP{)E(zl{lOd za;n6aNj_2H%O%&3s8}H`YXW3#E|up4NjG+htlbNWPg9~$$zAFzXzRo=ye4KQW9eF-m_ z4uG=gBX03Em$urf{3WJqoi5Usw1; zg+Eq!PT_>YKPbGWa86+a&cuFN6&_W1R^f*VXB2*_koyDcT~=6u_9~EHNi>Amtned+ zUnk-)*o^wbw-k1<90$fWa^TwvJ(NdqI2-^c{zBm;h1`}{KFIpmJ33eocwXV}6g~ty zmaiqpf%F~XS|QG%>|q=(za-)?d7oG<#0SJ0Ax;Ayf&LvL^k<3Cze|LE>W`TG)c2x7 zOp4-p?#ab7Tn|d|4EM-1v(s0LkTd-1(^OAimYgSKnuXI7lJgWy^D%u6{Lsi>+Wncz zDR6P*)yW~8uS4T<)5@FvxZHTXW&X_K;`uGGo*Ko&zp%96Hz89HCnmgABcJ$^RTeML z7w510;|AOGmZS2hzYXSXQ)W>6L!TW)3Y~KoC(HWh`RqwcROWnGqDe_U~RD+d#dJQ(+UFT!iUXu*pOs@KwpZf|bBF*dH}`PF=JTNY|h`NwC) zzzRHHdSyu=KFc@6i(!5Z`YGmT)8>LY)17byxiruh^D}x`8gM<5%QD>r1L>=W+x3@n z7=%6krP#0C;~P2LvyufY2+^Sl@H#yE_6D}eY=OaCaJ7K=IB-mk!KinP_pyuN2L z|6BC=XQUfQ|3q3KyPBIDjp|+d57ijY#~NZAjU&p-I=N;IbuVn(BE)~sDCQ3KdWkL( z!-Xfnw9cgyZd$}rgISma=s6LY5a;T1*43xRvUMuS@Sed&P@E?(Wz;{faVB)`3uLrnCcaKH4W#*iI-j>%B< z=mPAQcFjm^o4(9{2_}wL3+*Udk+dEE(U{t#CV0?}sTE1v@!yT$TO6%8;yzX}h`^FG9i#zpuJY>gz%;CG(y%w_Lzvme2^q8P3jf&f_*R1VON`2sg}Fc&iwH}! z6zS4>+>}ES#ajxmdnNwOpAG5BxesX}FSl>fN+9*Sfc!ov5yV>fUF%p&L_8sq;5t?l z!O6?-O2=Lz@Dv}M|7?^9cBnUi^k?=P!F=hzI#yHxkN+9?1?c&6Lj8NdVfA5BUp~HH zLH}B4e7^zL_W+LX3V3*Ye+3VZ@9*FZ*qbP9zbdpK_p^TG_BCboJHUCH=eo1~B=}W~ zm){ZR_ifta?|}rhf}O9Gm(%xG-2dsDBPT9Gkj9y%Gah5!$oJMQz@7YVUDJ7frl#;G%70?5wp_ zGEWX=pIk}f7p_r>Z2`smA8o|TH#qjoB1_GEHhiHs?4L1rR9AaY$tt)v&*D1s2kJi zPL+ouYdT{1fB~`pFrZc*j++ngmB%IJ#a71Kf&ilq0Ny=dsbYsgATkKjg`;yp^izfH Y?i?m%0Pg|UqbxvZ-XTDG=TPdu0By-0dH?_b diff --git a/src/main/java/com/threerings/util/signal/Linux/Makefile b/src/main/java/com/threerings/util/signal/Linux/Makefile deleted file mode 100644 index 0143ab94e..000000000 --- a/src/main/java/com/threerings/util/signal/Linux/Makefile +++ /dev/null @@ -1,45 +0,0 @@ -# -# $Id: Makefile 3328 2005-02-03 01:16:12Z mdb $ - -# -# Executable definitions - -CC=gcc -RM=rm -CP=cp -MKDIR=mkdir - -# -# Directory definitions - -ROOT=../../../../../../.. -LIBRARIES_PATH= -OSINCDIR:=$(shell uname -s | tr 'A-Z' 'a-z') -INSTALL_PATH=${ROOT}/dist/lib/i686-Linux - -# -# Parameter and file definitions - -INCLUDES=-I.. -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OSINCDIR} -LIBRARIES= -TARGET=libsignal.so - -# -# Target definitions - -all: ${TARGET} - -install: - @${MKDIR} -p ${INSTALL_PATH} - cp ${TARGET} ${INSTALL_PATH} - -${TARGET}: com_threerings_util_signal_SignalManager.c - @echo "Compiling SignalManager.c" - @${CC} ${INCLUDES} -c com_threerings_util_signal_SignalManager.c \ - -o com_threerings_util_signal_SignalManager.o - @echo "Creating libsignal.so" - @${CC} -o ${TARGET} com_threerings_util_signal_SignalManager.o \ - ${LIBRARIES} ${LIBRARIES_PATH} -shared - -clean: - -${RM} -f *.o ${TARGET} diff --git a/src/main/java/com/threerings/util/signal/Linux/com_threerings_util_signal_SignalManager.c b/src/main/java/com/threerings/util/signal/Linux/com_threerings_util_signal_SignalManager.c deleted file mode 120000 index 8e15e94bd..000000000 --- a/src/main/java/com/threerings/util/signal/Linux/com_threerings_util_signal_SignalManager.c +++ /dev/null @@ -1 +0,0 @@ -../FreeBSD/com_threerings_util_signal_SignalManager.c \ No newline at end of file diff --git a/src/main/java/com/threerings/util/signal/Linux/libsignal.so b/src/main/java/com/threerings/util/signal/Linux/libsignal.so deleted file mode 100755 index 769b3dbb5e363ad149cb062441467925ac450294..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9594 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 diff --git a/src/main/java/com/threerings/util/signal/SignalManager.java b/src/main/java/com/threerings/util/signal/SignalManager.java deleted file mode 100644 index 535ec4947..000000000 --- a/src/main/java/com/threerings/util/signal/SignalManager.java +++ /dev/null @@ -1,277 +0,0 @@ -// -// $Id$ -// -// Narya library - tools for developing networked games -// Copyright (C) 2002-2010 Three Rings Design, Inc., All Rights Reserved -// http://code.google.com/p/narya/ -// -// This library is free software; you can redistribute it and/or modify it -// under the terms of the GNU Lesser General Public License as published -// by the Free Software Foundation; either version 2.1 of the License, or -// (at your option) any later version. -// -// This library 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 -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -package com.threerings.util.signal; - -import com.samskivert.util.HashIntMap; -import com.samskivert.util.ObserverList; - -import static com.threerings.NaryaLog.log; - -/** - * Uses native code to catch Unix signals and invoke callbacks on a separate signal handler thread. - * If the native library cannot be loaded, signal handlers will be allowed to be registered but - * will never be called. - */ -public class SignalManager -{ - /* Hangup (POSIX). */ - public static final int SIGHUP = 1; - - /* Interrupt (ANSI). */ - public static final int SIGINT = 2; - - /* Quit (POSIX). */ - public static final int SIGQUIT = 3; - - /* Illegal instruction (ANSI). */ - public static final int SIGILL = 4; - - /* Trace trap (POSIX). */ - public static final int SIGTRAP = 5; - - /* Abort (ANSI). */ - public static final int SIGABRT = 6; - - /* IOT trap (4.2 BSD). */ - public static final int SIGIOT = 6; - - /* BUS error (4.2 BSD). */ - public static final int SIGBUS = 7; - - /* Floating-point exception (ANSI). */ - public static final int SIGFPE = 8; - - /* Kill, unblockable (POSIX). */ - public static final int SIGKILL = 9; - - /* User-defined signal 1 (POSIX). */ - public static final int SIGUSR1 = 10; - - /* Segmentation violation (ANSI). */ - public static final int SIGSEGV = 11; - - /* User-defined signal 2 (POSIX). */ - public static final int SIGUSR2 = 12; - - /* Broken pipe (POSIX). */ - public static final int SIGPIPE = 13; - - /* Alarm clock (POSIX). */ - public static final int SIGALRM = 14; - - /* Termination (ANSI). */ - public static final int SIGTERM = 15; - - /* Stack fault. */ - public static final int SIGSTKFLT = 16; - - /* Child status has changed (POSIX). */ - public static final int SIGCHLD = 17; - - /* Continue (POSIX). */ - public static final int SIGCONT = 18; - - /* Stop, unblockable (POSIX). */ - public static final int SIGSTOP = 19; - - /* Keyboard stop (POSIX). */ - public static final int SIGTSTP = 20; - - /* Background read from tty (POSIX). */ - public static final int SIGTTIN = 21; - - /* Background write to tty (POSIX). */ - public static final int SIGTTOU = 22; - - /* Urgent condition on socket (4.2 BSD). */ - public static final int SIGURG = 23; - - /* CPU limit exceeded (4.2 BSD). */ - public static final int SIGXCPU = 24; - - /* File size limit exceeded (4.2 BSD). */ - public static final int SIGXFSZ = 25; - - /* Virtual alarm clock (4.2 BSD). */ - public static final int SIGVTALRM = 26; - - /* Profiling alarm clock (4.2 BSD). */ - public static final int SIGPROF = 27; - - /* Window size change (4.3 BSD, Sun). */ - public static final int SIGWINCH = 28; - - /* I/O now possible (4.2 BSD). */ - public static final int SIGIO = 29; - - /* Pollable event occurred (System V). */ - public static final int SIGPOLL = SIGIO; - - /* Power failure restart (System V). */ - public static final int SIGPWR = 30; - - /* Bad system call. */ - public static final int SIGSYS = 31; - - /** Used to dispatch signal notifications. */ - public static interface SignalHandler - { - /** - * Called when the specified signal is received. - * - * @return true if the signal handler should remain registered, false if it should be - * removed. - */ - boolean signalReceived (int signal); - } - - /** - * Returns true if signal dispatching services are available, false if we could not load our - * native library. - */ - public static boolean servicesAvailable () - { - return _haveLibrary; - } - - /** - * Registers a signal handler for the specified signal. - */ - public synchronized static void registerSignalHandler (int signal, SignalHandler handler) - { - ObserverList list = _handlers.get(signal); - if (list == null) { - _handlers.put(signal, list = new ObserverList( - ObserverList.SAFE_IN_ORDER_NOTIFY)); - if (_haveLibrary) { - activateHandler(signal); - } - } - list.add(handler); - - // make sure the signal dispatcher thread is started - if (_haveLibrary && _sigdis == null) { - _sigdis = new Thread("SignalDispatcher") { - @Override - public void run () { - log.info("Dispatching signals..."); - dispatchSignals(); - } - }; - _sigdis.setDaemon(true); - _sigdis.start(); - } - } - - /** - * Removes the registration for the specified signal handler. - */ - public synchronized static void removeSignalHandler (int signal, SignalHandler handler) - { - ObserverList list = _handlers.get(signal); - if (list == null || !list.contains(handler)) { - log.warning("Requested to remove non-registered handler", "signal", signal, - "handler", handler); - return; - } - list.remove(handler); - checkEmpty(signal); - } - - /** - * Called by native code when a signal is received. - */ - protected synchronized static void signalReceived (final int signal) - { - // this is hack, but we seem to get a call to our signal handler for each thread if the - // user presses ctrl-c in the terminal, so we "collapse" those into one call back - long now = System.currentTimeMillis(); - if (signal == SIGINT) { - if (now - _lastINTed < 10) { - return; - } else { - _lastINTed = now; - } - } - ObserverList list = _handlers.get(signal); - if (list != null) { - list.apply(new ObserverList.ObserverOp() { - public boolean apply (SignalHandler handler) { - return handler.signalReceived(signal); - } - }); - } - checkEmpty(signal); - } - - /** - * Called when a signal handler is removed. - */ - protected static void checkEmpty (int signal) - { - ObserverList list = _handlers.get(signal); - if (list != null && list.size() == 0) { - _handlers.remove(signal); - if (_haveLibrary) { - deactivateHandler(signal); - } - } - } - - /** - * Activates the signal handler for the specified signal. - */ - protected static native void activateHandler (int signal); - - /** - * Deactivates the signal handler for the specified signal. - */ - protected static native void deactivateHandler (int signal); - - /** - * Consigns a Java thread to the task of dispatching signal handler callbacks. - */ - protected static native void dispatchSignals (); - - /** A mapping from signal number to a list of handlers. */ - protected static HashIntMap> _handlers = - new HashIntMap>(); - - /** Our signal dispatcher thread. */ - protected static Thread _sigdis; - - /** Set to true if we successfully load our native library. */ - protected static boolean _haveLibrary; - - /** Used to collapse bogus multiple delivery of SIGINT when the user pressed ctrl-c in the - * console. */ - protected static long _lastINTed = 0L; - - static { - try { - System.loadLibrary("signal"); - _haveLibrary = true; - } catch (Throwable t) { - log.info("Could not load libsignal.so; signal handling disabled."); - } - } -} diff --git a/src/main/java/com/threerings/util/signal/com_threerings_util_signal_SignalManager.h b/src/main/java/com/threerings/util/signal/com_threerings_util_signal_SignalManager.h deleted file mode 100644 index afb53a0aa..000000000 --- a/src/main/java/com/threerings/util/signal/com_threerings_util_signal_SignalManager.h +++ /dev/null @@ -1,104 +0,0 @@ -/* DO NOT EDIT THIS FILE - it is machine generated */ -#include -/* Header for class com_threerings_util_signal_SignalManager */ - -#ifndef _Included_com_threerings_util_signal_SignalManager -#define _Included_com_threerings_util_signal_SignalManager -#ifdef __cplusplus -extern "C" { -#endif -#undef com_threerings_util_signal_SignalManager_SIGHUP -#define com_threerings_util_signal_SignalManager_SIGHUP 1L -#undef com_threerings_util_signal_SignalManager_SIGINT -#define com_threerings_util_signal_SignalManager_SIGINT 2L -#undef com_threerings_util_signal_SignalManager_SIGQUIT -#define com_threerings_util_signal_SignalManager_SIGQUIT 3L -#undef com_threerings_util_signal_SignalManager_SIGILL -#define com_threerings_util_signal_SignalManager_SIGILL 4L -#undef com_threerings_util_signal_SignalManager_SIGTRAP -#define com_threerings_util_signal_SignalManager_SIGTRAP 5L -#undef com_threerings_util_signal_SignalManager_SIGABRT -#define com_threerings_util_signal_SignalManager_SIGABRT 6L -#undef com_threerings_util_signal_SignalManager_SIGIOT -#define com_threerings_util_signal_SignalManager_SIGIOT 6L -#undef com_threerings_util_signal_SignalManager_SIGBUS -#define com_threerings_util_signal_SignalManager_SIGBUS 7L -#undef com_threerings_util_signal_SignalManager_SIGFPE -#define com_threerings_util_signal_SignalManager_SIGFPE 8L -#undef com_threerings_util_signal_SignalManager_SIGKILL -#define com_threerings_util_signal_SignalManager_SIGKILL 9L -#undef com_threerings_util_signal_SignalManager_SIGUSR1 -#define com_threerings_util_signal_SignalManager_SIGUSR1 10L -#undef com_threerings_util_signal_SignalManager_SIGSEGV -#define com_threerings_util_signal_SignalManager_SIGSEGV 11L -#undef com_threerings_util_signal_SignalManager_SIGUSR2 -#define com_threerings_util_signal_SignalManager_SIGUSR2 12L -#undef com_threerings_util_signal_SignalManager_SIGPIPE -#define com_threerings_util_signal_SignalManager_SIGPIPE 13L -#undef com_threerings_util_signal_SignalManager_SIGALRM -#define com_threerings_util_signal_SignalManager_SIGALRM 14L -#undef com_threerings_util_signal_SignalManager_SIGTERM -#define com_threerings_util_signal_SignalManager_SIGTERM 15L -#undef com_threerings_util_signal_SignalManager_SIGSTKFLT -#define com_threerings_util_signal_SignalManager_SIGSTKFLT 16L -#undef com_threerings_util_signal_SignalManager_SIGCHLD -#define com_threerings_util_signal_SignalManager_SIGCHLD 17L -#undef com_threerings_util_signal_SignalManager_SIGCONT -#define com_threerings_util_signal_SignalManager_SIGCONT 18L -#undef com_threerings_util_signal_SignalManager_SIGSTOP -#define com_threerings_util_signal_SignalManager_SIGSTOP 19L -#undef com_threerings_util_signal_SignalManager_SIGTSTP -#define com_threerings_util_signal_SignalManager_SIGTSTP 20L -#undef com_threerings_util_signal_SignalManager_SIGTTIN -#define com_threerings_util_signal_SignalManager_SIGTTIN 21L -#undef com_threerings_util_signal_SignalManager_SIGTTOU -#define com_threerings_util_signal_SignalManager_SIGTTOU 22L -#undef com_threerings_util_signal_SignalManager_SIGURG -#define com_threerings_util_signal_SignalManager_SIGURG 23L -#undef com_threerings_util_signal_SignalManager_SIGXCPU -#define com_threerings_util_signal_SignalManager_SIGXCPU 24L -#undef com_threerings_util_signal_SignalManager_SIGXFSZ -#define com_threerings_util_signal_SignalManager_SIGXFSZ 25L -#undef com_threerings_util_signal_SignalManager_SIGVTALRM -#define com_threerings_util_signal_SignalManager_SIGVTALRM 26L -#undef com_threerings_util_signal_SignalManager_SIGPROF -#define com_threerings_util_signal_SignalManager_SIGPROF 27L -#undef com_threerings_util_signal_SignalManager_SIGWINCH -#define com_threerings_util_signal_SignalManager_SIGWINCH 28L -#undef com_threerings_util_signal_SignalManager_SIGIO -#define com_threerings_util_signal_SignalManager_SIGIO 29L -#undef com_threerings_util_signal_SignalManager_SIGPOLL -#define com_threerings_util_signal_SignalManager_SIGPOLL 29L -#undef com_threerings_util_signal_SignalManager_SIGPWR -#define com_threerings_util_signal_SignalManager_SIGPWR 30L -#undef com_threerings_util_signal_SignalManager_SIGSYS -#define com_threerings_util_signal_SignalManager_SIGSYS 31L -/* Inaccessible static: _handlers */ -/* - * Class: com_threerings_util_signal_SignalManager - * Method: activateHandler - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_com_threerings_util_signal_SignalManager_activateHandler - (JNIEnv *, jclass, jint); - -/* - * Class: com_threerings_util_signal_SignalManager - * Method: deactivateHandler - * Signature: (I)V - */ -JNIEXPORT void JNICALL Java_com_threerings_util_signal_SignalManager_deactivateHandler - (JNIEnv *, jclass, jint); - -/* - * Class: com_threerings_util_signal_SignalManager - * Method: dispatchSignals - * Signature: ()V - */ -JNIEXPORT void JNICALL Java_com_threerings_util_signal_SignalManager_dispatchSignals - (JNIEnv *, jclass); - -#ifdef __cplusplus -} -#endif -#endif