timm_osal_trace.c revision c322989ae6ff6769490828de1b5eda12b749cce9
1/* 2 * Copyright (c) 2010, Texas Instruments Incorporated 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * * Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * * Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * * Neither the name of Texas Instruments Incorporated nor the names of 17 * its contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 22 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 27 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 28 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 29 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 30 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33/* 34* @file timm_osal_trace.c 35* This file contains methods that provides the functionality 36* for logging errors/warings/information/etc. 37* 38* @path \ 39* 40*/ 41/* -------------------------------------------------------------------------- */ 42/* ========================================================================= 43 *! 44 *! Revision History 45 *! =================================== 46 *! 47 * ========================================================================= */ 48 49/****************************************************************************** 50* Includes 51******************************************************************************/ 52 53/*#include "typedefs.h"*/ 54#include <stdarg.h> 55#include <stdio.h> 56#include <stdlib.h> 57#include "timm_osal_trace.h" 58 59#ifdef _Android 60#define LOG_TAG "DOMX" 61#include <utils/Log.h> 62#endif 63 64/** 65* The OSAL debug trace detail can be set at compile time by defining the flag 66* TIMM_OSAL_DEBUG_TRACE_DETAIL=<Details> 67* detail - 0 - no detail 68* 1 - function name 69* 2 - function name, line number 70* Prefix is added to every debug trace message 71*/ 72#ifndef TIMM_OSAL_DEBUG_TRACE_DETAIL 73#define TIMM_OSAL_DEBUG_TRACE_DETAIL 2 74#endif 75 76#define DEFAULT_TRACE_LEVEL 1 77 78static int trace_level = -1; 79 80/* strip out leading ../ stuff that happens to __FILE__ for out-of-tree builds */ 81static const char *simplify_path(const char *file) 82{ 83 while (file) 84 { 85 char c = file[0]; 86 if ((c != '.') && (c != '/') && (c != '\\')) 87 break; 88 file++; 89 } 90 return file; 91} 92 93void __TIMM_OSAL_TraceFunction(const __TIMM_OSAL_TRACE_LOCATION * loc, 94 const char *fmt, ...) 95{ 96 if (trace_level == -1) 97 { 98 char *val = getenv("TIMM_OSAL_DEBUG_TRACE_LEVEL"); 99 trace_level = 100 val ? strtol(val, NULL, 0) : DEFAULT_TRACE_LEVEL; 101 } 102 103 if (trace_level >= loc->level) 104 { 105 va_list ap; 106 107 va_start(ap, fmt); /* make ap point to first arg after 'fmt' */ 108 109#ifdef _Android 110 111#if ( TIMM_OSAL_DEBUG_TRACE_DETAIL > 1 ) 112 LOGD("%s:%d\t%s()\t", simplify_path(loc->file), loc->line, 113 loc->function); 114#endif 115 char string[1000]; 116 vsprintf(string, fmt, ap); 117 LOGD("%s",string); 118 119#else 120 121#if ( TIMM_OSAL_DEBUG_TRACE_DETAIL > 1 ) 122 printf("%s:%d\t%s()\t", simplify_path(loc->file), loc->line, 123 loc->function); 124#endif 125 vprintf(fmt, ap); 126 127#endif 128 va_end(ap); 129 } 130} 131