summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--NEWS3
-rw-r--r--configure.ac2
-rw-r--r--examples/gnu/classpath/examples/management/TestOS.java1
-rw-r--r--gnu/java/lang/management/OperatingSystemMXBeanImpl.java5
-rw-r--r--include/Makefile.am3
-rw-r--r--include/gnu_java_awt_peer_gtk_CairoGraphics2D.h2
-rw-r--r--include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h19
-rw-r--r--java/lang/management/OperatingSystemMXBean.java16
-rw-r--r--native/jni/java-lang/Makefile.am4
-rw-r--r--native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c60
-rw-r--r--vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java68
12 files changed, 201 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 7477af871..867dd709f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2006-12-26 Andrew John Hughes <gnu_andrew@member.fsf.org>
+
+ * 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.
+
2006-12-25 Andrew John Hughes <gnu_andrew@member.fsf.org>
* NEWS:
diff --git a/NEWS b/NEWS
index 90e3effb0..d43a0796c 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/configure.ac b/configure.ac
index cda0074db..80e75f340 100644
--- a/configure.ac
+++ b/configure.ac
@@ -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)
diff --git a/examples/gnu/classpath/examples/management/TestOS.java b/examples/gnu/classpath/examples/management/TestOS.java
index a13e514f8..fe09346fd 100644
--- a/examples/gnu/classpath/examples/management/TestOS.java
+++ b/examples/gnu/classpath/examples/management/TestOS.java
@@ -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());
}
}
diff --git a/gnu/java/lang/management/OperatingSystemMXBeanImpl.java b/gnu/java/lang/management/OperatingSystemMXBeanImpl.java
index 9eefc0d9d..07fb7bf03 100644
--- a/gnu/java/lang/management/OperatingSystemMXBeanImpl.java
+++ b/gnu/java/lang/management/OperatingSystemMXBeanImpl.java
@@ -82,6 +82,11 @@ public final class OperatingSystemMXBeanImpl
return System.getProperty("os.name");
}
+ public double getSystemLoadAverage()
+ {
+ return VMOperatingSystemMXBeanImpl.getSystemLoadAverage();
+ }
+
public String getVersion()
{
return System.getProperty("os.version");
diff --git a/include/Makefile.am b/include/Makefile.am
index b69b0ef73..962564d12 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -135,6 +135,7 @@ $(top_srcdir)/include/gnu_java_nio_VMPipe.h \
$(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_VMPipe.h: $(top_srcdir)/vm/reference/gnu/java
$(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
diff --git a/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h b/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
index 8ecba86ab..6d252340a 100644
--- a/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
+++ b/include/gnu_java_awt_peer_gtk_CairoGraphics2D.h
@@ -41,10 +41,10 @@ JNIEXPORT void JNICALL Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoFill (JNI
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
diff --git a/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h b/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h
new file mode 100644
index 000000000..3f35dad21
--- /dev/null
+++ b/include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h
@@ -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__ */
diff --git a/java/lang/management/OperatingSystemMXBean.java b/java/lang/management/OperatingSystemMXBean.java
index 2430a9fbf..ed38285a5 100644
--- a/java/lang/management/OperatingSystemMXBean.java
+++ b/java/lang/management/OperatingSystemMXBean.java
@@ -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 {@link System#getProperty(String)}.
diff --git a/native/jni/java-lang/Makefile.am b/native/jni/java-lang/Makefile.am
index 366d72e4c..74065814e 100644
--- a/native/jni/java-lang/Makefile.am
+++ b/native/jni/java-lang/Makefile.am
@@ -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_builddir)/native/fdlibm/*.lo) \
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@
diff --git a/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c b/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
new file mode 100644
index 000000000..68e89b36a
--- /dev/null
+++ b/native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c
@@ -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;
+}
diff --git a/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java b/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
new file mode 100644
index 000000000..20b3f9ed2
--- /dev/null
+++ b/vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java
@@ -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 (gnu_andrew@member.fsf.org)
+ * @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();
+
+}