This patch completes java.lang.management to the level of Java 1.6 by adding support for obtaining the load average via the OS bean.
Changelog:
2006-12-26 Andrew John Hughes <[EMAIL PROTECTED]>
* NEWS: Mention 1.6 support for java.lang.management
* configure.ac: Check for getloadavg.
* examples/gnu/classpath/examples/management/TestOS.java:
Print system load average.
* gnu/java/lang/management/OperatingSystemMXBeanImpl.java:
(getSystemLoadAverage()): Implemented.
* include/Makefile.am: Add new header.
* include/gnu_java_awt_peer_gtk_CairoGraphics2D.h:
Regenerated.
* include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h:
Generated.
* java/lang/management/OperatingSystemMXBean.java:
(getSystemLoadAverage()): Implemented.
* native/jni/java-lang/Makefile.am: Add new native code.
*
native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c:
New file.
*
vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java:
Likewise.
--
Andrew :-)
Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
public class gcj extends Freedom implements Java { ... }
Index: NEWS
===================================================================
RCS file: /cvsroot/classpath/classpath/NEWS,v
retrieving revision 1.176
diff -u -3 -p -u -r1.176 NEWS
--- NEWS 26 Dec 2006 00:03:58 -0000 1.176
+++ NEWS 26 Dec 2006 02:29:11 -0000
@@ -5,6 +5,9 @@ New in release 0.94 (UNRELEASED)
* The setReadTimeout and getReadTimeout methods have been added to
java.net.URLConnection. They are now fully implemented for http URLs.
+* The java.lang.management implementation now includes the new features
+ added in 1.6
+
Runtime interface changes:
* gnu.java.lang.management.VMThreadMXBeanImpl has gained three new
Index: configure.ac
===================================================================
RCS file: /cvsroot/classpath/classpath/configure.ac,v
retrieving revision 1.192
diff -u -3 -p -u -r1.192 configure.ac
--- configure.ac 10 Dec 2006 20:25:40 -0000 1.192
+++ configure.ac 26 Dec 2006 02:29:12 -0000
@@ -377,7 +377,7 @@ if test "x${COMPILE_JNI}" = xyes; then
lstat readlink \
inet_aton inet_addr inet_pton \
getifaddrs kqueue kevent epoll_create \
- readdir_r ])
+ readdir_r getloadavg])
LIBMAGIC=
AC_CHECK_LIB(magic, magic_open, LIBMAGIC=-lmagic)
Index: examples/gnu/classpath/examples/management/TestOS.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/examples/gnu/classpath/examples/management/TestOS.java,v
retrieving revision 1.1
diff -u -3 -p -u -r1.1 TestOS.java
--- examples/gnu/classpath/examples/management/TestOS.java 1 Jul 2006
13:47:22 -0000 1.1
+++ examples/gnu/classpath/examples/management/TestOS.java 26 Dec 2006
02:29:12 -0000
@@ -33,5 +33,6 @@ public class TestOS
System.out.println("OS Version: " + osBean.getVersion());
System.out.println("Architecture: " + osBean.getArch());
System.out.println("Processors: " + osBean.getAvailableProcessors());
+ System.out.println("System Load Average: " +
osBean.getSystemLoadAverage());
}
}
Index: gnu/java/lang/management/OperatingSystemMXBeanImpl.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/gnu/java/lang/management/OperatingSystemMXBeanImpl.java,v
retrieving revision 1.3
diff -u -3 -p -u -r1.3 OperatingSystemMXBeanImpl.java
--- gnu/java/lang/management/OperatingSystemMXBeanImpl.java 29 Jul 2006
14:05:59 -0000 1.3
+++ gnu/java/lang/management/OperatingSystemMXBeanImpl.java 26 Dec 2006
02:29:12 -0000
@@ -82,6 +82,11 @@ public final class OperatingSystemMXBean
return System.getProperty("os.name");
}
+ public double getSystemLoadAverage()
+ {
+ return VMOperatingSystemMXBeanImpl.getSystemLoadAverage();
+ }
+
public String getVersion()
{
return System.getProperty("os.version");
Index: include/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/include/Makefile.am,v
retrieving revision 1.72
diff -u -3 -p -u -r1.72 Makefile.am
--- include/Makefile.am 25 Oct 2006 00:33:26 -0000 1.72
+++ include/Makefile.am 26 Dec 2006 02:29:13 -0000
@@ -135,6 +135,7 @@ $(top_srcdir)/include/gnu_java_nio_VMPip
$(top_srcdir)/include/gnu_java_nio_VMSelector.h \
$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvEncoder.h \
$(top_srcdir)/include/gnu_java_nio_charset_iconv_IconvDecoder.h \
+$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h \
$(top_srcdir)/include/java_io_VMFile.h \
$(top_srcdir)/include/java_io_VMObjectInputStream.h \
$(top_srcdir)/include/java_io_VMObjectStreamClass.h \
@@ -189,6 +190,8 @@ $(top_srcdir)/include/gnu_java_nio_VMPip
$(JAVAH) -o $@ gnu.java.nio.VMPipe
$(top_srcdir)/include/gnu_java_nio_VMSelector.h:
$(top_srcdir)/vm/reference/gnu/java/nio/VMSelector.java
$(JAVAH) -o $@ gnu.java.nio.VMSelector
+$(top_srcdir)/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h:
$(top_srcdir)/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
+ $(JAVAH) -o $@ gnu.java.lang.management.VMOperatingSystemMXBeanImpl
$(top_srcdir)/include/java_io_VMFile.h:
$(top_srcdir)/vm/reference/java/io/VMFile.java
$(JAVAH) -o $@ java.io.VMFile
$(top_srcdir)/include/java_io_VMObjectInputStream.h:
$(top_srcdir)/vm/reference/java/io/VMObjectInputStream.java
Index: include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
===================================================================
RCS file:
/cvsroot/classpath/classpath/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h,v
retrieving revision 1.15
diff -u -3 -p -u -r1.15 gnu_java_awt_peer_gtk_CairoGraphics2D.h
--- include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 15 Dec 2006 21:21:04
-0000 1.15
+++ include/gnu_java_awt_peer_gtk_CairoGraphics2D.h 26 Dec 2006 02:29:13
-0000
@@ -41,10 +41,10 @@ JNIEXPORT void JNICALL Java_gnu_java_awt
JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoClip
(JNIEnv *env, jobject, jlong);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoPreserveClip (JNIEnv *env,
jobject, jlong);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoResetClip (JNIEnv *env,
jobject, jlong);
+JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias (JNIEnv *env,
jobject, jlong, jboolean);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawLine (JNIEnv *env, jobject,
jlong, jdouble, jdouble, jdouble, jdouble);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawRect (JNIEnv *env, jobject,
jlong, jdouble, jdouble, jdouble, jdouble);
JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFillRect (JNIEnv *env, jobject,
jlong, jdouble, jdouble, jdouble, jdouble);
-JNIEXPORT void JNICALL
Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetAntialias (JNIEnv *env,
jobject, jlong, jboolean);
#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST
#define gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_NEAREST 0L
#undef gnu_java_awt_peer_gtk_CairoGraphics2D_INTERPOLATION_BILINEAR
Index: include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h
===================================================================
RCS file: include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h
diff -N include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h 26 Dec
2006 02:29:13 -0000
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#ifndef __gnu_java_lang_management_VMOperatingSystemMXBeanImpl__
+#define __gnu_java_lang_management_VMOperatingSystemMXBeanImpl__
+
+#include <jni.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT jdouble JNICALL
Java_gnu_java_lang_management_VMOperatingSystemMXBeanImpl_getSystemLoadAverage
(JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __gnu_java_lang_management_VMOperatingSystemMXBeanImpl__ */
Index: java/lang/management/OperatingSystemMXBean.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/java/lang/management/OperatingSystemMXBean.java,v
retrieving revision 1.2
diff -u -3 -p -u -r1.2 OperatingSystemMXBean.java
--- java/lang/management/OperatingSystemMXBean.java 26 Jun 2006 20:56:58
-0000 1.2
+++ java/lang/management/OperatingSystemMXBean.java 26 Dec 2006 02:29:15
-0000
@@ -87,6 +87,22 @@ public interface OperatingSystemMXBean
String getName();
/**
+ * Returns the system load average for the last minute, or -1
+ * if this is unavailable. The availability and calculation
+ * of the load average is system-dependent, but is usually
+ * a damped time-dependent average obtained by monitoring the
+ * number of queued and running processes. It is expected
+ * that this method will be called frequently to monitor the
+ * average over time, so it may not be implemented on systems
+ * where such a call is expensive.
+ *
+ * @return the system load average for the last minute, or -1
+ * if this is unavailable.
+ * @since 1.6
+ */
+ double getSystemLoadAverage();
+
+ /**
* Returns the version of the underlying operating system. This
* is equivalent to obtaining the <code>os.version</code> property
* via [EMAIL PROTECTED] System#getProperty(String)}.
Index: native/jni/java-lang/Makefile.am
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/java-lang/Makefile.am,v
retrieving revision 1.18
diff -u -3 -p -u -r1.18 Makefile.am
--- native/jni/java-lang/Makefile.am 21 Aug 2006 23:34:45 -0000 1.18
+++ native/jni/java-lang/Makefile.am 26 Dec 2006 02:29:15 -0000
@@ -1,4 +1,4 @@
-nativeexeclib_LTLIBRARIES = libjavalang.la libjavalangreflect.la
+nativeexeclib_LTLIBRARIES = libjavalang.la libjavalangreflect.la
libjavalangmanagement.la
libjavalang_la_SOURCES = java_lang_VMSystem.c \
java_lang_VMFloat.c \
@@ -12,6 +12,8 @@ libjavalang_la_LIBADD = $(wildcard $(top
libjavalangreflect_la_SOURCES = java_lang_reflect_VMArray.c
+libjavalangmanagement_la_SOURCES =
gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
+
AM_LDFLAGS = @CLASSPATH_MODULE@
AM_CPPFLAGS = @CLASSPATH_INCLUDES@ -I$(top_srcdir)/native/fdlibm
AM_CFLAGS = @WARNING_CFLAGS@ @STRICT_WARNING_CFLAGS@ @ERROR_CFLAGS@
Index:
native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
===================================================================
RCS file:
native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
diff -N
native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
26 Dec 2006 02:29:15 -0000
@@ -0,0 +1,60 @@
+/* VMOperatingSystemMXBeanImpl.c - gnu.java.lang.management native functions
+ Copyright (C) 2006
+ Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+#include <config.h>
+#include <stdlib.h>
+
+#include "gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h"
+
+/*
+ * Class: gnu_java_lang_management_VMOperatingSystemMXBeanImpl
+ * Method: getSystemLoadAverage
+ * Signature: ()D
+ */
+JNIEXPORT jdouble JNICALL
+Java_gnu_java_lang_management_VMOperatingSystemMXBeanImpl_getSystemLoadAverage
(JNIEnv * env __attribute__ ((__unused__)), jclass cls __attribute__
((__unused__)))
+{
+#ifdef HAVE_GETLOADAVG
+ double avg[1];
+ int nos = getloadavg(avg, 1);
+ if (nos == 1)
+ return avg[0];
+ else
+#endif
+ return -1;
+}
Index: vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
===================================================================
RCS file: vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
diff -N vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
26 Dec 2006 02:29:19 -0000
@@ -0,0 +1,68 @@
+/* VMOperatingSystemMXBeanImpl.java - VM implementation of an OS bean
+ Copyright (C) 2006 Free Software Foundation
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+package gnu.java.lang.management;
+
+import gnu.classpath.Configuration;
+
+/**
+ * Provides access to information about the operating system.
+ *
+ * @author Andrew John Hughes ([EMAIL PROTECTED])
+ * @since 1.6
+ */
+final class VMOperatingSystemMXBeanImpl
+{
+
+ static
+ {
+ if (Configuration.INIT_LOAD_LIBRARY)
+ {
+ System.loadLibrary("javalangmanagement");
+ }
+ }
+
+ /**
+ * Returns the system load average from the last
+ * minute.
+ *
+ * @return the system load average from the last
+ * minute.
+ */
+ static native double getSystemLoadAverage();
+
+}
signature.asc
Description: Digital signature
