First public contribution.
1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
21 #ifdef __KERNEL_MODE__
22 #include <kernel/kernel.h>
23 #else //__KERNEL_MODE__
25 #endif //__KERNEL_MODE__
26 #include <e32btrace.h>
37 The primary filter type used as classification information.
39 typedef TUint8 TPrimaryFilter;
41 Secondary filter type.
42 The secondary filter type used as classification information.
44 typedef TUint32 TSecondaryFilter;
48 The trace contains information used to debug an application
49 This can be used in both UREL and UDEB builds.
51 const TPrimaryFilter KDebug = 253;
56 Use the schema in conjunction with primary and secondary filters to determine
57 how a trace shall be interpreted.
58 The schema must represent a specific, well-documented, and consistent plan;
59 a way to define the structure and/or its content.
61 typedef TUint8 TTraceSchema;
64 The schema is binary, or raw data.
66 const TTraceSchema KBinary = 0;//Binary format
68 The schema is ASCII text.
70 const TTraceSchema KText = 1;//Text only
73 Maximum length of a formatted string
75 const TInt KMaxPrintfSize = 256;
78 /**@internalComponent*/
79 #define UTRACE_HEADER(aSize,aF1,aSchema,aContext,aPc) \
80 ((((aSize)+(4&(TBool)aContext<<2)+(4&(TBool)aPc<<2))<<BTrace::ESizeIndex*8) \
81 +(((BTrace::EContextIdPresent & (aContext<<3))|(BTrace::EPcPresent & (aPc<<4)))<<BTrace::EFlagsIndex*8) \
82 +((aF1)<<BTrace::ECategoryIndex*8) \
83 +((aSchema)<<BTrace::ESubCategoryIndex*8))
84 /**@internalComponent*/
85 #define UTracePf0(aF1,aSchema,aContext,aPc) \
87 (UTRACE_HEADER(4,(aF1),(aSchema),(aContext),(aPc)),0,0,0)
88 /**@internalComponent*/
89 #define UTracePf1(aF1,aSchema,aContext,aPc,a1) \
90 BTrace::OutX(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),0,0)
91 /**@internalComponent*/
92 #define UTracePf2(aF1,aSchema,aContext,aPc,a1,a2) \
93 BTrace::OutX(UTRACE_HEADER(12,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),(TUint32)(a2),0)
94 /**@internalComponent*/
95 #define UTracePf3(aF1,aSchema,aContext,aPc,a1,a2,a3) \
96 BTrace::OutX(UTRACE_HEADER(16,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
97 /**@internalComponent*/
98 #define UTracePfAny(aF1,aSchema,aContext,aPc,a1,aData,aDataSize) \
99 BTrace::OutBig(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(a1),aData,(TInt)(aDataSize))
100 /**@internalComponent*/
101 #define UTraceSf0(aF1,aF2,aSchema,aContext,aPc) \
102 BTrace::OutFilteredX(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),0,0)
103 /** @internalComponent */
104 #define UTraceSf1(aF1,aF2,aSchema,aContext,aPc,a1) \
105 BTrace::OutFilteredX(UTRACE_HEADER(12,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),(TUint32)(a1),0)
106 /** @internalComponent */
107 #define UTraceSf2(aF1,aF2,aSchema,aContext,aPc,a1,a2) \
108 BTrace::OutFilteredX(UTRACE_HEADER(16,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),(TUint32)(a1),(TUint32)(a2))
109 /** @internalComponent */
110 #define UTraceSfAny(aF1,aF2,aSchema,aContext,aPc,aData,aDataSize) \
111 BTrace::OutFilteredBig(UTRACE_HEADER(8,(aF1),(aSchema),(aContext),(aPc)),(TUint32)(aF2),aData,(TInt)(aDataSize))
115 Class for tracing from user and kernel side.
117 This appends entries to a trace log.
118 Each trace point require classification information to be passed.
119 Classification information, i.e. primary and secondary filter,
120 is meta-data about the trace entry that can be used for
121 filtering, e.g. the trace was inserted by a particular component.
123 In order to append trace points to the trace log they
124 need to be turned on and off at run-time, based on the classification.
125 It is also possible to turn trace points on and off
126 at compile-time using the SYMBIAN_TRACE_ENABLE macro.
128 The class can be used in two ways, either using the
129 static methods without any preparatory work, or by setting up
130 an object which has all necessary information pre-defined which
131 allows each consecutive call to contain a minimum of information.
132 The latter set of methods are more intrusive both at run-time and
136 TBool includeContextID = ETrue;
137 TBool includePc = EFalse;
138 TUint32 traceData = aData;
139 TPrimaryFilter filter1 = 253;
141 TUTrace tracer(filter1, KBinary, includeContextID, includePc);
142 tracer.Printf(_L("My trace point."));
143 tracer.Trace(traceData);
147 TUTrace::PrintfPrimary(filter1, KBinary, includeContextID, includePc, _L("My trace point with data %i."), traceData);
148 TUTrace::TracePrimary(filter1, KBinary, includeContextID, includePc, traceData);
154 Trace does not enforce any security. It is the developer's responsibility
155 to ensure that trace points do not contain any sensitive information that may
156 be used to compromise platform security.
161 #if defined (SYMBIAN_TRACE_ENABLE) || defined (__DOXYGEN__)
167 Construct a trace object with classification for
170 @param aF1 Primary filter as classification information
171 @param aSchema The schema used to determine the format of the content
172 @param aIncludeContextID Include context ID in the trace
173 @param aIncludePc Include program counter in the trace
175 TUTrace(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
177 Set(aF1, aSchema, aIncludeContextID, aIncludePc);
181 Construct a trace object with classification for both
182 primary and secondary filters.
184 @param aF1 Primary filter as classification information
185 @param aF2 Secondary filter as classification information
186 @param aSchema The schema used to determine the format of the content
187 @param aIncludeContextID Include context ID in the trace
188 @param aIncludePc Include program counter in the trace
190 TUTrace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
192 Set(aF1, aF2, aSchema, aIncludeContextID, aIncludePc);
197 Set the classification and additional information.
199 @param aF1 Primary filter as classification information
200 @param aSchema The schema used to determine the format of the content
201 @param aIncludeContextID Include context ID in the trace
202 @param aIncludePc Include program counter in the trace
204 void Set(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
209 iPresent = aIncludeContextID;
210 iPresent |= aIncludePc << EPc;
217 Set the classification and additional information.
219 @param aF1 Primary filter as classification information
220 @param aF2 Secondary filter as classification information
221 @param aSchema The schema used to determine the format of the content
222 @param aIncludeContextID Include context ID in the trace
223 @param aIncludePc Include program counter in the trace
225 void Set(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID , TBool aIncludePc)
227 Set(aF1, aSchema, aIncludeContextID, aIncludePc);
231 #ifdef __KERNEL_MODE__
234 Prints a formatted string in kernel mode only.
236 The function uses Kern::AppendFormat() to do the formatting.
238 Although it is safe to call this function from an ISR, it polls the output
239 serial port and may take a long time to complete, invalidating any
242 If called from an ISR, it is possible for output text to be intermingled
243 with other output text if one set of output interrupts or preempts another.
245 Some of the formatting options may not work inside an ISR.
247 Be careful not to use a string that is too long to fit onto the stack.
248 If the specified string is too big to fit into a single trace
249 a multipart trace is generated.
251 @param aFmt The format string. This must not be longer than 256 characters.
252 @param ... A variable number of arguments to be converted to text as dictated
253 by the format string.
255 @return The trace was/was not logged.
257 @pre Calling thread can either be in a critical section or not.
258 @pre Interrupts must be enabled.
259 @pre Kernel must be unlocked
260 @pre Call in any context.
261 @pre Suitable for use in a device driver
262 @pre Classification information must be set up
264 @see Kern::AppendFormat()
265 @see BTrace::TMultipart
267 TBool Printf(const char* aFmt, ...)
269 TBuf8<KMaxPrintfSize> buf;
272 Kern::AppendFormat(buf,aFmt,list);
273 TUint8 oldFormat = iSchema;
275 TBool logged = EFalse;
276 logged = Trace(buf.Ptr(),buf.Size());
281 #else //__KERNEL_MODE__
284 Prints a formatted string.
286 @param aFmt The format string. This must not be longer than 256 characters.
287 @param ... A variable number of arguments to be converted to text as dictated
288 by the format string.
290 @return The trace was/was not logged.
292 @pre Classification information must be set up
294 TBool Printf(const char* aFmt, ...)
296 TTruncateOverflow8 overflow;
299 TPtrC8 fmt((const TText8*)aFmt);
300 TBuf8<KMaxPrintfSize> buf;
301 buf.AppendFormatList(fmt,list,&overflow);
302 TUint8 oldFormat = iSchema;
304 TBool logged = EFalse;
305 logged = Trace(buf.PtrZ(),buf.Size());
311 Prints a formatted string.
313 @param aFmt The format string. This must not be longer than 256 characters.
314 @param ... A variable number of arguments to be converted to text as dictated
315 by the format string.
317 @return The trace was/was not logged.
319 @pre Classification information must be set up
321 TBool Printf(TRefByValue<const TDesC16> aFmt,...)
323 TTruncateOverflow16 overflow;
326 TBuf<KMaxPrintfSize> buf;
327 buf.AppendFormatList(aFmt,list,&overflow);
328 TUint8 oldFormat = iSchema;
330 TBool logged = EFalse;
332 TPtr8 p(buf.Collapse());
333 logged = Trace(buf.PtrZ(), p.Size());
335 logged = Trace(buf.PtrZ(), buf.Size());
344 @param aDes The string. This can be of variable length.
346 @return The trace was/was not logged.
348 @pre Classification information must be set up
350 TBool Printf(const TDesC8& aDes)
352 TUint8 oldFormat = iSchema;
354 TBool logged = EFalse;
355 logged = Trace(aDes.Ptr(), aDes.Size());
363 @param aDes The string. This can be of variable length.
365 @return The trace was/was not logged.
367 @pre Classification information must be set up
369 TBool Printf(const TDesC16& aDes)
371 TUint8 oldFormat = iSchema;
373 TBool logged = EFalse;
374 logged = Trace(aDes.Ptr(), aDes.Size());
379 #endif //__KERNEL_MODE__
382 Sends a trace with no payload data.
384 @return The trace was/was not logged.
386 @pre Classification information must be set up
392 return UTraceSf0(iF1,iF2,iSchema,ContextID(),Pc());
394 return UTracePf0(iF1,iSchema,ContextID(),Pc());
398 Sends a trace containing 4 bytes of data.
400 @param aData1 4 bytes of data.
402 @return The trace was/was not logged.
404 @pre Classification information must be set up
406 TBool Trace(TUint32 aData1)
410 return UTraceSf1(iF1,iF2,iSchema,ContextID(),Pc(), aData1);
412 return UTracePf1(iF1,iSchema,ContextID(),Pc(), aData1);
416 Sends a trace with 8 bytes of data.
418 @param aData1 4 bytes of data
419 @param aData2 4 bytes of data
421 @return The trace was/was not logged.
423 @pre Classification information must be set up
425 TBool Trace(TUint32 aData1, TUint32 aData2)
429 return UTraceSf2(iF1,iF2,iSchema,ContextID(),Pc(), aData1, aData2);
431 return UTracePf2(iF1,iSchema,ContextID(),Pc(),aData1,aData2);
435 Sends a trace with 12 bytes of data.
436 Note: This method does not support secondary filtering.
438 @param aData1 4 bytes of data
439 @param aData2 4 bytes of data
440 @param aData3 4 bytes of data
442 @return The trace was/was not logged.
444 @pre Classification information must be set up
446 TBool Trace(TUint32 aData1, TUint32 aData2, TUint32 aData3)
452 return UTracePf3(iF1,iSchema,ContextID(),Pc(),aData1,aData2,aData3);
456 Sends a trace with variable length data.
458 If the specified data is too big to fit into a single
459 trace record a multipart trace is generated.
461 @param aData Address of addition data to add to trace.
462 Must be word aligned, i.e. a multiple of 4.
463 @param aSize Number of bytes of additional data.
465 @return The trace was/was not logged.
467 @pre Classification information must be set up
469 @see BTrace::TMultipart
471 TBool Trace(const TAny* aData, TInt aSize)
475 return UTraceSfAny(iF1,iF2,iSchema,ContextID(),Pc(),aData,aSize);
477 return UTracePfAny(iF1,iSchema,ContextID(),Pc(),0,aData,aSize);
482 #ifdef __KERNEL_MODE__
485 Prints a formatted string in kernel mode only.
486 The trace is classified by primary filter only.
488 The function uses Kern::AppendFormat() to do the formatting.
490 Although it is safe to call this function from an ISR, it polls the output
491 serial port and may take a long time to complete, invalidating any
494 If called from an ISR, it is possible for output text to be intermingled
495 with other output text if one set of output interrupts or preempts another.
497 Some of the formatting options may not work inside an ISR.
499 Be careful not to use a string that is too long to fit onto the stack.
500 If the specified string is too long to fit into a single trace record
501 a multipart trace is generated.
504 @param aF1 Primary filter as classification information
505 @param aIncludeContextID Include context ID in the trace
506 @param aIncludePc Include program counter in the trace
507 @param aFmt The format string. This must not be longer than 256 characters.
508 @param ... A variable number of arguments to be converted to text as dictated
509 by the format string.
511 @return The trace was/was not logged.
513 @pre Calling thread can either be in a critical section or not.
514 @pre Interrupts must be enabled.
515 @pre Kernel must be unlocked
516 @pre Call in any context.
517 @pre Suitable for use in a device driver
519 @see Kern::AppendFormat()
520 @see BTrace::TMultipart
522 static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
524 TBuf8<KMaxPrintfSize> buf;
527 Kern::AppendFormat(buf,aFmt,list);
528 return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.Ptr(),buf.Size());
531 #else //__KERNEL_MODE__
534 Prints a formatted string. The trace is classified by primary filter only.
536 If the specified string is too long to fit into a single trace record
537 a multipart trace is generated.
539 @param aF1 Primary filter as classification information
540 @param aIncludeContextID Include context ID in the trace
541 @param aIncludePc Include program counter in the trace
542 @param aFmt The format string. This must not be longer than 256 characters.
543 @param ... A variable number of arguments to be converted to text as dictated
544 by the format string.
546 @return The trace was/was not logged.
548 @see BTrace::TMultipart
550 static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
552 TTruncateOverflow8 overflow;
555 TPtrC8 fmt((const TText8*)aFmt);
556 TBuf8<KMaxPrintfSize> buf;
557 buf.AppendFormatList(fmt,list,&overflow);
558 return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(),buf.Size());
562 Prints a formatted string. The trace is classified by primary filter only.
564 If the specified string is too long to fit into a single trace record
565 a multipart trace is generated.
567 @param aF1 Primary filter as classification information
568 @param aIncludeContextID Include context ID in the trace
569 @param aIncludePc Include program counter in the trace
570 @param aFmt The format string. This must not be longer than 256 characters.
571 @param ... A variable number of arguments to be converted to text as dictated
572 by the format string.
574 @return The trace was/was not logged.
576 @see BTrace::TMultipart
578 static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, TRefByValue<const TDesC16> aFmt,...)
580 TTruncateOverflow16 overflow;
583 TBuf<KMaxPrintfSize> buf;
584 buf.AppendFormatList(aFmt,list,&overflow);
586 TPtr8 p(buf.Collapse());
587 return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(), p.Size());
589 return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc, 0, buf.PtrZ(), buf.Size());
594 Prints a string. The trace is classified by primary filter only.
596 If the specified string is too long to fit into a single trace record
597 a multipart trace is generated.
599 @param aF1 Primary filter as classification information
600 @param aIncludeContextID Include context ID in the trace
601 @param aIncludePc Include program counter in the trace
602 @param aDes The string. This can be of variable length.
604 @return The trace was/was not logged.
606 @see BTrace::TMultipart
608 static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const TDesC8& aDes)
610 return UTracePfAny(aF1, KText, aIncludeContextID, aIncludePc,0, aDes.Ptr(), aDes.Size());
614 Prints a string. The trace is classified by primary filter only.
617 If the specified string is too long to fit into a single trace record
618 a multipart trace is generated.
620 @param aF1 Primary filter as classification information
621 @param aIncludeContextID Include context ID in the trace
622 @param aIncludePc Include program counter in the trace
623 @param aDes The string. This can be of variable length.
625 @return The trace was/was not logged.
627 @see BTrace::TMultipart
629 static TBool PrintfPrimary(TPrimaryFilter aF1, TBool aIncludeContextID, TBool aIncludePc, const TDesC16& aDes)
631 TUTrace trace(aF1,KText,aIncludeContextID,aIncludePc);
632 return trace.Printf(aDes);
636 Prints a formatted string. The trace is classified by primary and secondary filter.
639 If the specified string is too long to fit into a single trace record
640 a multipart trace is generated.
642 @param aF1 Primary filter as classification information
643 @param aF2 Secondary filter as classification information
644 @param aIncludeContextID Include context ID in the trace
645 @param aIncludePc Include program counter in the trace
646 @param aFmt The format string. This must not be longer than 256 characters.
647 @param ... A variable number of arguments to be converted to text as dictated
648 by the format string.
650 @return The trace was/was not logged.
652 @see BTrace::TMultipart
654 static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const char* aFmt, ...)
656 TTruncateOverflow8 overflow;
659 TPtrC8 fmt((const TText8*)aFmt);
660 TBuf8<KMaxPrintfSize> buf;
661 buf.AppendFormatList(fmt,list,&overflow);
662 return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(),buf.Size());
666 Prints a formatted string. The trace is classified by primary and secondary filter.
668 If the specified string is too long to fit into a single trace record
669 a multipart trace is generated.
671 @param aF1 Primary filter as classification information
672 @param aF2 Secondary filter as classification information
673 @param aIncludeContextID Include context ID in the trace
674 @param aIncludePc Include program counter in the trace
675 @param aFmt The format string. This must not be longer than 256 characters.
676 @param ... A variable number of arguments to be converted to text as dictated
677 by the format string.
679 @return The trace was/was not logged.
681 @see BTrace::TMultipart
683 static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, TRefByValue<const TDesC16> aFmt,...)
685 TTruncateOverflow16 overflow;
688 TBuf<KMaxPrintfSize> buf;
689 buf.AppendFormatList(aFmt,list,&overflow);
691 TPtr8 p(buf.Collapse());
692 return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(), p.Size());
694 return UTraceSfAny(aF1, aF2, KText, aIncludeContextID, aIncludePc, buf.PtrZ(), buf.Size());
699 Prints a string. The trace is classified by primary and secondary filter.
701 If the specified string is too long to fit into a single trace record
702 a multipart trace is generated.
704 @param aF1 Primary filter as classification information
705 @param aF2 Secondary filter as classification information
706 @param aIncludeContextID Include context ID in the trace
707 @param aIncludePc Include program counter in the trace
708 @param aDes The string. This can be of variable length.
710 @return The trace was/was not logged.
712 @see BTrace::TMultipart
714 static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const TDesC8& aDes)
716 return UTraceSfAny(aF1, aF2, KText,aIncludeContextID, aIncludePc, aDes.Ptr(), aDes.Size());
720 Prints a string. The trace is classified by primary and secondary filter.
722 If the specified string is too long to fit into a single trace record
723 a multipart trace is generated.
725 @param aF1 Primary filter as classification information
726 @param aF2 Secondary filter as classification information
727 @param aIncludeContextID Include context ID in the trace
728 @param aIncludePc Include program counter in the trace
729 @param aDes The string. This can be of variable length.
731 @return The trace was/was not logged.
733 @see BTrace::TMultipart
735 static TBool Printf(TPrimaryFilter aF1, TSecondaryFilter aF2, TBool aIncludeContextID, TBool aIncludePc, const TDesC16& aDes)
737 TUTrace trace(aF1,aF2,KText,aIncludeContextID,aIncludePc);
738 return trace.Printf(aDes);
741 #endif //__KERNEL_MODE_
744 Sends a trace with no payload. The trace is classified
745 by primary filter only.
747 @param aF1 Primary filter as classification information
748 @param aSchema The schema used to determine the format of the content
749 @param aIncludeContextID Include context ID in the trace
750 @param aIncludePc Include program counter in the trace
752 @return The trace was/was not logged.
754 static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
756 return UTracePf0(aF1, aSchema, aIncludeContextID, aIncludePc);
760 Sends a trace with 4 bytes of data. The trace is classified
761 by primary filter only.
763 @param aF1 Primary filter as classification information
764 @param aSchema The schema used to determine the format of the content
765 @param aIncludeContextID Include context ID in the trace
766 @param aIncludePc Include program counter in the trace
767 @param aData1 4 bytes of data
769 @return The trace was/was not logged.
771 static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1)
773 return UTracePf1(aF1, aSchema, aIncludeContextID, aIncludePc, aData1);
777 Sends a trace with 8 bytes of data. The trace is classified
778 by primary filter only.
780 @param aF1 Primary filter as classification information
781 @param aSchema The schema used to determine the format of the content
782 @param aIncludeContextID Include context ID in the trace
783 @param aIncludePc Include program counter in the trace
784 @param aData1 4 bytes of data
785 @param aData2 4 bytes of data
787 @return The trace was/was not logged.
789 static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2)
791 return UTracePf2(aF1, aSchema, aIncludeContextID, aIncludePc,aData1,aData2);
795 Sends a trace with 12 bytes of data. The trace is classified
796 by primary filter only.
798 @param aF1 Primary filter as classification information
799 @param aSchema The schema used to determine the format of the content
800 @param aIncludeContextID Include context ID in the trace
801 @param aIncludePc Include program counter in the trace
802 @param aData1 4 bytes of data
803 @param aData2 4 bytes of data
804 @param aData3 4 bytes of data
806 @return The trace was/was not logged.
808 static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2, TUint aData3)
810 return UTracePf3(aF1, aSchema, aIncludeContextID, aIncludePc,aData1,aData2,aData3);
814 Sends a trace with variable length data. The trace is classified
815 by primary filter only.
817 If the specified data is too big to fit into a single
818 trace record a multipart trace is generated.
820 @param aF1 Primary filter as classification information
821 @param aSchema The schema used to determine the format of the content
822 @param aIncludeContextID Include context ID in the trace
823 @param aIncludePc Include program counter in the trace
824 @param aData Address of addition data to add to trace.
825 Must be word aligned, i.e. a multiple of 4.
826 @param aSize Number of bytes of additional data.
828 @return The trace was/was not logged.
830 @see BTrace::TMultipart
832 static TBool TracePrimary(TPrimaryFilter aF1, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, const TAny* aData, TInt aSize)
834 return UTracePfAny(aF1, aSchema, aIncludeContextID, aIncludePc, 0, aData, aSize);
838 Sends a trace with no payload. The trace is classified
839 by primary and secondary filter.
841 @param aF1 Primary filter as classification information
842 @param aF2 Secondary filter as classification information
843 @param aSchema The schema used to determine the format of the content
844 @param aIncludeContextID Include context ID in the trace
845 @param aIncludePc Include program counter in the trace
847 @return The trace was/was not logged.
849 static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc)
851 return UTraceSf0(aF1, aF2, aSchema, aIncludeContextID, aIncludePc);
855 Sends a trace with 4 bytes of data. The trace is classified
856 by primary and secondary filter.
858 @param aF1 Primary filter as classification information
859 @param aF2 Secondary filter as classification information
860 @param aSchema The schema used to determine the format of the content
861 @param aIncludeContextID Include context ID in the trace
862 @param aIncludePc Include program counter in the trace
863 @param aData1 4 bytes of data
865 @return The trace was/was not logged.
867 static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1)
869 return UTraceSf1(aF1, aF2, aSchema , aIncludeContextID, aIncludePc, aData1);
873 Sends a trace with 8 bytes of data. The trace is classified
874 by primary and secondary filter.
876 @param aF1 Primary filter as classification information
877 @param aF2 Secondary filter as classification information
878 @param aSchema The schema used to determine the format of the content
879 @param aIncludeContextID Include context ID in the trace
880 @param aIncludePc Include program counter in the trace
881 @param aData1 4 bytes of data
882 @param aData2 4 bytes of data
884 @return The trace was/was not logged.
886 static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, TUint32 aData1, TUint32 aData2)
888 return UTraceSf2(aF1, aF2, aSchema , aIncludeContextID, aIncludePc,aData1,aData2);
892 Sends a trace with variable length data. The trace is classified
893 by primary and secondary filter.
895 If the specified data is too big to fit into a single
896 trace record a multipart trace is generated.
898 @param aF1 Primary filter as classification information
899 @param aF2 Secondary filter as classification information
900 @param aSchema The schema used to determine the format of the content
901 @param aIncludeContextID Include context ID in the trace
902 @param aIncludePc Include program counter in the trace
903 @param aData Address of addition data to add to trace.
904 Must be word aligned, i.e. a multiple of 4.
905 @param aSize Number of bytes of additional data.
907 @return The trace was/was not logged.
909 @see BTrace::TMultipart
911 static TBool Trace(TPrimaryFilter aF1, TSecondaryFilter aF2, TTraceSchema aSchema, TBool aIncludeContextID, TBool aIncludePc, const TAny* aData, TInt aSize)
913 return UTraceSfAny(aF1, aF2, aSchema, aIncludeContextID, aIncludePc, aData, aSize);
918 // See/Update comments below
924 enum TTraceInfoPresent
931 Dummy class to toss away overflow
934 #ifndef __KERNEL_MODE__
935 class TTruncateOverflow16 : public TDes16Overflow
938 virtual void Overflow(TDes&) {};
941 Dummy class to toss away overflow
944 class TTruncateOverflow8 : public TDes8Overflow
947 virtual void Overflow(TDes8&) {};
949 #endif //__KERNEL_MODE__
964 return (iPresent&2)>>EPc;
969 TTraceSchema iSchema;
970 TSecondaryFilter iF2;
977 #else //SYMBIAN_TRACE_ENABLE
984 Construct a trace object with classification for
987 @param aF1 Primary filter as classification information
988 @param aSchema The schema used to determine the format of the content
989 @param aIncludeContextID Include context ID in the trace
990 @param aIncludePc Include program counter in the trace
992 TUTrace(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
995 Construct a trace object with classification for both
996 primary and secondary filters.
998 @param aF1 Primary filter as classification information
999 @param aF2 Secondary filter as classification information
1000 @param aSchema The schema used to determine the format of the content
1001 @param aIncludeContextID Include context ID in the trace
1002 @param aIncludePc Include program counter in the trace
1004 TUTrace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
1007 Set the classification and additional information.
1009 @param aF1 Primary filter as classification information
1010 @param aSchema The schema used to determine the format of the content
1011 @param aIncludeContextID Include context ID in the trace
1012 @param aIncludePc Include program counter in the trace
1014 void Set(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
1017 Set the classification and additional information.
1019 @param aF1 Primary filter as classification information
1020 @param aF2 Secondary filter as classification information
1021 @param aSchema The schema used to determine the format of the content
1022 @param aIncludeContextID Include context ID in the trace
1023 @param aIncludePc Include program counter in the trace
1025 void Set(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/){};
1026 #ifdef __KERNEL_MODE__
1029 Prints a formatted string in kernel mode only.
1031 The function uses Kern::AppendFormat() to do the formatting.
1033 Although it is safe to call this function from an ISR, it polls the output
1034 serial port and may take a long time to complete, invalidating any
1035 real-time guarantee.
1037 If called from an ISR, it is possible for output text to be intermingled
1038 with other output text if one set of output interrupts or preempts another.
1040 Some of the formatting options may not work inside an ISR.
1042 Be careful not to use a string that is too long to fit onto the stack.
1043 If the specified string is too big to fit into a single trace
1044 a multipart trace is generated.
1046 @param aFmt The format string. This must not be longer than 256 characters.
1047 @param ... A variable number of arguments to be converted to text as dictated
1048 by the format string.
1050 @return The trace was/was not logged.
1052 @pre Calling thread can either be in a critical section or not.
1053 @pre Interrupts must be enabled.
1054 @pre Kernel must be unlocked
1055 @pre Call in any context.
1056 @pre Suitable for use in a device driver
1057 @pre Classification information must be set up
1059 @see Kern::AppendFormat()
1060 @See BTrace::TMultipart
1062 TBool Printf(const char* /*aFmt*/, ...)
1067 #else //__KERNEL_MODE__
1070 Prints a formatted string.
1072 @param aFmt The format string. This must not be longer than 256 characters.
1073 @param ... A variable number of arguments to be converted to text as dictated
1074 by the format string.
1076 @return The trace was/was not logged.
1078 @pre Classification information must be set up
1080 TBool Printf(const char* /*aFmt*/, ...)
1086 Prints a formatted string.
1088 @param aFmt The format string. This must not be longer than 256 characters.
1089 @param ... A variable number of arguments to be converted to text as dictated
1090 by the format string.
1092 @return The trace was/was not logged.
1094 @pre Classification information must be set up
1096 TBool Printf(TRefByValue<const TDesC16> /*aFmt*/,...)
1104 @param aDes The string. This can be of variable length.
1106 @return The trace was/was not logged.
1108 @pre Classification information must be set up
1110 TBool Printf(const TDesC8& /*aDes*/)
1118 @param aDes The string. This can be of variable length.
1120 @return The trace was/was not logged.
1122 @pre Classification information must be set up
1124 TBool Printf(const TDesC16& /*aDes*/)
1129 #endif // __KERNEL_MODE__
1132 Sends a trace with no payload data.
1134 @return The trace was/was not logged.
1136 @pre Classification information must be set up
1144 Sends a trace containing 4 bytes of data.
1146 @param aData1 4 bytes of data.
1148 @return The trace was/was not logged.
1150 @pre Classification information must be set up
1152 TBool Trace(TUint32 /*aData1*/)
1158 Sends a trace with 8 bytes of data.
1160 @param aData1 4 bytes of data
1161 @param aData2 4 bytes of data
1163 @return The trace was/was not logged.
1165 @pre Classification information must be set up
1167 TBool Trace(TUint32 /*aData1*/, TUint32 /*aData2*/)
1173 Sends a trace with 12 bytes of data.
1174 Note: This method does not support secondary filtering.
1176 @param aData1 4 bytes of data
1177 @param aData2 4 bytes of data
1178 @param aData3 4 bytes of data
1180 @return The trace was/was not logged.
1182 @pre Classification information must be set up
1184 TBool Trace(TUint32 /*aData1*/, TUint32 /*aData2*/, TUint32 /*aData3*/)
1190 Sends a trace with variable length data.
1192 If the specified data is too big to fit into a single
1193 trace record a multipart trace is generated.
1195 @param aData Address of addition data to add to trace.
1196 Must be word aligned, i.e. a multiple of 4.
1197 @param aSize Number of bytes of additional data.
1199 @return The trace was/was not logged.
1201 @pre Classification information must be set up
1203 @See BTrace::TMultipart
1205 TBool Trace(const TAny* /*aData*/, TInt /*aSize*/)
1210 #ifdef __KERNEL_MODE__
1213 Prints a formatted string in kernel mode only.
1214 The trace is classified by primary filter only.
1216 The function uses Kern::AppendFormat() to do the formatting.
1218 Although it is safe to call this function from an ISR, it polls the output
1219 serial port and may take a long time to complete, invalidating any
1220 real-time guarantee.
1222 If called from an ISR, it is possible for output text to be intermingled
1223 with other output text if one set of output interrupts or preempts another.
1225 Some of the formatting options may not work inside an ISR.
1227 Be careful not to use a string that is too long to fit onto the stack.
1228 If the specified string is too long to fit into a single trace record
1229 a multipart trace is generated.
1232 @param aF1 Primary filter as classification information
1233 @param aIncludeContextID Include context ID in the trace
1234 @param aIncludePc Include program counter in the trace
1235 @param aFmt The format string. This must not be longer than 256 characters.
1236 @param ... A variable number of arguments to be converted to text as dictated
1237 by the format string.
1239 @return The trace was/was not logged.
1241 @pre Calling thread can either be in a critical section or not.
1242 @pre Interrupts must be enabled.
1243 @pre Kernel must be unlocked
1244 @pre Call in any context.
1245 @pre Suitable for use in a device driver
1247 @see Kern::AppendFormat()
1248 @See BTrace::TMultipart
1250 static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
1255 #else //__KERNEL_MODE__
1258 Prints a formatted string. The trace is classified by primary filter only.
1260 If the specified string is too long to fit into a single trace record
1261 a multipart trace is generated.
1263 @param aF1 Primary filter as classification information
1264 @param aIncludeContextID Include context ID in the trace
1265 @param aIncludePc Include program counter in the trace
1266 @param aFmt The format string. This must not be longer than 256 characters.
1267 @param ... A variable number of arguments to be converted to text as dictated
1268 by the format string.
1270 @return The trace was/was not logged.
1272 @See BTrace::TMultipart
1274 static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
1280 Prints a formatted string. The trace is classified by primary filter only.
1282 If the specified string is too long to fit into a single trace record
1283 a multipart trace is generated.
1285 @param aF1 Primary filter as classification information
1286 @param aIncludeContextID Include context ID in the trace
1287 @param aIncludePc Include program counter in the trace
1288 @param aFmt The format string. This must not be longer than 256 characters.
1289 @param ... A variable number of arguments to be converted to text as dictated
1290 by the format string.
1292 @return The trace was/was not logged.
1294 @See BTrace::TMultipart
1296 static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TRefByValue<const TDesC16> /*aFmt*/,...)
1303 Prints a string. The trace is classified by primary filter only.
1305 If the specified string is too long to fit into a single trace record
1306 a multipart trace is generated.
1308 @param aF1 Primary filter as classification information
1309 @param aIncludeContextID Include context ID in the trace
1310 @param aIncludePc Include program counter in the trace
1311 @param aDes The string. This can be of variable length.
1313 @return The trace was/was not logged.
1315 @See BTrace::TMultipart
1317 static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC8& /*aDes*/)
1323 Prints a string. The trace is classified by primary filter only.
1326 If the specified string is too long to fit into a single trace record
1327 a multipart trace is generated.
1329 @param aF1 Primary filter as classification information
1330 @param aIncludeContextID Include context ID in the trace
1331 @param aIncludePc Include program counter in the trace
1332 @param aDes The string. This can be of variable length.
1334 @return The trace was/was not logged.
1336 @See BTrace::TMultipart
1338 static TBool PrintfPrimary(TPrimaryFilter /*aF1*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC16& /*aDes*/)
1345 Prints a formatted string. The trace is classified by primary and secondary filter.
1348 If the specified string is too long to fit into a single trace record
1349 a multipart trace is generated.
1351 @param aF1 Primary filter as classification information
1352 @param aF2 Secondary filter as classification information
1353 @param aIncludeContextID Include context ID in the trace
1354 @param aIncludePc Include program counter in the trace
1355 @param aFmt The format string. This must not be longer than 256 characters.
1356 @param ... A variable number of arguments to be converted to text as dictated
1357 by the format string.
1359 @return The trace was/was not logged.
1361 @See BTrace::TMultipart
1363 static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const char* /*aFmt*/, ...)
1369 Prints a formatted string. The trace is classified by primary and secondary filter.
1371 If the specified string is too long to fit into a single trace record
1372 a multipart trace is generated.
1374 @param aF1 Primary filter as classification information
1375 @param aF2 Secondary filter as classification information
1376 @param aIncludeContextID Include context ID in the trace
1377 @param aIncludePc Include program counter in the trace
1378 @param aFmt The format string. This must not be longer than 256 characters.
1379 @param ... A variable number of arguments to be converted to text as dictated
1380 by the format string.
1382 @return The trace was/was not logged.
1384 @See BTrace::TMultipart
1386 static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TRefByValue<const TDesC16> /*aFmt*/,...)
1393 Prints a string. The trace is classified by primary and secondary filter.
1395 If the specified string is too long to fit into a single trace record
1396 a multipart trace is generated.
1398 @param aF1 Primary filter as classification information
1399 @param aF2 Secondary filter as classification information
1400 @param aIncludeContextID Include context ID in the trace
1401 @param aIncludePc Include program counter in the trace
1402 @param aDes The string. This can be of variable length.
1404 @return The trace was/was not logged.
1406 @See BTrace::TMultipart
1408 static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC8& /*aDes*/)
1415 Prints a string. The trace is classified by primary and secondary filter.
1417 If the specified string is too long to fit into a single trace record
1418 a multipart trace is generated.
1420 @param aF1 Primary filter as classification information
1421 @param aF2 Secondary filter as classification information
1422 @param aIncludeContextID Include context ID in the trace
1423 @param aIncludePc Include program counter in the trace
1424 @param aDes The string. This can be of variable length.
1426 @return The trace was/was not logged.
1428 @See BTrace::TMultipart
1430 static TBool Printf(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TDesC16& /*aDes*/)
1435 #endif //__KERNEL_MODE_
1438 Sends a trace with no payload. The trace is classified
1439 by primary filter only.
1441 @param aF1 Primary filter as classification information
1442 @param aSchema The schema used to determine the format of the content
1443 @param aIncludeContextID Include context ID in the trace
1444 @param aIncludePc Include program counter in the trace
1446 @return The trace was/was not logged.
1448 static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/)
1455 Sends a trace with 4 bytes of data. The trace is classified
1456 by primary filter only.
1458 @param aF1 Primary filter as classification information
1459 @param aSchema The schema used to determine the format of the content
1460 @param aIncludeContextID Include context ID in the trace
1461 @param aIncludePc Include program counter in the trace
1462 @param aData1 4 bytes of data
1464 @return The trace was/was not logged.
1466 static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/)
1473 Sends a trace with 8 bytes of data. The trace is classified
1474 by primary filter only.
1476 @param aF1 Primary filter as classification information
1477 @param aSchema The schema used to determine the format of the content
1478 @param aIncludeContextID Include context ID in the trace
1479 @param aIncludePc Include program counter in the trace
1480 @param aData1 4 bytes of data
1481 @param aData2 4 bytes of data
1483 @return The trace was/was not logged.
1485 static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/)
1492 Sends a trace with 12 bytes of data. The trace is classified
1493 by primary filter only.
1495 @param aF1 Primary filter as classification information
1496 @param aSchema The schema used to determine the format of the content
1497 @param aIncludeContextID Include context ID in the trace
1498 @param aIncludePc Include program counter in the trace
1499 @param aData1 4 bytes of data
1500 @param aData2 4 bytes of data
1501 @param aData3 4 bytes of data
1503 @return The trace was/was not logged.
1505 static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/, TUint /*aData3*/)
1512 Sends a trace with variable length data. The trace is classified
1513 by primary filter only.
1515 If the specified data is too big to fit into a single
1516 trace record a multipart trace is generated.
1518 @param aF1 Primary filter as classification information
1519 @param aSchema The schema used to determine the format of the content
1520 @param aIncludeContextID Include context ID in the trace
1521 @param aIncludePc Include program counter in the trace
1522 @param aData Address of addition data to add to trace.
1523 Must be word aligned, i.e. a multiple of 4.
1524 @param aSize Number of bytes of additional data.
1526 @return The trace was/was not logged.
1528 @See BTrace::TMultipart
1530 static TBool TracePrimary(TPrimaryFilter /*aF1*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TAny* /*aData*/, TInt /*aSize*/)
1537 Sends a trace with no payload. The trace is classified
1538 by primary and secondary filter.
1540 @param aF1 Primary filter as classification information
1541 @param aF2 Secondary filter as classification information
1542 @param aSchema The schema used to determine the format of the content
1543 @param aIncludeContextID Include context ID in the trace
1544 @param aIncludePc Include program counter in the trace
1546 @return The trace was/was not logged.
1548 static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/)
1555 Sends a trace with 4 bytes of data. The trace is classified
1556 by primary and secondary filter.
1558 @param aF1 Primary filter as classification information
1559 @param aF2 Secondary filter as classification information
1560 @param aSchema The schema used to determine the format of the content
1561 @param aIncludeContextID Include context ID in the trace
1562 @param aIncludePc Include program counter in the trace
1563 @param aData1 4 bytes of data
1565 @return The trace was/was not logged.
1567 static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/)
1574 Sends a trace with 8 bytes of data. The trace is classified
1575 by primary and secondary filter.
1577 @param aF1 Primary filter as classification information
1578 @param aF2 Secondary filter as classification information
1579 @param aSchema The schema used to determine the format of the content
1580 @param aIncludeContextID Include context ID in the trace
1581 @param aIncludePc Include program counter in the trace
1582 @param aData1 4 bytes of data
1583 @param aData2 4 bytes of data
1585 @return The trace was/was not logged.
1587 static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, TUint32 /*aData1*/, TUint32 /*aData2*/)
1594 Sends a trace with variable length data. The trace is classified
1595 by primary and secondary filter.
1597 If the specified data is too big to fit into a single
1598 trace record a multipart trace is generated.
1600 @param aF1 Primary filter as classification information
1601 @param aF2 Secondary filter as classification information
1602 @param aSchema The schema used to determine the format of the content
1603 @param aIncludeContextID Include context ID in the trace
1604 @param aIncludePc Include program counter in the trace
1605 @param aData Address of addition data to add to trace.
1606 Must be word aligned, i.e. a multiple of 4.
1607 @param aSize Number of bytes of additional data.
1609 @return The trace was/was not logged.
1611 @See BTrace::TMultipart
1613 static TBool Trace(TPrimaryFilter /*aF1*/, TSecondaryFilter /*aF2*/, TTraceSchema /*aSchema*/, TBool /*aIncludeContextID*/, TBool /*aIncludePc*/, const TAny* /*aData*/, TInt /*aSize*/)
1620 Default constructor. This prevents accidental empty initialisation of traces.
1627 enum TTraceInfoPresent
1634 Dummy class to toss away overflow
1637 #ifndef __KERNEL_MODE__
1638 class TTruncateOverflow16 : public TDes16Overflow
1641 virtual void Overflow(TDes&) {};
1644 Dummy class to toss away overflow
1647 class TTruncateOverflow8 : public TDes8Overflow
1650 virtual void Overflow(TDes8&) {};
1652 #endif //__KERNEL_MODE__
1672 TTraceSchema iSchema;
1673 TSecondaryFilter iF2;
1680 #endif //SYMBIAN_TRACE_ENABLE