* configure.ac (AC_CHECK_HEADERS): Added signal.h.
authorChristian Thalinger <twisti@complang.tuwien.ac.at>
Fri, 8 Aug 2008 11:35:13 +0000 (13:35 +0200)
committerChristian Thalinger <twisti@complang.tuwien.ac.at>
Fri, 8 Aug 2008 11:35:13 +0000 (13:35 +0200)
(AC_CHECK_FUNCS): str2sig.
* src/native/vm/openjdk/jvm.cpp (JVM_FindSignal) [__SOLARIS__]:
Implemented.
* src/vm/os.hpp [HAVE_SIGNAL_H] (signal.h): Added.
(os): Added str2sig.
(os::str2sig): New function.

configure.ac
src/native/vm/openjdk/jvm.cpp
src/vm/os.hpp

index 81de2d367a05d5fb92d9212d658393f64684d16c..0e56e87579f9398d58cb881bb62ab4036a1f1e33 100644 (file)
@@ -255,6 +255,7 @@ AC_CHECK_HEADERS([errno.h])
 AC_CHECK_HEADERS([fcntl.h])
 AC_CHECK_HEADERS([libgen.h])
 AC_CHECK_HEADERS([netdb.h])
+AC_CHECK_HEADERS([signal.h])
 AC_CHECK_HEADERS([stdint.h])
 AC_CHECK_HEADERS([stdio.h])
 AC_CHECK_HEADERS([stdlib.h])
@@ -347,6 +348,7 @@ AC_CHECK_FUNCS([setsockopt])
 AC_CHECK_FUNCS([shutdown])
 AC_CHECK_FUNCS([socket])
 AC_CHECK_FUNCS([stat])
+AC_CHECK_FUNCS([str2sig])
 AC_CHECK_FUNCS([strcat])
 AC_CHECK_FUNCS([strchr])
 AC_CHECK_FUNCS([strcpy])
index 4c94dafe596390ee60b29f9326fa0a7e0cd766bd..8a7a1d768d8a80b3124c725e1dfe34eebd1303fe 100644 (file)
@@ -3604,8 +3604,15 @@ jint JVM_FindSignal(const char *name)
 
        if (strcmp(name, "TERM") == 0)
                return SIGTERM;
+#elif defined(__SOLARIS__)
+       int signum;
+
+       if (os::str2sig(name, &signum) == -1)
+               return -1;
+
+       return signum;
 #else
-# error not implemented for this OS
+# error Not implemented for this OS.
 #endif
 
        return -1;
index a214c8ebb262da5775d1ed255e1cb1ffabe9c1f5..fc1849ea3417465eee567839fb7d40088a8cbe58 100644 (file)
 # endif
 #endif
 
+#if defined(HAVE_SIGNAL_H)
+# include <signal.h>
+#endif
+
 #if defined(HAVE_STDINT_H)
 # include <stdint.h>
 #endif
@@ -128,6 +132,7 @@ public:
        static inline int    shutdown(int s, int how);
        static inline int    socket(int domain, int type, int protocol);
        static inline int    stat(const char* path, struct stat* buf);
+       static inline int    str2sig(const char* str, int* signum);
        static inline char*  strcat(char* dest, const char* src);
        static inline char*  strcpy(char* dest, const char* src);
        static inline char*  strdup(const char* s);
@@ -480,6 +485,15 @@ inline int os::stat(const char* path, struct stat* buf)
 #endif
 }
 
+inline int os::str2sig(const char* str, int* signum)
+{
+#if defined(HAVE_STR2SIG)
+       return ::str2sig(str, signum);
+#else
+# error str2sig not available
+#endif
+}
+
 inline char* os::strcat(char* dest, const char* src)
 {
 #if defined(HAVE_STRCAT)