Home | History | Annotate | Download | only in inc
      1 /*
      2  * Copyright (C) 2011 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 /**
     17  ************************************************************************
     18  * @file         M4OSA_Debug.h
     19  * @brief        Debug and Trace Macro
     20  ************************************************************************
     21 */
     22 
     23 
     24 #ifndef _M4OSA_DEBUG_H_
     25 #define _M4OSA_DEBUG_H_
     26 
     27 #include "M4OSA_Error.h"
     28 #include "M4OSA_Types.h"
     29 
     30 
     31 /* defaut value, defined only if not defined already. */
     32 #ifndef M4TRACE_ID
     33 #define M4TRACE_ID M4UNKNOWN_COREID
     34 #endif /* M4TRACE_ID undefined */
     35 
     36 
     37 #define M4OSA_SUPER_DEBUG_LEVEL 0
     38 
     39 #ifndef M4OSA_DEBUG_LEVEL
     40 #define M4OSA_DEBUG_LEVEL       0
     41 #endif
     42 
     43 
     44 #define M4OSA_SUPER_TRACE_LEVEL 0
     45 
     46 #ifndef M4OSA_TRACE_LEVEL
     47 #define M4OSA_TRACE_LEVEL       0
     48 #endif
     49 
     50 #ifdef __cplusplus
     51 extern "C"
     52 {
     53 #endif
     54 
     55 
     56 #if (M4OSA_DEBUG_LEVEL >= 1) || (M4OSA_SUPER_DEBUG_LEVEL >= 1)
     57 
     58 /* Debug macros */
     59 extern M4OSA_Void M4OSA_DEBUG_traceFunction(M4OSA_UInt32 line,
     60                                             M4OSA_Char* fileName,
     61                                             M4OSA_UInt32 level,
     62                                             M4OSA_Char* stringCondition,
     63                                             M4OSA_Char* message,
     64                                             M4OSA_ERR returnedError);
     65 
     66 
     67 #define M4OSA_DEBUG_IFx(cond, errorCode, msg, level)\
     68       if(cond)\
     69       {\
     70          M4OSA_DEBUG_traceFunction(__LINE__, (M4OSA_Char*)__FILE__, level,\
     71                                    (M4OSA_Char*)#cond, (M4OSA_Char*)msg,
     72                                    (errorCode));\
     73          return(errorCode);\
     74       }
     75 
     76 #define M4OSA_DEBUG(errorCode, msg)\
     77          M4OSA_DEBUG_traceFunction(__LINE__, (M4OSA_Char*)__FILE__, 1,\
     78                                    (M4OSA_Char*)#errorCode, (M4OSA_Char*)msg,
     79                                    (errorCode));
     80 
     81 #else /*(M4OSA_DEBUG_LEVEL >= 1) || (M4OSA_SUPER_DEBUG_LEVEL >= 1)*/
     82 
     83 
     84 #define M4OSA_DEBUG(errorCode, msg)
     85 
     86 #endif /*(M4OSA_DEBUG_LEVEL >= 1) || (M4OSA_SUPER_DEBUG_LEVEL >= 1)*/
     87 
     88 
     89 
     90 #if (M4OSA_DEBUG_LEVEL >= 1) || (M4OSA_SUPER_DEBUG_LEVEL >= 1)
     91  #define M4OSA_DEBUG_IF1(cond, errorCode, msg)\
     92          M4OSA_DEBUG_IFx(cond, errorCode, msg, 1)
     93 #else
     94  #define M4OSA_DEBUG_IF1(cond, errorCode, msg)
     95 #endif /*(M4OSA_DEBUG_LEVEL >= 1) || (M4OSA_SUPER_DEBUG_LEVEL >= 1)*/
     96 
     97 
     98 #if (M4OSA_DEBUG_LEVEL >= 2) || (M4OSA_SUPER_DEBUG_LEVEL >= 2)
     99  #define M4OSA_DEBUG_IF2(cond, errorCode, msg)\
    100          M4OSA_DEBUG_IFx(cond, errorCode, msg, 2)
    101 #else
    102  #define M4OSA_DEBUG_IF2(cond, errorCode, msg)
    103 #endif /*(M4OSA_DEBUG_LEVEL >= 2) || (M4OSA_SUPER_DEBUG_LEVEL >= 2)*/
    104 
    105 
    106 #if (M4OSA_DEBUG_LEVEL >= 3) || (M4OSA_SUPER_DEBUG_LEVEL >= 3)
    107  #define M4OSA_DEBUG_IF3(cond, errorCode, msg)\
    108          M4OSA_DEBUG_IFx(cond, errorCode, msg, 3)
    109 #else
    110  #define M4OSA_DEBUG_IF3(cond, errorCode, msg)
    111 #endif /*(M4OSA_DEBUG_LEVEL >= 3) || (M4OSA_SUPER_DEBUG_LEVEL >= 3)*/
    112 
    113 
    114 
    115 /* Trace macros */
    116 
    117 #if (M4OSA_TRACE_LEVEL >= 1) || (M4OSA_SUPER_TRACE_LEVEL >= 1)
    118 
    119 extern M4OSA_Void M4OSA_TRACE_traceFunction(M4OSA_UInt32 line,
    120                                             M4OSA_Char* fileName,
    121                                             M4OSA_CoreID coreID,
    122                                             M4OSA_UInt32 level,
    123                                             M4OSA_Char* stringMsg,
    124                                             ... );
    125 
    126 
    127 
    128 #define M4OSA_TRACEx_0(msg, level)\
    129       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    130                              (M4OSA_CoreID)M4TRACE_ID, level, (M4OSA_Char*)msg);
    131 
    132 
    133 #define M4OSA_TRACEx_1(msg, param1, level)\
    134       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    135                      (M4OSA_CoreID)M4TRACE_ID, level, (M4OSA_Char*)msg, param1);
    136 
    137 
    138 #define M4OSA_TRACEx_2(msg, param1, param2, level)\
    139       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    140                                 (M4OSA_CoreID)M4TRACE_ID, level,\
    141                                 (M4OSA_Char*)msg, param1,\
    142                                 param2);
    143 
    144 
    145 #define M4OSA_TRACEx_3(msg, param1, param2, param3, level)\
    146       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    147                                 (M4OSA_CoreID)M4TRACE_ID, level, (M4OSA_Char*)msg,\
    148                                 param1,param2, param3);
    149 
    150 
    151 #define M4OSA_TRACEx_4(msg, param1, param2, param3, param4, level)\
    152       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    153                                 (M4OSA_CoreID)M4TRACE_ID, level,\
    154                                 (M4OSA_Char*)msg, param1,\
    155                                 param2, param3, param4);
    156 
    157 
    158 #define M4OSA_TRACEx_5(msg, param1, param2, param3, param4, param5, level)\
    159       M4OSA_TRACE_traceFunction(__LINE__, (M4OSA_Char*)__FILE__,\
    160                                 (M4OSA_CoreID)M4TRACE_ID, level,\
    161                                 (M4OSA_Char*)msg, param1,\
    162                                 param2, param3, param4, param5);
    163 
    164 #endif /*(M4OSA_TRACE_LEVEL >= 1) || (M4OSA_SUPER_TRACE_LEVEL >= 1)*/
    165 
    166 
    167 
    168 #if (M4OSA_TRACE_LEVEL >= 1) || (M4OSA_SUPER_TRACE_LEVEL >= 1)
    169 #define M4OSA_TRACE1_0(msg)\
    170         M4OSA_TRACEx_0(msg, 1)
    171 
    172 #define M4OSA_TRACE1_1(msg, param1)\
    173         M4OSA_TRACEx_1(msg, param1, 1)
    174 
    175 #define M4OSA_TRACE1_2(msg, param1, param2)\
    176         M4OSA_TRACEx_2(msg, param1, param2, 1)
    177 
    178 #define M4OSA_TRACE1_3(msg, param1, param2, param3)\
    179         M4OSA_TRACEx_3(msg, param1, param2, param3, 1)
    180 
    181 #define M4OSA_TRACE1_4(msg, param1, param2, param3, param4)\
    182         M4OSA_TRACEx_4(msg, param1, param2, param3, param4, 1)
    183 
    184 #define M4OSA_TRACE1_5(msg, param1, param2, param3, param4, param5)\
    185         M4OSA_TRACEx_5(msg, param1, param2, param3, param4, param5, 1)
    186 
    187 #else /*(M4OSA_TRACE_LEVEL >= 1) || (M4OSA_SUPER_TRACE_LEVEL >= 1)*/
    188 
    189 #define M4OSA_TRACE1_0(msg)
    190 #define M4OSA_TRACE1_1(msg, param1)
    191 #define M4OSA_TRACE1_2(msg, param1, param2)
    192 #define M4OSA_TRACE1_3(msg, param1, param2, param3)
    193 #define M4OSA_TRACE1_4(msg, param1, param2, param3, param4)
    194 #define M4OSA_TRACE1_5(msg, param1, param2, param3, param4, param5)
    195 
    196 #endif /*(M4OSA_TRACE_LEVEL >= 1) || (M4OSA_SUPER_TRACE_LEVEL >= 1)*/
    197 
    198 
    199 #if (M4OSA_TRACE_LEVEL >= 2) || (M4OSA_SUPER_TRACE_LEVEL >= 2)
    200 #define M4OSA_TRACE2_0(msg)\
    201         M4OSA_TRACEx_0(msg, 2)
    202 
    203 #define M4OSA_TRACE2_1(msg, param1)\
    204         M4OSA_TRACEx_1(msg, param1, 2)
    205 
    206 #define M4OSA_TRACE2_2(msg, param1, param2)\
    207         M4OSA_TRACEx_2(msg, param1, param2, 2)
    208 
    209 #define M4OSA_TRACE2_3(msg, param1, param2, param3)\
    210         M4OSA_TRACEx_3(msg, param1, param2, param3, 2)
    211 
    212 #define M4OSA_TRACE2_4(msg, param1, param2, param3, param4)\
    213         M4OSA_TRACEx_4(msg, param1, param2, param3, param4, 2)
    214 
    215 #define M4OSA_TRACE2_5(msg, param1, param2, param3, param4, param5)\
    216         M4OSA_TRACEx_5(msg, param1, param2, param3, param4, param5, 2)
    217 
    218 #else /*(M4OSA_TRACE_LEVEL >= 2) || (M4OSA_SUPER_TRACE_LEVEL >= 2)*/
    219 
    220 #define M4OSA_TRACE2_0(msg)
    221 #define M4OSA_TRACE2_1(msg, param1)
    222 #define M4OSA_TRACE2_2(msg, param1, param2)
    223 #define M4OSA_TRACE2_3(msg, param1, param2, param3)
    224 #define M4OSA_TRACE2_4(msg, param1, param2, param3, param4)
    225 #define M4OSA_TRACE2_5(msg, param1, param2, param3, param4, param5)
    226 #endif /*(M4OSA_TRACE_LEVEL >= 2) || (M4OSA_SUPER_TRACE_LEVEL >= 2)*/
    227 
    228 
    229 #if (M4OSA_TRACE_LEVEL >= 3) || (M4OSA_SUPER_TRACE_LEVEL >= 3)
    230 #define M4OSA_TRACE3_0(msg)\
    231         M4OSA_TRACEx_0(msg, 3)
    232 
    233 #define M4OSA_TRACE3_1(msg, param1)\
    234         M4OSA_TRACEx_1(msg, param1, 3)
    235 
    236 #define M4OSA_TRACE3_2(msg, param1, param2)\
    237         M4OSA_TRACEx_2(msg, param1, param2, 3)
    238 
    239 #define M4OSA_TRACE3_3(msg, param1, param2, param3)\
    240         M4OSA_TRACEx_3(msg, param1, param2, param3, 3)
    241 
    242 #define M4OSA_TRACE3_4(msg, param1, param2, param3, param4)\
    243         M4OSA_TRACEx_4(msg, param1, param2, param3, param4, 3)
    244 
    245 #define M4OSA_TRACE3_5(msg, param1, param2, param3, param4, param5)\
    246         M4OSA_TRACEx_5(msg, param1, param2, param3, param4, param5, 3)
    247 
    248 #else /*(M4OSA_TRACE_LEVEL >= 3) || (M4OSA_SUPER_TRACE_LEVEL >= 3)*/
    249 
    250 #define M4OSA_TRACE3_0(msg)
    251 #define M4OSA_TRACE3_1(msg, param1)
    252 #define M4OSA_TRACE3_2(msg, param1, param2)
    253 #define M4OSA_TRACE3_3(msg, param1, param2, param3)
    254 #define M4OSA_TRACE3_4(msg, param1, param2, param3, param4)
    255 #define M4OSA_TRACE3_5(msg, param1, param2, param3, param4, param5)
    256 
    257 #endif /*(M4OSA_TRACE_LEVEL >= 3) || (M4OSA_SUPER_TRACE_LEVEL >= 3)*/
    258 
    259 
    260 
    261 #ifdef __cplusplus
    262 }
    263 #endif
    264 
    265 #endif /* _M4OSA_DEBUG_H_ */
    266 
    267