[vmkit-commits] [PATCH] Add (minimal) signal support regarding JVM_FindSignal, JVM_RegisterSignal

Will Dietz wdietz2 at illinois.edu
Thu Nov 3 07:32:59 PDT 2011


Inlined below.

Thanks!

~Will

>From b61e5572ad53bf8c518c0ba458942d0696ad20e8 Mon Sep 17 00:00:00 2001
From: Will Dietz <w at wdtz.org>
Date: Wed, 2 Nov 2011 22:41:45 -0500
Subject: [PATCH 12/17] Add (minimal) signal support regarding JVM_FindSignal,
 JVM_RegisterSignal

---
 lib/J3/ClassLib/OpenJDK/OpenJDK.inc |   28 ++++++++++++++++++++++++++--
 1 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
index bb11f0d..48ffce9 100644
--- a/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
+++ b/lib/J3/ClassLib/OpenJDK/OpenJDK.inc
@@ -1781,7 +1781,8 @@ JVM_GetStackAccessControlContext(JNIEnv *env,
jclass cls) {

 JNIEXPORT void * JNICALL
 JVM_RegisterSignal(jint sig, void *handler) {
-  NYI();
+  // Don't let signals be registered, yet.
+  return (void*)-1;
 }

 JNIEXPORT jboolean JNICALL
@@ -1791,7 +1792,30 @@ JVM_RaiseSignal(jint sig) {

 JNIEXPORT jint JNICALL
 JVM_FindSignal(const char *name) {
-  NYI();
+  // Map Signal name to integer...
+  static struct {
+    const char * name;
+    int num;
+  } SignalMap[] =
+  {
+    { "TERM", SIGTERM },
+    { "HUP", SIGHUP },
+    { "INT", SIGINT }
+  };
+  static uint32 signal_count = sizeof(SignalMap)/sizeof(SignalMap[0]);
+
+  BEGIN_JNI_EXCEPTION
+
+  for(uint32 i = 0; i < signal_count; ++i) {
+    if (!strcmp(name, SignalMap[i].name))
+      RETURN_FROM_JNI(SignalMap[i].num);
+  }
+
+  fprintf(stderr, "Unknown Signal \"%s\", missing entry in table?\n", name);
+
+  END_JNI_EXCEPTION
+
+  return 0;
 }

 /*
-- 
1.7.5.1



More information about the vmkit-commits mailing list