jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java
changeset 43662 6b16a26de895
parent 43661 c3f1a529d829
parent 43593 06bce0388880
child 43663 4416065868c1
--- a/jdk/src/jdk.jvmstat/share/classes/sun/jvmstat/perfdata/monitor/v1_0/PerfDataBufferPrologue.java	Fri Feb 03 09:28:13 2017 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,209 +0,0 @@
-/*
- * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code 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
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package sun.jvmstat.perfdata.monitor.v1_0;
-
-import sun.jvmstat.monitor.*;
-import sun.jvmstat.perfdata.monitor.*;
-import java.nio.*;
-
-/**
- * Class representing the 1.0 version of the HotSpot PerfData instrumentation
- * buffer header.
- * <p>
- * The PerfDataBufferPrologue2_0 class supports parsing of the version
- * specific portions of the PerfDataPrologue C structure:
- * <pre>
- * typedef struct {
- *   ...                      // handled by superclass
- *   jint used;               // number of PerfData memory bytes used
- *   jint overflow;           // number of bytes of overflow
- *   jlong mod_time_stamp;    // time stamp of the last structural modification
- * } PerfDataPrologue
- * </pre>
- *
- * @author Brian Doherty
- * @since 1.5
- */
-public class PerfDataBufferPrologue extends AbstractPerfDataBufferPrologue {
-
-    private static final int SUPPORTED_MAJOR_VERSION = 1;
-    private static final int SUPPORTED_MINOR_VERSION = 0;
-
-    /*
-     * the following constants must match the field offsets and sizes
-     * in the PerfDataPrologue structure in perfMemory.hpp
-     */
-    final static int PERFDATA_PROLOG_USED_OFFSET=8;
-    final static int PERFDATA_PROLOG_USED_SIZE=4;              // sizeof(int)
-    final static int PERFDATA_PROLOG_OVERFLOW_OFFSET=12;
-    final static int PERFDATA_PROLOG_OVERFLOW_SIZE=4;          // sizeof(int)
-    final static int PERFDATA_PROLOG_MODTIMESTAMP_OFFSET=16;
-    final static int PERFDATA_PROLOG_MODTIMESTAMP_SIZE=8;      // sizeof(long)
-    final static int PERFDATA_PROLOG_SIZE=24;  // sizeof(struct PerfDataProlog)
-
-    // counter names for prologue psuedo counters
-    final static String PERFDATA_BUFFER_SIZE_NAME  = "sun.perfdata.size";
-    final static String PERFDATA_BUFFER_USED_NAME  = "sun.perfdata.used";
-    final static String PERFDATA_OVERFLOW_NAME     = "sun.perfdata.overflow";
-    final static String PERFDATA_MODTIMESTAMP_NAME = "sun.perfdata.timestamp";
-
-    /**
-     * Create an instance of PerfDataBufferPrologue from the given
-     * ByteBuffer object.
-     *
-     * @param byteBuffer the buffer containing the binary header data
-     */
-    public PerfDataBufferPrologue(ByteBuffer byteBuffer)
-           throws MonitorException  {
-        super(byteBuffer);
-        assert ((getMajorVersion() == 1) && (getMinorVersion() == 0));
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean supportsAccessible() {
-        return false;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public boolean isAccessible() {
-        return true;
-    }
-
-    /**
-     * Get the utilization of the instrumentation memory buffer.
-     *
-     * @return int - the utilization of the buffer
-     */
-    public int getUsed() {
-        byteBuffer.position(PERFDATA_PROLOG_USED_OFFSET);
-        return byteBuffer.getInt();
-    }
-
-    /**
-     * Get the size of the instrumentation memory buffer.
-     *
-     * @return int - the size of the buffer
-     */
-    public int getBufferSize() {
-        return byteBuffer.capacity();
-    }
-
-    /**
-     * Get the buffer overflow amount. This value is non-zero if the
-     * HotSpot JVM has overflowed the instrumentation memory buffer.
-     * The target JVM can be restarted with -XX:PerfDataMemSize=X to
-     * create a larger memory buffer.
-     *
-     * @return int - the size of the buffer
-     */
-    public int getOverflow() {
-        byteBuffer.position(PERFDATA_PROLOG_OVERFLOW_OFFSET);
-        return byteBuffer.getInt();
-    }
-
-    /**
-     * Get the time of last modification for the instrumentation
-     * memory buffer. This method returns the time, as ticks since the
-     * start of the target JVM, of the last structural modification to
-     * the instrumentation buffer. Structural modifications correspond to
-     * the addition or deletion of instrumentation objects. Updates to
-     * counter values are not structural modifications.
-     */
-    public long getModificationTimeStamp() {
-        byteBuffer.position(PERFDATA_PROLOG_MODTIMESTAMP_OFFSET);
-        return byteBuffer.getLong();
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    public int getSize() {
-        return PERFDATA_PROLOG_SIZE;  // sizeof(struct PerfDataProlog)
-    }
-
-    /**
-     * Return an IntBuffer that accesses the used value. This is used
-     * to create a Monitor object for this value.
-     *
-     * @return IntBuffer - a ByteBuffer that accesses the used value
-     *                     in the instrumentation buffer header.
-     * @see #getUsed()
-     */
-    public IntBuffer usedBuffer() {
-        byteBuffer.position(PERFDATA_PROLOG_USED_OFFSET);
-        IntBuffer ib = byteBuffer.asIntBuffer();
-        ib.limit(1);
-        return ib;
-    }
-
-    /**
-     * Return an IntBuffer that accesses the size value. This is used
-     * to create a Monitor object for this value.
-     *
-     * @return IntBuffer - a ByteBuffer that accesses the size value
-     *                     in the instrumentation buffer header.
-     * @see #getBufferSize()
-     */
-    public IntBuffer sizeBuffer() {
-        IntBuffer ib = IntBuffer.allocate(1);
-        ib.put(byteBuffer.capacity());
-        return ib;
-    }
-
-    /**
-     * Return an IntBuffer that accesses the overflow value. This is used
-     * to create a Monitor object for this value.
-     *
-     * @return IntBuffer - a ByteBuffer that accesses the overflow value
-     *                     in the instrumentation buffer header.
-     * @see #getOverflow()
-     */
-    public IntBuffer overflowBuffer() {
-        byteBuffer.position(PERFDATA_PROLOG_OVERFLOW_OFFSET);
-        IntBuffer ib = byteBuffer.asIntBuffer();
-        ib.limit(1);
-        return ib;
-    }
-
-    /**
-     * Return an LongBuffer that accesses the modification timestamp value.
-     * This is used* to create a Monitor object for this value.
-     *
-     * @return LongBuffer - a ByteBuffer that accesses the modification time
-     *                      stamp value in the instrumentation buffer header.
-     * @see #getModificationTimeStamp()
-     */
-    public LongBuffer modificationTimeStampBuffer() {
-        byteBuffer.position(PERFDATA_PROLOG_MODTIMESTAMP_OFFSET);
-        LongBuffer lb = byteBuffer.asLongBuffer();
-        lb.limit(1);
-        return lb;
-    }
-}