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 |
25 /** |
39 /** |
26 @internalComponent |
40 @internalComponent |
27 @prototype |
41 @prototype |
28 */ |
42 */ |
29 |
43 |
30 #if ((defined (_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UDEB)) || \ |
44 #if ((defined (_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UDEB)) || \ |
31 (!defined(_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UREL))) |
45 (!defined(_DEBUG) && defined (SYMBIAN_FTRACE_ENABLE_UREL))) |
32 #include "OstTraceDefinitions.h" // may or may not define OST_TRACE_COMPILER_IN_USE |
46 #define SYMBIAN_FTRACE_ENABLE |
|
47 #endif |
|
48 |
|
49 |
|
50 |
|
51 inline TBool Trace1(TClassification aClassification, TFormatId aFormatId, TModuleUid aUid, TUint a1) |
|
52 { |
|
53 return BTraceFilteredContext12( |
|
54 aClassification, // Category |
|
55 0, // Sub-category |
|
56 aUid, // UID |
|
57 aFormatId, |
|
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 }; |
|
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 } |
33 #else |
196 #else |
34 #undef OST_TRACE_COMPILER_IN_USE |
197 extern RFTrace TheFtrace; |
35 #undef OST_TRACE_CATEGORY |
198 #define RFTRACE_OPEN |
36 #define OST_TRACE_CATEGORY OST_TRACE_CATEGORY_NONE |
199 #define RFTRACE_CLOSE |
37 |
200 #endif |
38 #undef OstTrace0 |
201 |
39 #undef OstTrace1 |
202 // Use these macros for tracing 1-8 arbitrary data types.... |
40 #undef OstTraceData |
203 #define TRACEMULT1(aClassification, aFormatId, aUid, a1) \ |
41 #undef OstTraceExt1 |
204 if (BTrace::CheckFilter2(aClassification, aUid)) \ |
42 #undef OstTraceExt2 |
205 { \ |
43 #undef OstTraceExt3 |
206 RFTRACE_OPEN \ |
44 #undef OstTraceExt4 |
207 TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,1,RFTrace::PkgData(a1)); \ |
45 #undef OstTraceExt5 |
208 } |
46 |
209 |
47 #define OstTrace0( aGroupName, aTraceName, aTraceText ) |
210 #define TRACEMULT2(aClassification, aFormatId, aUid, a1, a2) \ |
48 #define OstTrace1( aGroupName, aTraceName, aTraceText, aParam ) |
211 if (BTrace::CheckFilter2(aClassification, aUid)) \ |
49 #define OstTraceData( aGroupName, aTraceName, aTraceText, aPtr, aLength ) |
212 { \ |
50 #define OstTraceExt1( aGroupName, aTraceName, aTraceText, aParam ) |
213 RFTRACE_OPEN \ |
51 #define OstTraceExt2( aGroupName, aTraceName, aTraceText, aParam1, aParam2 ) |
214 TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,2,RFTrace::PkgData(a1),RFTrace::PkgData(a2)); \ |
52 #define OstTraceExt3( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3 ) |
215 } |
53 #define OstTraceExt4( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4 ) |
216 |
54 #define OstTraceExt5( aGroupName, aTraceName, aTraceText, aParam1, aParam2, aParam3, aParam4, aParam5 ) |
217 #define TRACEMULT3(aClassification, aFormatId, aUid, a1, a2, a3) \ |
55 #endif |
218 if (BTrace::CheckFilter2(aClassification, aUid)) \ |
56 |
219 { \ |
57 |
220 RFTRACE_OPEN \ |
58 #if defined (OST_TRACE_COMPILER_IN_USE) |
221 TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,3,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3)); \ |
59 // This class is used to reconstruct an RMessage2 object from a message handle so that we can |
222 } |
60 // call RMessagePtr2::Client() and then RThread::Id() to retrieve the client's thread Id. |
223 |
61 // This is useful for matching client requests to calls to the proxydrive |
224 #define TRACEMULT4(aClassification, aFormatId, aUid, a1, a2, a3, a4) \ |
62 class RDummyMessage : public RMessage2 |
225 if (BTrace::CheckFilter2(aClassification, aUid)) \ |
63 { |
226 { \ |
64 public: |
227 RFTRACE_OPEN \ |
65 inline RDummyMessage(TInt aHandle) {iHandle = aHandle; iFunction=-1;} |
228 TheFtrace.TraceMultiple(aClassification,aFormatId,aUid,4,RFTrace::PkgData(a1),RFTrace::PkgData(a2),RFTrace::PkgData(a3),RFTrace::PkgData(a4)); \ |
66 }; |
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 } |
67 |
258 |
68 |
259 |
69 // This macro retrieves the client thread ID from a message, which is useful for |
260 // This macro retrieves the client thread ID from a message, which is useful for |
70 // associating server-side requests with client threads |
261 // associating server-side requests with client threads |
71 #define TRACETHREADID(aMsg) \ |
262 #define TRACETHREADID(aMsg) \ |
83 // This macro retrieves the client thread ID from a message handle |
274 // This macro retrieves the client thread ID from a message handle |
84 #define TRACETHREADIDH(aMsgHandle) \ |
275 #define TRACETHREADIDH(aMsgHandle) \ |
85 RDummyMessage msg(aMsgHandle); \ |
276 RDummyMessage msg(aMsgHandle); \ |
86 TRACETHREADID(msg); |
277 TRACETHREADID(msg); |
87 |
278 |
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) |
90 #define TRACETHREADID(aMsg) |
327 #define TRACETHREADID(aMsg) |
91 #define TRACETHREADIDH(aMsgHandle) |
328 #define TRACETHREADIDH(aMsgHandle) |
92 |
329 |
93 #endif // #if defined (OST_TRACE_COMPILER_IN_USE) |
330 #define TRACERET1(aClassification, aFormatId, aUid, r) |
94 |
331 #define TRACERET2(aClassification, aFormatId, aUid, r, a2) |
95 |
332 #define TRACERET3(aClassification, aFormatId, aUid, r, a2, a3) |
96 |
333 #define TRACERET4(aClassification, aFormatId, aUid, r, a2, a3, a4) |
97 |
334 #define TRACERET5(aClassification, aFormatId, aUid, r, a2, a3, a4, a5) |
98 |
335 #define TRACERET6(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6) |
99 |
336 #define TRACERET7(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7) |
100 #endif // #if !defined(__FTRACE_H__) |
337 #define TRACERET8(aClassification, aFormatId, aUid, r, a2, a3, a4, a5, a6, a7, a8) |
101 |
338 |
102 |
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 |
|
349 |
|
350 |
|
351 |
|
352 #endif |
|
353 |