jdk/src/jdk.hprof.agent/share/native/libhprof/hprof_error.h
changeset 32249 ba2c9c7773b6
parent 32248 13967da712ff
parent 32247 9f3dd33507b9
child 32253 637b00638ed6
equal deleted inserted replaced
32248:13967da712ff 32249:ba2c9c7773b6
     1 /*
       
     2  * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
       
     3  *
       
     4  * Redistribution and use in source and binary forms, with or without
       
     5  * modification, are permitted provided that the following conditions
       
     6  * are met:
       
     7  *
       
     8  *   - Redistributions of source code must retain the above copyright
       
     9  *     notice, this list of conditions and the following disclaimer.
       
    10  *
       
    11  *   - Redistributions in binary form must reproduce the above copyright
       
    12  *     notice, this list of conditions and the following disclaimer in the
       
    13  *     documentation and/or other materials provided with the distribution.
       
    14  *
       
    15  *   - Neither the name of Oracle nor the names of its
       
    16  *     contributors may be used to endorse or promote products derived
       
    17  *     from this software without specific prior written permission.
       
    18  *
       
    19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
       
    20  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
       
    21  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    22  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
       
    23  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    24  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    25  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    26  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
       
    27  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
       
    28  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
       
    29  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       
    30  */
       
    31 
       
    32 /*
       
    33  * This source code is provided to illustrate the usage of a given feature
       
    34  * or technique and has been deliberately simplified. Additional steps
       
    35  * required for a production-quality application, such as security checks,
       
    36  * input validation and proper error handling, might not be present in
       
    37  * this sample code.
       
    38  */
       
    39 
       
    40 
       
    41 #ifndef HPROF_ERROR_H
       
    42 #define HPROF_ERROR_H
       
    43 
       
    44 /* Use THIS_FILE when it is available. */
       
    45 #ifndef THIS_FILE
       
    46     #define THIS_FILE __FILE__
       
    47 #endif
       
    48 
       
    49 /* Macros over assert and error functions so we can capture the source loc. */
       
    50 
       
    51 #define HPROF_BOOL(x) ((jboolean)((x)==0?JNI_FALSE:JNI_TRUE))
       
    52 
       
    53 #define HPROF_ERROR(fatal,msg) \
       
    54     error_handler(HPROF_BOOL(fatal), JVMTI_ERROR_NONE, msg, THIS_FILE, __LINE__)
       
    55 
       
    56 #define HPROF_JVMTI_ERROR(error,msg) \
       
    57     error_handler(HPROF_BOOL(error!=JVMTI_ERROR_NONE), \
       
    58             error, msg, THIS_FILE, __LINE__)
       
    59 
       
    60 #if defined(DEBUG) || !defined(NDEBUG)
       
    61     #define HPROF_ASSERT(cond) \
       
    62         (((int)(cond))?(void)0:error_assert(#cond, THIS_FILE, __LINE__))
       
    63 #else
       
    64     #define HPROF_ASSERT(cond)
       
    65 #endif
       
    66 
       
    67 #define LOG_DUMP_MISC           0x1 /* Misc. logging info */
       
    68 #define LOG_DUMP_LISTS          0x2 /* Dump tables at vm init and death */
       
    69 #define LOG_CHECK_BINARY        0x4 /* If format=b, verify binary format */
       
    70 
       
    71 #ifdef HPROF_LOGGING
       
    72     #define LOG_STDERR(args) \
       
    73         { \
       
    74             if ( gdata != NULL && (gdata->logflags & LOG_DUMP_MISC) ) { \
       
    75                 (void)fprintf args ; \
       
    76             } \
       
    77         }
       
    78 #else
       
    79     #define LOG_STDERR(args)
       
    80 #endif
       
    81 
       
    82 #define LOG_FORMAT(format)      "HPROF LOG: " format " [%s:%d]\n"
       
    83 
       
    84 #define LOG1(str1)              LOG_STDERR((stderr, LOG_FORMAT("%s"), \
       
    85                                     str1, THIS_FILE, __LINE__ ))
       
    86 #define LOG2(str1,str2)         LOG_STDERR((stderr, LOG_FORMAT("%s %s"), \
       
    87                                     str1, str2, THIS_FILE, __LINE__ ))
       
    88 #define LOG3(str1,str2,num)     LOG_STDERR((stderr, LOG_FORMAT("%s %s 0x%x"), \
       
    89                                     str1, str2, num, THIS_FILE, __LINE__ ))
       
    90 
       
    91 #define LOG(str) LOG1(str)
       
    92 
       
    93 void       error_handler(jboolean fatal, jvmtiError error,
       
    94                 const char *message, const char *file, int line);
       
    95 void       error_assert(const char *condition, const char *file, int line);
       
    96 void       error_exit_process(int exit_code);
       
    97 void       error_do_pause(void);
       
    98 void       error_setup(void);
       
    99 void       debug_message(const char * format, ...);
       
   100 void       verbose_message(const char * format, ...);
       
   101 
       
   102 #endif