diff options
-rw-r--r-- | ChangeLog | 21 | ||||
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | examples/gnu/classpath/examples/management/TestOS.java | 1 | ||||
-rw-r--r-- | gnu/java/lang/management/OperatingSystemMXBeanImpl.java | 5 | ||||
-rw-r--r-- | include/Makefile.am | 3 | ||||
-rw-r--r-- | include/gnu_java_awt_peer_gtk_CairoGraphics2D.h | 2 | ||||
-rw-r--r-- | include/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.h | 19 | ||||
-rw-r--r-- | java/lang/management/OperatingSystemMXBean.java | 16 | ||||
-rw-r--r-- | native/jni/java-lang/Makefile.am | 4 | ||||
-rw-r--r-- | native/jni/java-lang/gnu_java_lang_management_VMOperatingSystemMXBeanImpl.c | 60 | ||||
-rw-r--r-- | vm/reference/gnu/java/lang/management/VMOperatingSystemMXBeanImpl.java | 68 |
12 files changed, 201 insertions, 3 deletions
@@ -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: @@ -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(); + +} |