* [ecj+jmx] FYI: Add native code for runtime bean
@ 2006-07-08 20:56 Andrew John Hughes
0 siblings, 0 replies; only message in thread
From: Andrew John Hughes @ 2006-07-08 20:56 UTC (permalink / raw)
To: java-patches
[-- Attachment #1.1: Type: text/plain, Size: 668 bytes --]
This patch adds the native VM runtime code to the
eclipse-gcj-jmx branch.
Changelog:
2006-07-07 Andrew John Hughes <gnu_andrew@member.fsf.org>
* sources.am, Makefile.in: Rebuilt.
* gnu/java/lang/management/VMRuntimeMXBeanImpl.java,
* gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc:
New files.
* include/jvm.h:
Add new variables used in prims.cc.
* Makefile.am:
Add natVMRuntimeMXBeanImpl.cc.
* prims.cc:
(_Jv_CreateJavaVM): Retain start time and input
arguments.
--
Andrew :-)
Escape the Java Trap with GNU Classpath!
http://www.gnu.org/philosophy/java-trap.html
public class gcj extends Freedom implements Java { ... }
[-- Attachment #1.2: runtime-01b.diff --]
[-- Type: text/plain, Size: 27079 bytes --]
Index: libjava/Makefile.in
===================================================================
--- libjava/Makefile.in (revision 115269)
+++ libjava/Makefile.in (working copy)
@@ -152,8 +152,9 @@ am__DEPENDENCIES_1 = gnu/awt.lo gnu/awt/
gnu/java/awt/font.lo gnu/java/awt/font/opentype.lo \
gnu/java/awt/font/opentype/truetype.lo gnu/java/awt/image.lo \
gnu/java/awt/java2d.lo gnu/java/awt/peer.lo gnu/java/io.lo \
- gnu/java/lang.lo gnu/java/lang/reflect.lo gnu/java/locale.lo \
- gnu/java/math.lo gnu/java/net.lo gnu/java/net/local.lo \
+ gnu/java/lang.lo gnu/java/lang/management.lo \
+ gnu/java/lang/reflect.lo gnu/java/locale.lo gnu/java/math.lo \
+ gnu/java/net.lo gnu/java/net/local.lo \
gnu/java/net/protocol/core.lo gnu/java/net/protocol/file.lo \
gnu/java/net/protocol/ftp.lo gnu/java/net/protocol/gcjlib.lo \
gnu/java/net/protocol/http.lo gnu/java/net/protocol/https.lo \
@@ -208,23 +209,23 @@ am__DEPENDENCIES_1 = gnu/awt.lo gnu/awt/
java/awt/image/renderable.lo java/awt/peer.lo \
java/awt/print.lo java/beans.lo java/beans/beancontext.lo \
java/io.lo java/lang.lo java/lang/annotation.lo \
- java/lang/instrument.lo java/lang/ref.lo java/lang/reflect.lo \
- java/math.lo java/net.lo java/nio.lo java/nio/channels.lo \
- java/nio/channels/spi.lo java/nio/charset.lo \
- java/nio/charset/spi.lo java/rmi.lo java/rmi/activation.lo \
- java/rmi/dgc.lo java/rmi/registry.lo java/rmi/server.lo \
- java/security.lo java/security/acl.lo java/security/cert.lo \
- java/security/interfaces.lo java/security/spec.lo java/sql.lo \
- java/text.lo java/util.lo java/util/jar.lo \
- java/util/logging.lo java/util/prefs.lo java/util/regex.lo \
- java/util/zip.lo javax/accessibility.lo javax/crypto.lo \
- javax/crypto/interfaces.lo javax/crypto/spec.lo \
- javax/management.lo javax/naming.lo javax/naming/directory.lo \
- javax/naming/event.lo javax/naming/ldap.lo javax/naming/spi.lo \
- javax/net.lo javax/net/ssl.lo javax/print.lo \
- javax/print/attribute.lo javax/print/attribute/standard.lo \
- javax/print/event.lo javax/security/auth.lo \
- javax/security/auth/callback.lo \
+ java/lang/instrument.lo java/lang/management.lo \
+ java/lang/ref.lo java/lang/reflect.lo java/math.lo java/net.lo \
+ java/nio.lo java/nio/channels.lo java/nio/channels/spi.lo \
+ java/nio/charset.lo java/nio/charset/spi.lo java/rmi.lo \
+ java/rmi/activation.lo java/rmi/dgc.lo java/rmi/registry.lo \
+ java/rmi/server.lo java/security.lo java/security/acl.lo \
+ java/security/cert.lo java/security/interfaces.lo \
+ java/security/spec.lo java/sql.lo java/text.lo java/util.lo \
+ java/util/jar.lo java/util/logging.lo java/util/prefs.lo \
+ java/util/regex.lo java/util/zip.lo javax/accessibility.lo \
+ javax/crypto.lo javax/crypto/interfaces.lo \
+ javax/crypto/spec.lo javax/management.lo javax/naming.lo \
+ javax/naming/directory.lo javax/naming/event.lo \
+ javax/naming/ldap.lo javax/naming/spi.lo javax/net.lo \
+ javax/net/ssl.lo javax/print.lo javax/print/attribute.lo \
+ javax/print/attribute/standard.lo javax/print/event.lo \
+ javax/security/auth.lo javax/security/auth/callback.lo \
javax/security/auth/kerberos.lo javax/security/auth/login.lo \
javax/security/auth/spi.lo javax/security/auth/x500.lo \
javax/security/cert.lo javax/security/sasl.lo \
@@ -264,6 +265,7 @@ am__libgcj_la_SOURCES_DIST = prims.cc jn
gnu/gcj/runtime/natSystemClassLoader.cc \
gnu/gcj/runtime/natStringBuffer.cc gnu/gcj/util/natDebug.cc \
gnu/java/lang/natMainThread.cc \
+ gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \
@@ -305,6 +307,7 @@ am__objects_2 = gnu/classpath/natSystemP
gnu/gcj/runtime/natSystemClassLoader.lo \
gnu/gcj/runtime/natStringBuffer.lo gnu/gcj/util/natDebug.lo \
gnu/java/lang/natMainThread.lo \
+ gnu/java/lang/management/natVMRuntimeMXBeanImpl.lo \
gnu/java/net/natPlainDatagramSocketImpl.lo \
gnu/java/net/natPlainSocketImpl.lo \
gnu/java/net/protocol/core/natCoreInputStream.lo \
@@ -477,6 +480,7 @@ GCSPEC = @GCSPEC@
GCTESTSPEC = @GCTESTSPEC@
GLIB_CFLAGS = @GLIB_CFLAGS@
GLIB_LIBS = @GLIB_LIBS@
+GREP = @GREP@
GTK_CAIRO_FALSE = @GTK_CAIRO_FALSE@
GTK_CAIRO_TRUE = @GTK_CAIRO_TRUE@
GTK_CFLAGS = @GTK_CFLAGS@
@@ -577,6 +581,7 @@ USING_WIN32_THREADS_TRUE = @USING_WIN32_
VERSION = @VERSION@
XLIB_AWT_FALSE = @XLIB_AWT_FALSE@
XLIB_AWT_TRUE = @XLIB_AWT_TRUE@
+XMKMF = @XMKMF@
X_CFLAGS = @X_CFLAGS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBS = @X_LIBS@
@@ -586,14 +591,8 @@ ZIP = @ZIP@
ZLIBS = @ZLIBS@
ZLIBSPEC = @ZLIBSPEC@
ZLIBTESTSPEC = @ZLIBTESTSPEC@
-ac_ct_AR = @ac_ct_AR@
-ac_ct_AS = @ac_ct_AS@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
-ac_ct_GCJ = @ac_ct_GCJ@
-ac_ct_LD = @ac_ct_LD@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@@ -613,7 +612,10 @@ build_os = @build_os@
build_subdir = @build_subdir@
build_vendor = @build_vendor@
datadir = @datadir@
+datarootdir = @datarootdir@
dbexecdir = @dbexecdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
extra_ldflags_libjava = @extra_ldflags_libjava@
gxx_include_dir = @gxx_include_dir@
@@ -624,6 +626,7 @@ host_cpu = @host_cpu@
host_os = @host_os@
host_subdir = @host_subdir@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@@ -631,13 +634,16 @@ libdir = @libdir@
libexecdir = @libexecdir@
libgcj_basedir = @libgcj_basedir@
libstdcxx_incdir = @libstdcxx_incdir@
+localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
mkinstalldirs = @mkinstalldirs@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
subdirs = @subdirs@
@@ -1513,6 +1519,12 @@ gnu/java/lang/MainThread.java \
gnu/java/lang/VMInstrumentationImpl.java
gnu_java_lang_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_source_files)))
+gnu_java_lang_management_source_files = \
+classpath/gnu/java/lang/management/OperatingSystemMXBeanImpl.java \
+classpath/gnu/java/lang/management/RuntimeMXBeanImpl.java \
+gnu/java/lang/management/VMRuntimeMXBeanImpl.java
+
+gnu_java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_management_source_files)))
gnu_java_lang_reflect_source_files = \
classpath/gnu/java/lang/reflect/ClassSignatureParser.java \
classpath/gnu/java/lang/reflect/FieldSignatureParser.java \
@@ -3879,6 +3891,13 @@ classpath/java/lang/instrument/Instrumen
classpath/java/lang/instrument/UnmodifiableClassException.java
java_lang_instrument_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_instrument_source_files)))
+java_lang_management_source_files = \
+classpath/java/lang/management/ManagementFactory.java \
+classpath/java/lang/management/ManagementPermission.java \
+classpath/java/lang/management/OperatingSystemMXBean.java \
+classpath/java/lang/management/RuntimeMXBean.java
+
+java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_management_source_files)))
java_lang_ref_source_files = \
classpath/java/lang/ref/PhantomReference.java \
java/lang/ref/Reference.java \
@@ -6550,6 +6569,7 @@ all_packages_source_files = \
gnu/java/awt/peer.list \
gnu/java/io.list \
gnu/java/lang.list \
+ gnu/java/lang/management.list \
gnu/java/lang/reflect.list \
gnu/java/locale.list \
gnu/java/math.list \
@@ -6662,6 +6682,7 @@ all_packages_source_files = \
java/lang.list \
java/lang/annotation.list \
java/lang/instrument.list \
+ java/lang/management.list \
java/lang/ref.list \
java/lang/reflect.list \
java/math.list \
@@ -6768,6 +6789,7 @@ ordinary_header_files = \
$(gnu_java_awt_peer_header_files) \
$(gnu_java_io_header_files) \
$(gnu_java_lang_header_files) \
+ $(gnu_java_lang_management_header_files) \
$(gnu_java_lang_reflect_header_files) \
$(gnu_java_locale_header_files) \
$(gnu_java_math_header_files) \
@@ -6880,6 +6902,7 @@ ordinary_header_files = \
$(java_lang_header_files) \
$(java_lang_annotation_header_files) \
$(java_lang_instrument_header_files) \
+ $(java_lang_management_header_files) \
$(java_lang_ref_header_files) \
$(java_lang_reflect_header_files) \
$(java_math_header_files) \
@@ -7081,6 +7104,7 @@ gnu/gcj/runtime/natSystemClassLoader.cc
gnu/gcj/runtime/natStringBuffer.cc \
gnu/gcj/util/natDebug.cc \
gnu/java/lang/natMainThread.cc \
+gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \
@@ -7424,6 +7448,15 @@ gnu/java/lang/$(DEPDIR)/$(am__dirstamp):
@: > gnu/java/lang/$(DEPDIR)/$(am__dirstamp)
gnu/java/lang/natMainThread.lo: gnu/java/lang/$(am__dirstamp) \
gnu/java/lang/$(DEPDIR)/$(am__dirstamp)
+gnu/java/lang/management/$(am__dirstamp):
+ @$(mkdir_p) gnu/java/lang/management
+ @: > gnu/java/lang/management/$(am__dirstamp)
+gnu/java/lang/management/$(DEPDIR)/$(am__dirstamp):
+ @$(mkdir_p) gnu/java/lang/management/$(DEPDIR)
+ @: > gnu/java/lang/management/$(DEPDIR)/$(am__dirstamp)
+gnu/java/lang/management/natVMRuntimeMXBeanImpl.lo: \
+ gnu/java/lang/management/$(am__dirstamp) \
+ gnu/java/lang/management/$(DEPDIR)/$(am__dirstamp)
gnu/java/net/$(am__dirstamp):
@$(mkdir_p) gnu/java/net
@: > gnu/java/net/$(am__dirstamp)
@@ -7774,6 +7807,8 @@ mostlyclean-compile:
-rm -f gnu/gcj/xlib/lib_gnu_awt_xlib_la-natXImage.lo
-rm -f gnu/gcj/xlib/lib_gnu_awt_xlib_la-natXUnmapEvent.$(OBJEXT)
-rm -f gnu/gcj/xlib/lib_gnu_awt_xlib_la-natXUnmapEvent.lo
+ -rm -f gnu/java/lang/management/natVMRuntimeMXBeanImpl.$(OBJEXT)
+ -rm -f gnu/java/lang/management/natVMRuntimeMXBeanImpl.lo
-rm -f gnu/java/lang/natMainThread.$(OBJEXT)
-rm -f gnu/java/lang/natMainThread.lo
-rm -f gnu/java/net/natPlainDatagramSocketImpl.$(OBJEXT)
@@ -7924,6 +7959,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/xlib/$(DEPDIR)/lib_gnu_awt_xlib_la-natXImage.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/gcj/xlib/$(DEPDIR)/lib_gnu_awt_xlib_la-natXUnmapEvent.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/lang/$(DEPDIR)/natMainThread.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/lang/management/$(DEPDIR)/natVMRuntimeMXBeanImpl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/net/$(DEPDIR)/natPlainDatagramSocketImpl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/net/$(DEPDIR)/natPlainSocketImpl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@gnu/java/net/protocol/core/$(DEPDIR)/natCoreInputStream.Plo@am__quote@
@@ -8193,6 +8229,7 @@ clean-libtool:
-rm -rf gnu/gcj/util/.libs gnu/gcj/util/_libs
-rm -rf gnu/gcj/xlib/.libs gnu/gcj/xlib/_libs
-rm -rf gnu/java/lang/.libs gnu/java/lang/_libs
+ -rm -rf gnu/java/lang/management/.libs gnu/java/lang/management/_libs
-rm -rf gnu/java/net/.libs gnu/java/net/_libs
-rm -rf gnu/java/net/protocol/core/.libs gnu/java/net/protocol/core/_libs
-rm -rf gnu/java/nio/.libs gnu/java/nio/_libs
@@ -8602,6 +8639,8 @@ distclean-generic:
-rm -f gnu/gcj/xlib/$(am__dirstamp)
-rm -f gnu/java/lang/$(DEPDIR)/$(am__dirstamp)
-rm -f gnu/java/lang/$(am__dirstamp)
+ -rm -f gnu/java/lang/management/$(DEPDIR)/$(am__dirstamp)
+ -rm -f gnu/java/lang/management/$(am__dirstamp)
-rm -f gnu/java/net/$(DEPDIR)/$(am__dirstamp)
-rm -f gnu/java/net/$(am__dirstamp)
-rm -f gnu/java/net/protocol/core/$(DEPDIR)/$(am__dirstamp)
@@ -8645,7 +8684,7 @@ clean-am: clean-binPROGRAMS clean-generi
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
- -rm -rf ./$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-local distclean-tags
@@ -8676,7 +8715,7 @@ installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
- -rm -rf ./$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR)
+ -rm -rf ./$(DEPDIR) gnu/classpath/$(DEPDIR) gnu/gcj/$(DEPDIR) gnu/gcj/convert/$(DEPDIR) gnu/gcj/io/$(DEPDIR) gnu/gcj/runtime/$(DEPDIR) gnu/gcj/tools/gcj_dbtool/$(DEPDIR) gnu/gcj/util/$(DEPDIR) gnu/gcj/xlib/$(DEPDIR) gnu/java/lang/$(DEPDIR) gnu/java/lang/management/$(DEPDIR) gnu/java/net/$(DEPDIR) gnu/java/net/protocol/core/$(DEPDIR) gnu/java/nio/$(DEPDIR) gnu/java/nio/channels/$(DEPDIR) java/io/$(DEPDIR) java/lang/$(DEPDIR) java/lang/ref/$(DEPDIR) java/lang/reflect/$(DEPDIR) java/net/$(DEPDIR) java/nio/$(DEPDIR) java/nio/channels/$(DEPDIR) java/text/$(DEPDIR) java/util/$(DEPDIR) java/util/logging/$(DEPDIR) java/util/zip/$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
@@ -8968,6 +9007,12 @@ gnu/java/lang.list: $(gnu_java_lang_sour
-include gnu/java/lang.deps
+gnu/java/lang/management.list: $(gnu_java_lang_management_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo classpath/lib/gnu/java/lang/management/*.class > gnu/java/lang/management.list
+
+-include gnu/java/lang/management.deps
+
gnu/java/lang/reflect.list: $(gnu_java_lang_reflect_source_files)
@$(mkinstalldirs) $(dir $@)
echo classpath/lib/gnu/java/lang/reflect/*.class > gnu/java/lang/reflect.list
@@ -9655,6 +9700,12 @@ java/lang/instrument.list: $(java_lang_i
-include java/lang/instrument.deps
+java/lang/management.list: $(java_lang_management_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo classpath/lib/java/lang/management/*.class > java/lang/management.list
+
+-include java/lang/management.deps
+
java/lang/ref.list: $(java_lang_ref_source_files)
@$(mkinstalldirs) $(dir $@)
echo classpath/lib/java/lang/ref/*.class > java/lang/ref.list
Index: libjava/gnu/java/lang/management/VMRuntimeMXBeanImpl.java
===================================================================
--- libjava/gnu/java/lang/management/VMRuntimeMXBeanImpl.java (revision 0)
+++ libjava/gnu/java/lang/management/VMRuntimeMXBeanImpl.java (revision 0)
@@ -0,0 +1,109 @@
+/* VMRuntimeMXBeanImpl.java - VM implementation of an runtime 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.SystemProperties;
+
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+
+/**
+ * Provides access to information about the virtual machine.
+ *
+ * @author Andrew John Hughes (gnu_andrew@member.fsf.org)
+ * @since 1.5
+ */
+final class VMRuntimeMXBeanImpl
+{
+
+ /**
+ * Returns the command-line arguments supplied
+ * to the virtual machine, excluding those supplied
+ * to <code>main()</code>.
+ *
+ * @return the command-line arguments.
+ */
+ static native String[] getInputArguments();
+
+ /**
+ * Returns a developer-chosen name for the virtual
+ * machine, which may differ over different running
+ * instances of the same virtual machine binary.
+ * For example, this may include the particular
+ * process identifier used by this instance or
+ * the host name of the machine on which it is
+ * running. The intention is that this name refers
+ * to the precise entity that the other data supplied
+ * by the bean refers to, rather than the VM in general.
+ *
+ * @return the custom name of the VM.
+ */
+ static String getName()
+ {
+ String hostName;
+ try
+ {
+ hostName = InetAddress.getLocalHost().getHostName();
+ }
+ catch (UnknownHostException e)
+ {
+ hostName = "Unknown host";
+ }
+ return SystemProperties.getProperty("java.vm.name") + " " +
+ SystemProperties.getProperty("java.vm.version") + " [" +
+ getPID() + "@" + hostName + "]";
+ }
+
+ /**
+ * The time in milliseconds at which the virtual
+ * machine was started. This method is only executed
+ * once (for efficency), as the value is not expected
+ * to change.
+ *
+ * @return the VM start time.
+ */
+ static native long getStartTime();
+
+ /**
+ * The process identifier of the runtime.
+ *
+ * @return the PID of the runtime.
+ */
+ private static native long getPID();
+
+}
Index: libjava/gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc
===================================================================
--- libjava/gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc (revision 0)
+++ libjava/gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc (revision 0)
@@ -0,0 +1,39 @@
+/* Copyright (C) 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+/**
+ * @author Andrew John Hughes <gnu_andrew@member.fsf.org>
+ * @date Wed 21 Jun 2006 */
+/* Written using online API docs for JDK 1.5 beta from http://java.sun.com.
+ * Status: Believed complete and correct.
+ */
+
+#include <config.h>
+
+#include <jvm.h>
+
+#include <unistd.h>
+
+#include <gnu/java/lang/management/VMRuntimeMXBeanImpl.h>
+
+JArray<jstring>* gnu::java::lang::management::VMRuntimeMXBeanImpl::getInputArguments()
+{
+ return ::gcj::vmArgs;
+}
+
+jlong gnu::java::lang::management::VMRuntimeMXBeanImpl::getStartTime()
+{
+ return ::gcj::startTime;
+}
+
+jlong gnu::java::lang::management::VMRuntimeMXBeanImpl::getPID()
+{
+ return getpid();
+}
+
+
Index: libjava/sources.am
===================================================================
--- libjava/sources.am (revision 115268)
+++ libjava/sources.am (working copy)
@@ -967,6 +967,20 @@ gnu/java/lang.list: $(gnu_java_lang_sour
-include gnu/java/lang.deps
+gnu_java_lang_management_source_files = \
+classpath/gnu/java/lang/management/OperatingSystemMXBeanImpl.java \
+classpath/gnu/java/lang/management/RuntimeMXBeanImpl.java \
+gnu/java/lang/management/VMRuntimeMXBeanImpl.java
+
+gnu_java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(gnu_java_lang_management_source_files)))
+
+gnu/java/lang/management.list: $(gnu_java_lang_management_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo classpath/lib/gnu/java/lang/management/*.class > gnu/java/lang/management.list
+
+-include gnu/java/lang/management.deps
+
+
gnu_java_lang_reflect_source_files = \
classpath/gnu/java/lang/reflect/ClassSignatureParser.java \
classpath/gnu/java/lang/reflect/FieldSignatureParser.java \
@@ -4244,6 +4258,21 @@ java/lang/instrument.list: $(java_lang_i
-include java/lang/instrument.deps
+java_lang_management_source_files = \
+classpath/java/lang/management/ManagementFactory.java \
+classpath/java/lang/management/ManagementPermission.java \
+classpath/java/lang/management/OperatingSystemMXBean.java \
+classpath/java/lang/management/RuntimeMXBean.java
+
+java_lang_management_header_files = $(patsubst classpath/%,%,$(patsubst %.java,%.h,$(java_lang_management_source_files)))
+
+java/lang/management.list: $(java_lang_management_source_files)
+ @$(mkinstalldirs) $(dir $@)
+ echo classpath/lib/java/lang/management/*.class > java/lang/management.list
+
+-include java/lang/management.deps
+
+
java_lang_ref_source_files = \
classpath/java/lang/ref/PhantomReference.java \
java/lang/ref/Reference.java \
@@ -7559,6 +7588,7 @@ all_packages_source_files = \
gnu/java/awt/peer.list \
gnu/java/io.list \
gnu/java/lang.list \
+ gnu/java/lang/management.list \
gnu/java/lang/reflect.list \
gnu/java/locale.list \
gnu/java/math.list \
@@ -7671,6 +7701,7 @@ all_packages_source_files = \
java/lang.list \
java/lang/annotation.list \
java/lang/instrument.list \
+ java/lang/management.list \
java/lang/ref.list \
java/lang/reflect.list \
java/math.list \
@@ -7777,6 +7808,7 @@ ordinary_header_files = \
$(gnu_java_awt_peer_header_files) \
$(gnu_java_io_header_files) \
$(gnu_java_lang_header_files) \
+ $(gnu_java_lang_management_header_files) \
$(gnu_java_lang_reflect_header_files) \
$(gnu_java_locale_header_files) \
$(gnu_java_math_header_files) \
@@ -7889,6 +7921,7 @@ ordinary_header_files = \
$(java_lang_header_files) \
$(java_lang_annotation_header_files) \
$(java_lang_instrument_header_files) \
+ $(java_lang_management_header_files) \
$(java_lang_ref_header_files) \
$(java_lang_reflect_header_files) \
$(java_math_header_files) \
Index: libjava/include/jvm.h
===================================================================
--- libjava/include/jvm.h (revision 115268)
+++ libjava/include/jvm.h (working copy)
@@ -233,6 +233,13 @@ namespace gcj
/* Thread stack size specified by the -Xss runtime argument. */
extern size_t stack_size;
+
+ /* The start time */
+ extern jlong startTime;
+
+ /* The VM arguments */
+ extern JArray<jstring>* vmArgs;
+
}
// This class handles all aspects of class preparation and linking.
Index: libjava/Makefile.am
===================================================================
--- libjava/Makefile.am (revision 115269)
+++ libjava/Makefile.am (working copy)
@@ -626,6 +626,7 @@ gnu/gcj/runtime/natSystemClassLoader.cc
gnu/gcj/runtime/natStringBuffer.cc \
gnu/gcj/util/natDebug.cc \
gnu/java/lang/natMainThread.cc \
+gnu/java/lang/management/natVMRuntimeMXBeanImpl.cc \
gnu/java/net/natPlainDatagramSocketImpl.cc \
gnu/java/net/natPlainSocketImpl.cc \
gnu/java/net/protocol/core/natCoreInputStream.cc \
Index: libjava/prims.cc
===================================================================
--- libjava/prims.cc (revision 115268)
+++ libjava/prims.cc (working copy)
@@ -1115,6 +1115,12 @@ namespace gcj
// Thread stack size specified by the -Xss runtime argument.
size_t stack_size = 0;
+
+ // Start time of the VM
+ jlong startTime = 0;
+
+ // Arguments passed to the VM
+ JArray<jstring>* vmArgs;
}
// We accept all non-standard options accepted by Sun's java command,
@@ -1405,6 +1411,7 @@ _Jv_CreateJavaVM (JvVMInitArgs* vm_args)
return -1;
runtimeInitialized = true;
+ startTime = _Jv_platform_gettimeofday();
jint result = parse_init_args (vm_args);
if (result < 0)
@@ -1509,6 +1516,18 @@ _Jv_RunMain (JvVMInitArgs *vm_args, jcla
fprintf (stderr, "libgcj: couldn't create virtual machine\n");
exit (1);
}
+
+ if (vm_args == NULL)
+ gcj::vmArgs = JvConvertArgv(0, NULL);
+ else
+ {
+ const char* vmArgs[vm_args->nOptions];
+ const char** vmPtr = vmArgs;
+ struct _Jv_VMOption* optionPtr = vm_args->options;
+ for (int i = 0; i < vm_args->nOptions; ++i)
+ *vmPtr++ = (*optionPtr++).optionString;
+ gcj::vmArgs = JvConvertArgv(vm_args->nOptions, vmArgs);
+ }
// Get the Runtime here. We want to initialize it before searching
// for `main'; that way it will be set up if `main' is a JNI method.
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-07-08 20:56 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-07-08 20:56 [ecj+jmx] FYI: Add native code for runtime bean Andrew John Hughes
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).