userlibandfileserver/fileserver/ftrace/f32trace.h
changeset 134 95847726fe57
parent 0 a41df078684a
child 257 3e88ff8f41d5
equal deleted inserted replaced
133:2a0ada0a1bf8 134:95847726fe57
    20 */
    20 */
    21 
    21 
    22 #if !defined(__FTRACE_H__)
    22 #if !defined(__FTRACE_H__)
    23 #define __FTRACE_H__
    23 #define __FTRACE_H__
    24 
    24 
    25 #include <e32cmn.h>
       
    26 #include <e32btrace.h>
       
    27 
       
    28 
       
    29 #ifndef __KERNEL_MODE__
       
    30 	#include <e32std.h>
       
    31 #endif
       
    32 
       
    33 #include "f32tracedef.h"
       
    34 
       
    35 #if defined(__EABI__)
       
    36 #pragma diag_suppress 1446		// non-POD class type passed through ellipsis
       
    37 #endif
       
    38 
       
    39 /**
    25 /**
    40 @internalComponent
    26 @internalComponent
    41 @prototype
    27 @prototype
    42 */
    28 */
    43 
    29 
    44 #if ((defined (_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UDEB)) ||		\
    30 #if ((defined (_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UDEB)) ||		\
    45 	(!defined(_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UREL)))
    31 	(!defined(_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UREL)))
    46 	#define SYMBIAN_FTRACE_ENABLE
    32 	#include "OstTraceDefinitions.h"			// may or may not define OST_TRACE_COMPILER_IN_USE
       
    33 #else
       
    34 	#undef OST_TRACE_COMPILER_IN_USE
       
    35 	#undef OST_TRACE_CATEGORY
       
    36 	#define OST_TRACE_CATEGORY OST_TRACE_CATEGORY_NONE
       
    37 
       
    38 	#undef OstTrace0
       
    39 	#undef OstTrace1
       
    40 	#undef OstTraceData
       
    41 	#undef OstTraceExt1
       
    42 	#undef OstTraceExt2
       
    43 	#undef OstTraceExt3
       
    44 	#undef OstTraceExt4
       
    45 	#undef OstTraceExt5
       
    46 
       
    47 	#define OstTrace0( aGroupName, aTraceName, aTraceText )
       
    48 	#define OstTrace1( aGroupName, aTraceName, aTraceText, aParam )
       
    49 	#define OstTraceData( aGroupName, aTraceName, aTraceText, aPtr, aLength )
       
    50 	#define OstTraceExt1( aGroupName, aTraceName, aTraceText, aParam )
       
    51 	#define OstTraceExt2( aGroupName, aTraceName, aTraceText, aParam1, aParam2 )
       
    52 	#define OstTraceExt3( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3 )
       
    53 	#define OstTraceExt4( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4 )
       
    54 	#define OstTraceExt5( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4, aParam5 )
    47 #endif
    55 #endif
    48 
    56 
    49 
    57 
    50 
    58 #if defined (OST_TRACE_COMPILER_IN_USE)
    51 inline TBool Trace1(TClassification aClassification, TFormatId aFormatId, TModuleUid aUid, TUint a1)
    59 	// This class is used to reconstruct an RMessage2 object from a message handle so that we can 
    52 	{
    60 	// call RMessagePtr2::Client() and then RThread::Id() to retrieve the client's thread Id.
    53 	return BTraceFilteredContext12(
    61 	// This is useful for matching client requests to calls to the proxydrive
    54 		aClassification,					// Category
    62 	class RDummyMessage : public RMessage2
    55 		0,								// Sub-category
    63 		{
    56 		aUid,		// UID
    64 	public:
    57 		aFormatId,
    65 		inline RDummyMessage(TInt aHandle) {iHandle = aHandle; iFunction=-1;}
    58 		a1);							
       
    59 	}
       
    60 
       
    61 inline TBool TraceN(TClassification aClassification, TFormatId aFormatId,  TModuleUid aUid, TInt aArgCount, TUint a1, ...)
       
    62 	{
       
    63 	const TInt KMaxArgs = 8;
       
    64 	if (aArgCount > KMaxArgs)
       
    65 		return EFalse;
       
    66 	TUint args[KMaxArgs];
       
    67 	TInt argLen = aArgCount << 2;
       
    68 	memcpy(args, &a1, argLen);
       
    69 	
       
    70 	return BTraceFilteredContextN(
       
    71 		aClassification,					// Category
       
    72 		0,									// Sub-category
       
    73 		aUid,		// UID
       
    74 		aFormatId,
       
    75 		args,
       
    76 		argLen);								
       
    77 	}
       
    78 
       
    79 
       
    80 inline TBool TraceStr(TClassification aClassification, TFormatId aFormatId,  TModuleUid aUid, const TAny* aData, TInt aDataSize)
       
    81 	{
       
    82 	// NB This will truncate the data (!!!) - 
       
    83 	// we can't use BTraceFilteredContextBig for this as it doesn't have room for the format Id
       
    84 	return BTraceFilteredContextN(		
       
    85 		aClassification,					// Category
       
    86 		0,								// Sub-category
       
    87 		aUid,		// UID
       
    88 		aFormatId,
       
    89 		aData, 
       
    90 		aDataSize);							
       
    91 	}
       
    92 
       
    93 
       
    94 
       
    95 
       
    96 
       
    97 
       
    98 
       
    99 class RFTrace : public RBusLogicalChannel
       
   100 	{
       
   101 public:
       
   102 	enum {EMajorVersionNumber=1,EMinorVersionNumber=0,EBuildVersionNumber=1};
       
   103 	enum TControl
       
   104         {
       
   105 		ETraceMultiple,
       
   106 		};
    66 		};
   107 
       
   108 #ifndef __KERNEL_MODE__
       
   109 
       
   110 public:
       
   111 	inline TInt Open(TOwnerType aType)
       
   112 		{return DoCreate(_L("FTrace"),TVersion(),0,NULL,NULL,aType);}
       
   113 
       
   114 	inline 	TBool TraceMultiple(TClassification aClassification, TFormatId aFormatId, TUint32 aUid, TInt aDescriptorCount, TUint64 aParam1, ...)
       
   115 		{
       
   116 		if (Handle() == NULL)
       
   117 			return EFalse;
       
   118 		// ARM passes first 4 parameters in registers, so....
       
   119 		// parcel-up the first four parameters in an array and pass a pointer to the array to the LDD; 
       
   120 		// the next parameter(s) should be on the stack, so we can just pass a pointer to the first element 
       
   121 		TUint args[4] = {aClassification, aFormatId, aUid, aDescriptorCount};
       
   122 		TUint64* pArg1 = &aParam1;
       
   123 		TInt r = DoControl(ETraceMultiple, (TAny*) args, pArg1);
       
   124 		if (r |= KErrNone)
       
   125 			User::Panic(_L("FSCLIENT Trace panic"), 0);
       
   126 		return ETrue;
       
   127 		}
       
   128 
       
   129 	static inline TUint64 PkgData(const TDesC16& aDes)	{return MAKE_TUINT64( ((TUint) aDes.Ptr()), (aDes.Length()<<1) | (EPtrC<<KShiftDesType));}
       
   130 	static inline TUint64 PkgData(const TDesC8& aDes)	{return MAKE_TUINT64( ((TUint) aDes.Ptr()), aDes.Length() | (EPtrC<<KShiftDesType));}
       
   131 
       
   132 	static inline TUint64 PkgData(TChar aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   133 	static inline TUint64 PkgData(TUint8 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   134 	static inline TUint64 PkgData(TInt8 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   135 	static inline TUint64 PkgData(TUint16 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   136 	static inline TUint64 PkgData(TInt16 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   137 	static inline TUint64 PkgData(TUint32 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   138 	static inline TUint64 PkgData(TInt32 aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   139 	static inline TUint64 PkgData(TUint aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   140 	static inline TUint64 PkgData(TInt aVal)			{return MAKE_TUINT64(aVal, sizeof(aVal));}
       
   141 	
       
   142 #endif	// __KERNEL_MODE__
       
   143 
       
   144 private:
       
   145 
       
   146 	};
       
   147 
       
   148 // This class is used to reconstruct an RMessage2 object from a message handle so that we can 
       
   149 // call RMessagePtr2::Client() and then RThread::Id() to retrieve the client's thread Id.
       
   150 // This is useful for matching client requests to calls to the proxydrive
       
   151 class RDummyMessage : public RMessage2
       
   152 	{
       
   153 public:
       
   154 	inline RDummyMessage(TInt aHandle) {iHandle = aHandle; iFunction=-1;}
       
   155 	};
       
   156 
       
   157 
       
   158 
       
   159 #ifdef SYMBIAN_FTRACE_ENABLE
       
   160 
       
   161 	// Use these macros for tracing 1-8 TUints...
       
   162 	#define TRACE0(aClassification, aFormatId, aUid)								Trace1(aClassification, aFormatId, aUid, 0)
       
   163 	#define TRACE1(aClassification, aFormatId, aUid, a1)							Trace1(aClassification, aFormatId, aUid, (TUint) a1)
       
   164 	#define TRACE2(aClassification, aFormatId, aUid, a1, a2)						TraceN(aClassification, aFormatId, aUid, 2, (TUint) a1, (TUint) a2)
       
   165 	#define TRACE3(aClassification, aFormatId, aUid, a1, a2, a3)					TraceN(aClassification, aFormatId, aUid, 3, (TUint) a1, (TUint) a2, (TUint) a3)
       
   166 	#define TRACE4(aClassification, aFormatId, aUid, a1, a2, a3, a4)				TraceN(aClassification, aFormatId, aUid, 4, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4)
       
   167 	#define TRACE5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)			TraceN(aClassification, aFormatId, aUid, 5, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5)
       
   168 	#define TRACE6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)		TraceN(aClassification, aFormatId, aUid, 6, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6)
       
   169 	#define TRACE7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)	TraceN(aClassification, aFormatId, aUid, 7, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6, (TUint) a7)
       
   170 	#define TRACE8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)TraceN(aClassification, aFormatId, aUid, 8, (TUint) a1, (TUint) a2, (TUint) a3, (TUint) a4, (TUint) a5, (TUint) a6, (TUint) a7, (TUint) a8)
       
   171 
       
   172 	#define TRACESTR(aClassification, aFormatId, aUid, aData, aDataSize)			TraceStr(aClassification, aFormatId, aUid, aData, aDataSize)
       
   173 
       
   174 	#define RFTRACE_LOAD							\
       
   175 		User::LoadLogicalDevice(_L("D_FTRACE"));	
       
   176 
       
   177 	// macros for opening and closing the trace LDD, which is used for tracing arbitrary data types....
       
   178 #if defined(__DLL__)
       
   179 	#define RFTRACE_OPEN							\
       
   180 		RFTrace TheFtrace;							\
       
   181 		TheFtrace.SetHandle((TInt) Dll::Tls());		\
       
   182 		if (TheFtrace.Handle() == NULL)				\
       
   183 			{										\
       
   184 			TheFtrace.Open(EOwnerThread);			\
       
   185 			Dll::SetTls((TAny*) TheFtrace.Handle());\
       
   186 			}
       
   187 
       
   188 	#define RFTRACE_CLOSE							\
       
   189 		{											\
       
   190 		RFTrace ftrace;								\
       
   191 		TInt handle = (TInt) Dll::Tls();			\
       
   192 		ftrace.SetHandle(handle);					\
       
   193 		ftrace.Close();								\
       
   194 		Dll::SetTls(NULL);							\
       
   195 		}		
       
   196 #else
       
   197 	extern RFTrace TheFtrace;
       
   198 	#define RFTRACE_OPEN
       
   199 	#define RFTRACE_CLOSE 
       
   200 #endif
       
   201 	
       
   202 	// Use these macros for tracing 1-8 arbitrary data types....
       
   203 	#define TRACEMULT1(aClassification, aFormatId, aUid, a1)						\
       
   204 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   205 			{																			\
       
   206 			RFTRACE_OPEN																\
       
   207 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,1,RFTrace::PkgData(a1));	\
       
   208 			}
       
   209 
       
   210 	#define TRACEMULT2(aClassification, aFormatId, aUid, a1, a2)					\
       
   211 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   212 			{																			\
       
   213 			RFTRACE_OPEN																\
       
   214 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,2,RFTrace::PkgData(a1),RFTrace::PkgData(a2));	\
       
   215 			}
       
   216 
       
   217 	#define TRACEMULT3(aClassification, aFormatId, aUid, a1, a2, a3)				\
       
   218 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   219 			{																			\
       
   220 			RFTRACE_OPEN																\
       
   221 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,3,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3)); \
       
   222 			}
       
   223 
       
   224 	#define TRACEMULT4(aClassification, aFormatId, aUid, a1, a2, a3, a4)			\
       
   225 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   226 			{																			\
       
   227 			RFTRACE_OPEN																\
       
   228 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,4,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4)); \
       
   229 			}
       
   230 
       
   231 	#define TRACEMULT5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)		\
       
   232 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   233 			{																			\
       
   234 			RFTRACE_OPEN																\
       
   235 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,5,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5)); \
       
   236 			}
       
   237 
       
   238 	#define TRACEMULT6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)	\
       
   239 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   240 			{																			\
       
   241 			RFTRACE_OPEN																\
       
   242 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,6,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6)); \
       
   243 			}
       
   244 
       
   245 	#define TRACEMULT7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)\
       
   246 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   247 			{																			\
       
   248 			RFTRACE_OPEN																\
       
   249 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,7,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6),RFTrace::PkgData(a7)); \
       
   250 			}
       
   251 
       
   252 	#define TRACEMULT8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)\
       
   253 		if (BTrace::CheckFilter2(aClassification, aUid))								\
       
   254 			{																			\
       
   255 			RFTRACE_OPEN																\
       
   256 			TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,8,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4),RFTrace::PkgData(a5),RFTrace::PkgData(a6),RFTrace::PkgData(a7),RFTrace::PkgData(a8)); \
       
   257 			}
       
   258 
    67 
   259 
    68 
   260 	// This macro retrieves the client thread ID from a message, which is useful for 
    69 	// This macro retrieves the client thread ID from a message, which is useful for 
   261 	// associating server-side requests with client threads
    70 	// associating server-side requests with client threads
   262 	#define TRACETHREADID(aMsg)												\
    71 	#define TRACETHREADID(aMsg)												\
   274 	// This macro retrieves the client thread ID from a message handle
    83 	// This macro retrieves the client thread ID from a message handle
   275 	#define TRACETHREADIDH(aMsgHandle)			\
    84 	#define TRACETHREADIDH(aMsgHandle)			\
   276 		RDummyMessage msg(aMsgHandle);			\
    85 		RDummyMessage msg(aMsgHandle);			\
   277 		TRACETHREADID(msg);		
    86 		TRACETHREADID(msg);		
   278 
    87 
       
    88 #else	// #if defined (OST_TRACE_COMPILER_IN_USE)
   279 
    89 
   280 	// Use these macros for tracing a return code followed by 1-7 TUints...
       
   281 	// If the return code is negative the UTF::EError classification is used IF ENABLED  - otherwise the passed classification is used
       
   282 	#define TRACERET1(aClassification, aFormatId, aUid, r)								TRACE1( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r);
       
   283 	#define TRACERET2(aClassification, aFormatId, aUid, r, a2)							TRACE2( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2)
       
   284 	#define TRACERET3(aClassification, aFormatId, aUid, r, a2, a3)						TRACE3( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3)
       
   285 	#define TRACERET4(aClassification, aFormatId, aUid, r, a2, a3, a4)					TRACE4( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4)
       
   286 	#define TRACERET5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)				TRACE5( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5)
       
   287 	#define TRACERET6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)			TRACE6( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6)
       
   288 	#define TRACERET7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)		TRACE7( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
       
   289 	#define TRACERET8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)	TRACE8( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
       
   290 
       
   291 	// Use these macros for tracing a return code followed by 1-7 arbitrary data types....
       
   292 	// If the return code is negative the UTF::EError classification is used IF ENABLED  - otherwise the passed classification is used
       
   293 	#define TRACERETMULT1(aClassification, aFormatId, aUid, r)								TRACEMULT1( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r);
       
   294 	#define TRACERETMULT2(aClassification, aFormatId, aUid, r, a2)							TRACEMULT2( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2)
       
   295 	#define TRACERETMULT3(aClassification, aFormatId, aUid, r, a2, a3)						TRACEMULT3( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3)
       
   296 	#define TRACERETMULT4(aClassification, aFormatId, aUid, r, a2, a3, a4)					TRACEMULT4( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4)
       
   297 	#define TRACERETMULT5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)				TRACEMULT5( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5)
       
   298 	#define TRACERETMULT6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)			TRACEMULT6( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6)
       
   299 	#define TRACERETMULT7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)		TRACEMULT7( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
       
   300 	#define TRACERETMULT8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)	TRACEMULT8( (TClassification) ((r < 0 && BTrace::CheckFilter2(UTF::EError, aUid)) ? UTF::EError : aClassification), aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
       
   301 
       
   302 
       
   303 #else		// #ifdef SYMBIAN_FTRACE_ENABLE
       
   304 	#define TRACE0(aClassification, aFormatId, aUid)
       
   305 	#define TRACE1(aClassification, aFormatId, aUid, a1)
       
   306 	#define TRACE2(aClassification, aFormatId, aUid, a1, a2)
       
   307 	#define TRACE3(aClassification, aFormatId, aUid, a1, a2, a3)
       
   308 	#define TRACE4(aClassification, aFormatId, aUid, a1, a2, a3, a4)
       
   309 	#define TRACE5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)
       
   310 	#define TRACE6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)
       
   311 	#define TRACE7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)
       
   312 	#define TRACE8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)
       
   313 	#define TRACESTR(aClassification, aFormatId, aUid, aData, aDataSize)
       
   314 
       
   315 	#define RFTRACE_LOAD
       
   316 	#define RFTRACE_OPEN
       
   317 	#define RFTRACE_CLOSE
       
   318 
       
   319 	#define TRACEMULT1(aClassification, aFormatId, aUid, a1)
       
   320 	#define TRACEMULT2(aClassification, aFormatId, aUid, a1, a2)
       
   321 	#define TRACEMULT3(aClassification, aFormatId, aUid, a1, a2, a3)
       
   322 	#define TRACEMULT4(aClassification, aFormatId, aUid, a1, a2, a3, a4)
       
   323 	#define TRACEMULT5(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5)
       
   324 	#define TRACEMULT6(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6)
       
   325 	#define TRACEMULT7(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7)
       
   326 	#define TRACEMULT8(aClassification, aFormatId, aUid, a1, a2, a3, a4, a5, a6, a7, a8)
       
   327 	#define TRACETHREADID(aMsg)
    90 	#define TRACETHREADID(aMsg)
   328 	#define TRACETHREADIDH(aMsgHandle)
    91 	#define TRACETHREADIDH(aMsgHandle)
   329 
    92 
   330 	#define TRACERET1(aClassification, aFormatId, aUid, r)
    93 #endif	// #if defined (OST_TRACE_COMPILER_IN_USE)
   331 	#define TRACERET2(aClassification, aFormatId, aUid, r, a2)
       
   332 	#define TRACERET3(aClassification, aFormatId, aUid, r, a2, a3)
       
   333 	#define TRACERET4(aClassification, aFormatId, aUid, r, a2, a3, a4)
       
   334 	#define TRACERET5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)
       
   335 	#define TRACERET6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)
       
   336 	#define TRACERET7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
       
   337 	#define TRACERET8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
       
   338 
       
   339 	#define TRACERETMULT1(aClassification, aFormatId, aUid, r)
       
   340 	#define TRACERETMULT2(aClassification, aFormatId, aUid, r, a2)
       
   341 	#define TRACERETMULT3(aClassification, aFormatId, aUid, r, a2, a3)
       
   342 	#define TRACERETMULT4(aClassification, aFormatId, aUid, r, a2, a3, a4)
       
   343 	#define TRACERETMULT5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5)
       
   344 	#define TRACERETMULT6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6)
       
   345 	#define TRACERETMULT7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7)
       
   346 	#define TRACERETMULT8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8)
       
   347 #endif
       
   348 
    94 
   349 
    95 
   350 
    96 
   351 
    97 
   352 #endif
       
   353 
    98 
       
    99 
       
   100 #endif	// #if !defined(__FTRACE_H__)
       
   101 
       
   102