public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [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).