hotspot/src/share/vm/services/jmm.h
changeset 17296 68557efd8583
parent 11209 110525ac80b0
child 21185 9d53434b1ef5
equal deleted inserted replaced
17093:04fc6db0518b 17296:68557efd8583
     1 /*
     1 /*
     2  * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    47   JMM_VERSION_1   = 0x20010000,
    47   JMM_VERSION_1   = 0x20010000,
    48   JMM_VERSION_1_0 = 0x20010000,
    48   JMM_VERSION_1_0 = 0x20010000,
    49   JMM_VERSION_1_1 = 0x20010100, // JDK 6
    49   JMM_VERSION_1_1 = 0x20010100, // JDK 6
    50   JMM_VERSION_1_2 = 0x20010200, // JDK 7
    50   JMM_VERSION_1_2 = 0x20010200, // JDK 7
    51   JMM_VERSION_1_2_1 = 0x20010201, // JDK 7 GA
    51   JMM_VERSION_1_2_1 = 0x20010201, // JDK 7 GA
    52   JMM_VERSION     = 0x20010202
    52   JMM_VERSION_1_2_2 = 0x20010202,
       
    53   JMM_VERSION     = 0x20010203
    53 };
    54 };
    54 
    55 
    55 typedef struct {
    56 typedef struct {
    56   unsigned int isLowMemoryDetectionSupported : 1;
    57   unsigned int isLowMemoryDetectionSupported : 1;
    57   unsigned int isCompilationTimeMonitoringSupported : 1;
    58   unsigned int isCompilationTimeMonitoringSupported : 1;
    60   unsigned int isOtherThreadCpuTimeSupported : 1;
    61   unsigned int isOtherThreadCpuTimeSupported : 1;
    61   unsigned int isBootClassPathSupported : 1;
    62   unsigned int isBootClassPathSupported : 1;
    62   unsigned int isObjectMonitorUsageSupported : 1;
    63   unsigned int isObjectMonitorUsageSupported : 1;
    63   unsigned int isSynchronizerUsageSupported : 1;
    64   unsigned int isSynchronizerUsageSupported : 1;
    64   unsigned int isThreadAllocatedMemorySupported : 1;
    65   unsigned int isThreadAllocatedMemorySupported : 1;
    65   unsigned int : 23;
    66   unsigned int isRemoteDiagnosticCommandsSupported : 1;
       
    67   unsigned int : 22;
    66 } jmmOptionalSupport;
    68 } jmmOptionalSupport;
    67 
    69 
    68 typedef enum {
    70 typedef enum {
    69   JMM_CLASS_LOADED_COUNT             = 1,    /* Total number of loaded classes */
    71   JMM_CLASS_LOADED_COUNT             = 1,    /* Total number of loaded classes */
    70   JMM_CLASS_UNLOADED_COUNT           = 2,    /* Total number of unloaded classes */
    72   JMM_CLASS_UNLOADED_COUNT           = 2,    /* Total number of unloaded classes */
   188   jint         num_gc_ext_attributes;          /* number of GC extension attribute values s are filled */
   190   jint         num_gc_ext_attributes;          /* number of GC extension attribute values s are filled */
   189                                                /* -1 indicates gc_ext_attribute_values is not big enough */
   191                                                /* -1 indicates gc_ext_attribute_values is not big enough */
   190 } jmmGCStat;
   192 } jmmGCStat;
   191 
   193 
   192 typedef struct {
   194 typedef struct {
   193   const char* name;
   195   const char* name;                /* Name of the diagnostic command */
   194   const char* description;
   196   const char* description;         /* Short description */
   195   const char* impact;
   197   const char* impact;              /* Impact on the JVM */
   196   int         num_arguments;
   198   const char* permission_class;    /* Class name of the required permission if any */
   197   jboolean    enabled;
   199   const char* permission_name;     /* Permission name of the required permission if any */
       
   200   const char* permission_action;   /* Action name of the required permission if any*/
       
   201   int         num_arguments;       /* Number of supported options or arguments */
       
   202   jboolean    enabled;             /* True if the diagnostic command can be invoked, false otherwise */
   198 } dcmdInfo;
   203 } dcmdInfo;
   199 
   204 
   200 typedef struct {
   205 typedef struct {
   201   const char* name;
   206   const char* name;                /* Option/Argument name*/
   202   const char* description;
   207   const char* description;         /* Short description */
   203   const char* type;
   208   const char* type;                /* Type: STRING, BOOLEAN, etc. */
   204   const char* default_string;
   209   const char* default_string;      /* Default value in a parsable string */
   205   jboolean    mandatory;
   210   jboolean    mandatory;           /* True if the option/argument is mandatory */
   206   jboolean    option;
   211   jboolean    option;              /* True if it is an option, false if it is an argument */
   207   int         position;
   212                                    /* (see diagnosticFramework.hpp for option/argument definitions) */
       
   213   jboolean    multiple;            /* True if the option can be specified several time */
       
   214   int         position;            /* Expected position for this argument (this field is */
       
   215                                    /* meaningless for options) */
   208 } dcmdArgInfo;
   216 } dcmdArgInfo;
   209 
   217 
   210 typedef struct jmmInterface_1_ {
   218 typedef struct jmmInterface_1_ {
   211   void*        reserved1;
   219   void*        reserved1;
   212   void*        reserved2;
   220   void*        reserved2;
   325                                                   jstring commandName,
   333                                                   jstring commandName,
   326                                                   dcmdArgInfo *infoArray);
   334                                                   dcmdArgInfo *infoArray);
   327   jstring      (JNICALL *ExecuteDiagnosticCommand)
   335   jstring      (JNICALL *ExecuteDiagnosticCommand)
   328                                                  (JNIEnv *env,
   336                                                  (JNIEnv *env,
   329                                                   jstring command);
   337                                                   jstring command);
       
   338   void         (JNICALL *SetDiagnosticFrameworkNotificationEnabled)
       
   339                                                  (JNIEnv *env,
       
   340                                                   jboolean enabled);
   330 } JmmInterface;
   341 } JmmInterface;
   331 
   342 
   332 #ifdef __cplusplus
   343 #ifdef __cplusplus
   333 } /* extern "C" */
   344 } /* extern "C" */
   334 #endif /* __cplusplus */
   345 #endif /* __cplusplus */