diff -r 6205fd287e8a -r 1abc632eb502 taskswitcher/taskswitcherui/trace/tslogutils.h --- a/taskswitcher/taskswitcherui/trace/tslogutils.h Thu Mar 18 14:45:17 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,211 +0,0 @@ -/* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Logging behavior -* -*/ - - -#ifndef TSLOGUTILS_H -#define TSLOGUTILS_H - -/** - * NOTE: This file contains the logic related to logging. Change only if you - * know what you're doing. - */ - - - - - - - - - - -#ifdef _DEBUG - -#include -#include - -static const TUint TSLOGERR = 2; /**< Used to create an error message */ - -// These macros are real macros, that should be used. For temporary purposes, these -// are left out and the logging is done by simple entry logging -#define _TSLOG_UNCONTROLLED_INPUT_MSG L"%s%d[%x:%x:%x]>%s UNCONTROLLED ENTRY!" -#define _TSLOG_MULTIPLE_ENTRY_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL ENTRY!" -#define _TSLOG_UNCONTROLLER_EXIT_MSG L"%s%d[%x:%x:%x]<%s UNCONTROLLED EXIT!" -#define _TSLOG_MULTIPLE_EXIT_MSG L"%s%d[%x:%x:%x]%s ADDITIONAL EXIT!" -#define _TSLOG_TRAP_HARNESS_ENTRY L"_D%d[%x:%x:%x]TraceFramework: Entering trap harness" -#define _TSLOG_TRAP_HARNESS_EXIT L"_D%d[%x:%x:%x]TraceFramework: Exiting trap harness" -#define _TSLOG_TRAP_HARNESS_LEAVE L"_D%d[%x:%x:%x]TraceFramework: ---------- LEAVE OCCURRED !!! ---------- " -#define _TSLOG_API_PREFIX L"_A" -#define _TSLOG_LOCAL_PREFIX L"_L" - -/** -* @file -* trace_utils.h contains definitions needed for advanced tracing features. -* Tracing can be customized using the following compile time flags: -* - _DEBUG -* - With this flag undefined, all traces are disabled -* - __KERNEL_MODE__ -* - if kernel mode flag is defined, kernel macro variants are used (no unicode or shared heap related stuff, faster) -* - DISABLE_SYNTAX_CHECK -* - If this flag is defined, runtime syntax checking features are disabled from traces -*/ -#ifndef DISABLE_SYNTAX_CHECK - #define _MARK_ENTRY() _dc.inOk=ETrue - #define _DOINCHK() _dc.DoInChk() - #define _CHK_MULTIIN() _dc.ChkMultiIn() - #define _CHK_MULTIOUT() _dc.ChkMultiOut() - #define _MARK_EXIT() _dc.outOk=ETrue -#else - #define _MARK_ENTRY() - #define _DOINCHK() - #define _CHK_MULTIIN() - #define _CHK_MULTIOUT() - #define _MARK_EXIT() -#endif // DISABLE_SYNTAX_CHECK - -/** For tracing */ -#ifdef _TSLOG_RDEBUG - #define _IT(a) (TPtrC((const TText *)(a))) - #define _TSLOGPRINTER RDebug::Print - -/** For filedebug */ -#else // _TSLOG_RDEBUG - - /** Includes */ - #include - #include - #include - #include - -// both of headers defines KLogBufferSize -#ifndef __COMMSDEBUGUTILITY_H__ - #include -#endif - - #define _IT(a) KTsLogPath, KTsLogFile, EFileLoggingModeAppend, (TPtrC((const TText *)(a))) - #define _TSLOGPRINTER RFileLogger::WriteFormat -#endif // _TSLOG_RDEBUG - -class _TTsLogContext - { - public: - _TTsLogContext( - const TText* _fn, - const TUint _id, - const TUint _vis, - const TUint _addr, - const TUint _thdId, - const TUint _category=0 ) - : - iFn(_fn), - iId(_id), - iApi((TBool)_vis), - iAddr(_addr), - iThdId(_thdId), - iVis((_vis == 0 ? (TText*)_TSLOG_API_PREFIX : (TText*)_TSLOG_LOCAL_PREFIX)), - iCategory(_category) - #ifndef DISABLE_SYNTAX_CHECK - ,outOk(EFalse), inOk(EFalse) - #endif - { - } - ~_TTsLogContext() - { - #ifndef DISABLE_SYNTAX_CHECK - do - { - DoInChk(); - if (!outOk) - { - _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLER_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); - } - } while (0); - #endif // DISABLE_SYNTAX_CHECK - } - - const TText* iFn; - const TUint iId; - const TText* iVis; - const TUint iAddr; - const TInt iThdId; - const TBool iApi; - const TUint iCategory; - - #ifndef DISABLE_SYNTAX_CHECK - inline void DoInChk() - { - if (!inOk) - { - _TSLOGPRINTER(_IT(_TSLOG_UNCONTROLLED_INPUT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); - inOk = ETrue; - } - } - - inline void ChkMultiIn() - { - if (inOk) - { - _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_ENTRY_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); - } - } - - inline void ChkMultiOut() - { - if (outOk) - { - _TSLOGPRINTER(_IT(_TSLOG_MULTIPLE_EXIT_MSG), iVis, iCategory, iId, iThdId, iAddr, iFn); - } - } - - TBool inOk; - TBool outOk; - #endif // DISABLE_SYNTAX_CHECK - }; - -class _TTsLogTrapHandler: public TTrapHandler - { - public: - - _TTsLogTrapHandler(_TTsLogContext& _context) : _dc( _context ) - { - RThread me; - iThdId = (TInt)me.Id(); - } - void Trap() - { - _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_ENTRY), 0, TSLOGERR, iThdId, this); - oldHandler->Trap(); - } - void UnTrap() - { - _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_EXIT), 0, TSLOGERR, iThdId, this); - oldHandler->UnTrap(); - } - void Leave(TInt aValue) - { - _TSLOGPRINTER(_IT(_TSLOG_TRAP_HARNESS_LEAVE), 0, TSLOGERR, iThdId, this); - oldHandler->Leave(aValue); - } - TTrapHandler* oldHandler; - private: - _TTsLogContext& _dc; - TInt iThdId; - }; - -#endif // _DEBUG - -#endif // TSLOGUTILS_H