From 78a3416947c6700d8e2868fbbd16308ff0583952 Mon Sep 17 00:00:00 2001 From: Greg Lewis Date: Mon, 2 Feb 2009 07:35:54 +0000 Subject: . Implement the virtual machine interface for BSD. This allows jmap -histo and jmap -dump to work. Submitted by: Brian Gardner Sponsored by: Experts Exchange --- .../files/patch-j2se-attach-BSDAttachProvider.java | 44 ++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java (limited to 'java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java') diff --git a/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java b/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java new file mode 100644 index 000000000000..fa3c3e31c0af --- /dev/null +++ b/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java @@ -0,0 +1,44 @@ +$FreeBSD$ + +--- ../../j2se/src/solaris/classes/sun/tools/attach/BSDAttachProvider.java 10 May 2007 05:38:51 -0000 1.1 ++++ ../../j2se/src/solaris/classes/sun/tools/attach/BSDAttachProvider.java 2 Feb 2009 00:27:30 -0000 +@@ -14,7 +14,7 @@ + import java.io.IOException; + + /* +- * An AttachProvider implementation for Linux that uses a UNIX domain ++ * An AttachProvider implementation for BSD that uses a UNIX domain + * socket. + */ + public class BSDAttachProvider extends HotSpotAttachProvider { +@@ -36,12 +36,28 @@ + public VirtualMachine attachVirtualMachine(String vmid) + throws AttachNotSupportedException, IOException + { +- throw new AttachNotSupportedException("Attach not yet supported on BSD"); ++ if (isNotAttachable(vmid)) { ++ throw new AttachNotSupportedException("can only attach to Java SE 6.0 or newer"); ++ } ++ return new BSDVirtualMachine(this, vmid); + } + + public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) + throws AttachNotSupportedException, IOException + { +- throw new AttachNotSupportedException("Attach not yet supported on BSD"); ++ if (vmd.provider() != this) { ++ throw new AttachNotSupportedException("provider mismatch"); ++ } ++ // To avoid re-checking if the VM if attachable, we check if the descriptor ++ // is for a hotspot VM - these descriptors are created by the listVirtualMachines ++ // implementation which only returns a list of attachable VMs. ++ if (vmd instanceof HotSpotVirtualMachineDescriptor) { ++ assert ((HotSpotVirtualMachineDescriptor)vmd).isAttachable(); ++ checkAttachPermission(); ++ return new BSDVirtualMachine(this, vmd.id()); ++ } else { ++ return attachVirtualMachine(vmd.id()); ++ } + } ++ + } -- cgit v1.2.3