Home | History | Annotate | Download | only in util
      1 /*
      2  * Copyright (c) 2015-2016, The Linux Foundation. All rights reserved.
      3  * Not a Contribution.
      4  *
      5  * Copyright (C) 2012 The Android Open Source Project
      6  *
      7  * Licensed under the Apache License, Version 2.0 (the "License");
      8  * you may not use this file except in compliance with the License.
      9  * You may obtain a copy of the License at
     10  *
     11  *      http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing, software
     14  * distributed under the License is distributed on an "AS IS" BASIS,
     15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     16  * See the License for the specific language governing permissions and
     17  * limitations under the License.
     18  */
     19 
     20 #ifndef __QCAMERATRACE_H__
     21 #define __QCAMERATRACE_H__
     22 
     23 #include <utils/Trace.h>
     24 
     25 #ifdef QCAMERA_REDEFINE_LOG
     26 #define CAM_MODULE CAM_HAL_MODULE
     27 extern "C" {
     28 #include "mm_camera_dbg.h"
     29 }
     30 #endif
     31 
     32 #undef ATRACE_CALL
     33 #undef ATRACE_NAME
     34 #undef ATRACE_BEGIN
     35 #undef ATRACE_INT
     36 #undef ATRACE_END
     37 #undef ATRACE_BEGIN_SNPRINTF
     38 #undef KPI_ATRACE_BEGIN
     39 #undef KPI_ATRACE_END
     40 #undef KPI_ATRACE_INT
     41 #undef ATRACE_TAG
     42 #undef ATRACE_BEGIN_DBG
     43 #undef ATRACE_INT_DBG
     44 #undef ATRACE_END_DBG
     45 
     46 #define KPI_ONLY 1
     47 #define KPI_DBG 2
     48 
     49 #define CAMERA_TRACE_BUF 32
     50 
     51 #define ATRACE_TAG ATRACE_TAG_CAMERA
     52 
     53 //to enable only KPI logs
     54 #define KPI_ATRACE_BEGIN(name) ({\
     55 if (gKpiDebugLevel >= KPI_ONLY) { \
     56      atrace_begin(ATRACE_TAG, name); \
     57 }\
     58 })
     59 
     60 #define KPI_ATRACE_END() ({\
     61 if (gKpiDebugLevel >= KPI_ONLY) { \
     62      atrace_end(ATRACE_TAG); \
     63 }\
     64 })
     65 
     66 #define KPI_ATRACE_ASYNC_BEGIN(name, cookie) ({\
     67 if (gKpiDebugLevel >= KPI_ONLY) { \
     68      ATRACE_ASYNC_BEGIN(name, cookie); \
     69 }\
     70 })
     71 
     72 #define KPI_ATRACE_ASYNC_END(name, cookie) ({\
     73 if (gKpiDebugLevel >= KPI_ONLY) { \
     74      ATRACE_ASYNC_END(name, cookie); \
     75 }\
     76 })
     77 
     78 #define KPI_ATRACE_INT(name,val) ({\
     79 if (gKpiDebugLevel >= KPI_ONLY) { \
     80      atrace_int(ATRACE_TAG, name, val); \
     81 }\
     82 })
     83 
     84 
     85 #define ATRACE_BEGIN_SNPRINTF(fmt_str, ...) \
     86  if (gKpiDebugLevel >= KPI_DBG) { \
     87    char trace_tag[CAMERA_TRACE_BUF]; \
     88    snprintf(trace_tag, CAMERA_TRACE_BUF, fmt_str, ##__VA_ARGS__); \
     89    ATRACE_BEGIN(trace_tag); \
     90 }
     91 
     92 #define ATRACE_BEGIN_DBG(name) ({\
     93 if (gKpiDebugLevel >= KPI_DBG) { \
     94      atrace_begin(ATRACE_TAG, name); \
     95 }\
     96 })
     97 
     98 #define ATRACE_END_DBG() ({\
     99 if (gKpiDebugLevel >= KPI_DBG) { \
    100      atrace_end(ATRACE_TAG); \
    101 }\
    102 })
    103 
    104 #define ATRACE_INT_DBG(name,val) ({\
    105 if (gKpiDebugLevel >= KPI_DBG) { \
    106      atrace_int(ATRACE_TAG, name, val); \
    107 }\
    108 })
    109 
    110 #define ATRACE_BEGIN ATRACE_BEGIN_DBG
    111 #define ATRACE_INT ATRACE_INT_DBG
    112 #define ATRACE_END ATRACE_END_DBG
    113 
    114 #define KPI_ATRACE_NAME(name) qcamera::ScopedTraceKpi ___tracer(ATRACE_TAG, name)
    115 #define ATRACE_NAME(name) qcamera::ScopedTraceDbg ___tracer(ATRACE_TAG, name)
    116 #define KPI_ATRACE_CALL() KPI_ATRACE_NAME(__FUNCTION__)
    117 #define ATRACE_CALL() ATRACE_NAME(__FUNCTION__)
    118 
    119 namespace qcamera {
    120 extern volatile uint32_t gKpiDebugLevel;
    121 class ScopedTraceKpi {
    122 public:
    123     inline ScopedTraceKpi(uint64_t tag, const char *name)
    124     : mTag(tag) {
    125         if (gKpiDebugLevel >= KPI_ONLY) {
    126             atrace_begin(mTag,name);
    127         }
    128     }
    129 
    130     inline ~ScopedTraceKpi() {
    131         if (gKpiDebugLevel >= KPI_ONLY) {
    132             atrace_end(mTag);
    133         }
    134     }
    135 
    136     private:
    137         uint64_t mTag;
    138 };
    139 
    140 class ScopedTraceDbg {
    141 public:
    142     inline ScopedTraceDbg(uint64_t tag, const char *name)
    143     : mTag(tag) {
    144         if (gKpiDebugLevel >= KPI_DBG) {
    145             atrace_begin(mTag,name);
    146         }
    147     }
    148 
    149     inline ~ScopedTraceDbg() {
    150         if (gKpiDebugLevel >= KPI_DBG) {
    151             atrace_end(mTag);
    152         }
    153     }
    154 
    155     private:
    156         uint64_t mTag;
    157 };
    158 };
    159 
    160 extern volatile uint32_t gKpiDebugLevel;
    161 
    162 #endif /* __QCAMREATRACE_H__ */
    163