kernel/eka/include/e32btrace.h
changeset 0 a41df078684a
child 31 56f325a607ea
equal deleted inserted replaced
-1:000000000000 0:a41df078684a
       
     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 the License "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".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // e32\include\e32btrace.h
       
    15 // 
       
    16 // WARNING: This file contains some APIs which are internal and are subject
       
    17 //          to change without notice. Such APIs should therefore not be used
       
    18 //          outside the Kernel and Hardware Services package.
       
    19 //
       
    20 
       
    21 #ifndef E32BTRACE_H
       
    22 #define E32BTRACE_H
       
    23 
       
    24 #ifdef __KERNEL_MODE__
       
    25 class TSpinLock;
       
    26 #endif
       
    27 
       
    28 /**
       
    29 Class for handling fast tracing.
       
    30 
       
    31 A trace record consists of three parts: a header, header extensions,
       
    32 and the trace data itself.
       
    33 
       
    34 The header consists of four bytes containing:
       
    35 
       
    36 -#	Size of the record in bytes. (Maximum value is KMaxBTraceRecordSize.)
       
    37 -#	Flags. See enum TFlags.
       
    38 -#	Category. Category value from enum BTrace::TCategory.
       
    39 -#	Sub-category. The meaning of this is dependent on the value of Category.
       
    40 
       
    41 When trace records are stored in memory they are stored word (32 bit) aligned.
       
    42 Therefore the size must be rounded up to a multiple of four when calculating
       
    43 the address of the next record. E.g.
       
    44 @code
       
    45 	TUint8* record; // pointer to trace record
       
    46 	TInt size = record[BTrace::ESizeIndex];
       
    47 	record += (size+3)&~3; // move record pointer on to next record.
       
    48 @endcode
       
    49 The NextRecord() method is provided to do this operation.
       
    50 
       
    51 Following the header are optionally a number of 32 bit 'header extension' values.
       
    52 These are present in the order shown below but only exist if the appropriate flag bit
       
    53 is set in the Header.
       
    54 
       
    55 -#	Header2.		Contains flag values from enum Flags2.
       
    56 					This value is only present if the EHeader2Present flag is set.
       
    57 -#	Timestamp.		A timestamp value indicating when the trace was generated.
       
    58 					The format and resolution of this value are platform-dependent, but
       
    59 					typically will contain the same values as would be returned by
       
    60 					User::FastCounter() or NKern::FastCounter().
       
    61 					This value is only present if the ETimestampPresent flag is set.
       
    62 -#	Timestamp2.		Additional timestamp information. E.g. the most significant
       
    63 					half of a 64bit timestamp value. Note, it is valid for a Timestamp2 value
       
    64 					to be present even if the previous Timestamp is absent.
       
    65 					This value is only present if the ETimestamp2Present flag is set.
       
    66 -#	Context ID.		This value indicates the context in which the trace was generated.
       
    67 					The meaning of the id is dependent on the contents of the two
       
    68 					least significant bits:
       
    69 					-	00	indicates the value is the address of the NThread object for
       
    70 							the currently executing thread.
       
    71 					-	01	indicates Fast Interrupt (FIQ) context.
       
    72 							Other bits of the value are currently reserved for future use.
       
    73 					-	10	indicates Interrupt (IRQ) context. Other bits of the value
       
    74 							are currently reserved for future use.
       
    75 					-	11	indicates Immediate Delayed Function Call (IDFC) context.
       
    76 							Other bits of the value are currently reserved for future use.
       
    77 					.
       
    78 					This value is only present if the EContextIdPresent flag is set.
       
    79 -#	Program Counter. This is the memory address of the instruction after the location
       
    80 					the trace was output.
       
    81 					This value is only present if the EPcPresent flag is set.
       
    82 -#	Extra.			An extra value used for different purposes depending on the trace type.
       
    83 					This value is only present if the EExtraPresent flag is set.
       
    84 
       
    85 Following the header extensions are 0 or more bytes of trace data specified when the trace
       
    86 was output.
       
    87 
       
    88 To output a trace, the following macros can be used:
       
    89 - BTrace0
       
    90 - BTrace4
       
    91 - BTrace8
       
    92 - BTrace12
       
    93 - BTraceN
       
    94 - BTraceBig
       
    95 - BTracePc0
       
    96 - BTracePc4
       
    97 - BTracePc8
       
    98 - BTracePc12
       
    99 - BTracePcN
       
   100 - BTracePcBig
       
   101 - BTraceContext0
       
   102 - BTraceContext4
       
   103 - BTraceContext8
       
   104 - BTraceContext12
       
   105 - BTraceContextN
       
   106 - BTraceContextBig
       
   107 - BTraceContextPc0
       
   108 - BTraceContextPc4
       
   109 - BTraceContextPc8
       
   110 - BTraceContextPc12
       
   111 - BTraceContextPcN
       
   112 - BTraceContextPcBig
       
   113 
       
   114 Whenever a trace is output, the trace handler is called with the arguments specified.
       
   115 See typedef THandler and SetHandler().
       
   116 
       
   117 Each tracing category has a filter bit, which if set to zero means that traces in that category
       
   118 are discarded, see SetFilter(). This filtering is performed before the trace handler is
       
   119 called. This filter may also be initialised from boot time by using the 'btrace' keyword in
       
   120 an OBY file used to build a ROM image.
       
   121 
       
   122 Traces may also be additionally sent through a second level of filtering. This examines the
       
   123 first 32 bits of data in the trace and if this value isn't present in the list maintained
       
   124 in the secondary filter, the trace is discarded. The contents of the secondary filter are
       
   125 set using the SetFilter2 methods.
       
   126 
       
   127 Values used for secondary filtering must be Symbian Unique Identifiers (UIDs) allocated
       
   128 using the normal UID allocation process. Note, the following non-valid UID value ranges
       
   129 are reserved.
       
   130 - 0x00000000..0x007fffff	Reserved for platform specific use.
       
   131 - 0x00800000..0x00ffffff	Reserved for use by Symbian.
       
   132 
       
   133 To generate traces which are to be processed by the secondary filter, the following
       
   134 macros can be used:
       
   135 
       
   136 - BTraceFiltered4
       
   137 - BTraceFiltered8
       
   138 - BTraceFiltered12
       
   139 - BTraceFilteredN
       
   140 - BTraceFilteredBig
       
   141 - BTraceFilteredPc4
       
   142 - BTraceFilteredPc8
       
   143 - BTraceFilteredPc12
       
   144 - BTraceFilteredPcN
       
   145 - BTraceFilteredPcBig
       
   146 - BTraceFilteredContext4
       
   147 - BTraceFilteredContext8
       
   148 - BTraceFilteredContext12
       
   149 - BTraceFilteredContextN
       
   150 - BTraceFilteredContextBig
       
   151 - BTraceFilteredContextPc4
       
   152 - BTraceFilteredContextPc8
       
   153 - BTraceFilteredContextPc12
       
   154 - BTraceFilteredContextPcN
       
   155 - BTraceFilteredContextPcBig
       
   156 
       
   157 Traces generated using the above methods will be filtered twice; once using the primary
       
   158 filter which checks the trace's category, and once using the secondary filter which checks
       
   159 the 32 bit UID value at the start of the trace data. Therefore the trace must pass both filter
       
   160 checks for it to be sent to the trace handler for output.
       
   161 
       
   162 @publishedPartner
       
   163 @released
       
   164 */
       
   165 class BTrace
       
   166 	{
       
   167 public:
       
   168 	/**
       
   169 	Byte indices into the trace header for specific fields.
       
   170 	*/
       
   171 	enum THeaderStructure
       
   172 		{
       
   173 		/**
       
   174 		Size of record in bytes.
       
   175 		*/
       
   176 		ESizeIndex = 0,
       
   177 
       
   178 		/**
       
   179 		Bitfield of flags from enum TFlags. E.g. to detect if a timestamp is present in
       
   180 		the record, code like this could be used.
       
   181 		@code
       
   182 			TUint8* record; // pointer to trace record
       
   183 			if(record[BTrace::EFlagsIndex]&BTrace::ETimestampPresent)
       
   184 				TimestampPresent();
       
   185 			else
       
   186 				TimestampNotPresent();
       
   187 		@endcode
       
   188 		*/
       
   189 		EFlagsIndex = 1,
       
   190 
       
   191 		/**
       
   192 		Category value from enum BTrace::TCategory.
       
   193 		*/
       
   194 		ECategoryIndex = 2,
       
   195 
       
   196 		/**
       
   197 		Sub-category value. The meaning of this is dependent on the Category.
       
   198 		*/
       
   199 		ESubCategoryIndex = 3,
       
   200 		};
       
   201 
       
   202 	/**
       
   203 	Bit flags which indicate state of a trace record.
       
   204 	*/
       
   205 	enum TFlags
       
   206 		{
       
   207 		/**
       
   208 		Header2 is present in the trace record.
       
   209 		*/
       
   210 		EHeader2Present		= 1<<0,
       
   211 
       
   212 		/**
       
   213 		A timestamp value is present in the trace record.
       
   214 		*/
       
   215 		ETimestampPresent	= 1<<1,
       
   216 
       
   217 		/**
       
   218 		A second timestamp value is present in the trace record.
       
   219 		*/
       
   220 		ETimestamp2Present	= 1<<2,
       
   221 
       
   222 		/**
       
   223 		A context ID is present in the trace record.
       
   224 		*/
       
   225 		EContextIdPresent	= 1<<3,
       
   226 
       
   227 		/**
       
   228 		A CPU program counter (PC) value is present in the trace record.
       
   229 		*/
       
   230 		EPcPresent			= 1<<4,
       
   231 
       
   232 		/**
       
   233 		An 'extra' value is present in the trace record.
       
   234 		*/
       
   235 		EExtraPresent		= 1<<5,
       
   236 
       
   237 		/**
       
   238 		Indicates that the data in this trace record was truncated to keep the size
       
   239 		within the maximum permissible.
       
   240 		*/
       
   241 		ERecordTruncated	= 1<<6,
       
   242 
       
   243 		/**
       
   244 		Indicates that trace record(s) before this one are missing.
       
   245 		This can happen if the trace buffer was full when a trace output was attempted.
       
   246 		*/
       
   247 		EMissingRecord		= 1<<7
       
   248 		};
       
   249 
       
   250 	/**
       
   251 	Bit flags present in the Flags2 value of the header extension.
       
   252 	*/
       
   253 	enum TFlags2
       
   254 		{
       
   255 		/**
       
   256 		Masks out the bits for the multipart trace type. (See enum TMultiPart.)
       
   257 		*/
       
   258 		EMultipartFlagMask		= 3<<0,
       
   259 
       
   260 		/**
       
   261 		Masks out the bits for the CPU ID for SMP systems (zero if present on non SMP systems)
       
   262 		*/
       
   263 		ECpuIdMask			= 0xfff<<20,
       
   264 		};
       
   265 
       
   266 	/**
       
   267 	Values for multipart trace indicator. These values are stored in Flags2 an
       
   268 	are obtained by ANDing with the value EMultipartFlagMask.
       
   269 
       
   270 	If a 'Big' trace is generated which doesn't fit into a single trace record
       
   271 	then its data is split into several separate trace records; a multipart trace.
       
   272 
       
   273 	In multipart traces the 'extra' trace value is present in the header extension.
       
   274 	(EExtraPresent is set.) This extra value contains a unique trace identifier
       
   275 	which is the same is all parts of the trace.
       
   276 
       
   277 	The structure of the data part of each trace record in a multipart trace is described
       
   278 	below. In this description, the following labels are used.
       
   279 	-	A is the initial 4 bytes of data; the a1 argument of BTraceBig.
       
   280 	-	D is the array of bytes of additional data; the aData argument of BTraceBig.
       
   281 	-	N is the size of D; the aDataSize argument of BTraceBig
       
   282 	-	X is the maximum number of additional bytes which will fit into a trace record.
       
   283 		This is usually KMaxBTraceDataArray but this should not be assumed, instead
       
   284 		the size and other information present in each trace record should be examined.
       
   285 
       
   286 	For the first part of a multipart trace, the data in a trace record has the following
       
   287 	structure:
       
   288 
       
   289 	-	4 bytes containing N.
       
   290 	-	4 bytes containing A.
       
   291 	-	X bytes containing D[0..X-1]
       
   292 
       
   293 	If the parts are numbered 0 through to 'j', then a middle part of a multipart trace
       
   294 	is numbered 'i' where 0<i<j. The data in these parts has the structure:
       
   295 
       
   296 	-	4 bytes containing N.
       
   297 	-	4 bytes containing X*i. I.e. the offset within D for the data in this trace record.
       
   298 	-	X bytes containing D[X*i..X*i+X-1]
       
   299 
       
   300 	For the last part of a multipart trace, the data has the structure:
       
   301 
       
   302 	-	4 bytes containing N.
       
   303 	-	4 bytes containing X*j. I.e. the offset within D for the data in this trace record.
       
   304 	-	N modulo X bytes containing D[X*j..N-1]. I.e. the final bytes of the trace data.
       
   305 	*/
       
   306 	enum TMultiPart
       
   307 		{
       
   308 		/**
       
   309 		Indicates that this trace is the first part of a multipart trace.
       
   310 		*/
       
   311 		EMultipartFirst			= 1,
       
   312 
       
   313 		/**
       
   314 		Indicates that this trace is a middle part of a multipart trace.
       
   315 		I.e. it is not the first or last part.
       
   316 		*/
       
   317 		EMultipartMiddle		= 2,
       
   318 
       
   319 		/**
       
   320 		Indicates that this trace is the last part of a multipart trace.
       
   321 		*/
       
   322 		EMultipartLast			= 3,
       
   323 		};
       
   324 
       
   325 	/**
       
   326 	Enumeration of trace categories.
       
   327 	*/
       
   328 	enum TCategory
       
   329 		{
       
   330 		/**
       
   331 		Trace generated by all calls to RDebug::Printf.
       
   332 
       
   333 		The first 4 bytes of trace data contain the thread ID, RThread::Id(), for the
       
   334 		thread which caused this trace to be emitted. If the trace wasn't generated in
       
   335 		thread context, this id has the value KNullThreadId.
       
   336 
       
   337 		Subsequent bytes of data contain the ASCII text for the formatted string
       
   338 		generated by Kern::Printf.
       
   339 
       
   340 		These traces also contain a context ID, i.e. the EContextIdPresent flag is
       
   341 		set and a context ID value is present in the extended header.
       
   342 
       
   343 		If the trace text doesn't fit completely into one trace record, then
       
   344 		a multipart trace is generated. See enum TMultiPart.
       
   345 		*/
       
   346 		ERDebugPrintf = 0,
       
   347 
       
   348 		/**
       
   349 		Trace generated by all calls to Kern::Printf.
       
   350 		Trace records in this category have the same structure as ERDebugPrintf.
       
   351 		*/
       
   352 		EKernPrintf = 1,
       
   353 
       
   354 		/**
       
   355 		Trace generated by platform security diagnostic messages.
       
   356 		Trace records in this category have the same structure as ERDebugPrintf.
       
   357 		*/
       
   358 		EPlatsecPrintf = 2,
       
   359 
       
   360 		/**
       
   361 		Trace generated for the purpose of associating thread context ids with
       
   362 		the textual names of threads. These traces are usually generated when a
       
   363 		thread is created, renamed or destroyed.
       
   364 
       
   365 		If #Prime is called with this category, traces will be generated for all
       
   366 		threads currently extant.
       
   367 
       
   368 		@see enum TThreadIdentification
       
   369 		*/
       
   370 		EThreadIdentification = 3,
       
   371 
       
   372 		/**
       
   373 		Trace generated when the CPU usage changes state, e.g. at thread context switch
       
   374 		or during interrupt and DFC processing.
       
   375 
       
   376 		The purpose of this trace category is to profile CPU usage.
       
   377 
       
   378 		@see enum TCpuUsage
       
   379 		*/
       
   380 		ECpuUsage = 4,
       
   381 
       
   382         /**
       
   383         Category used for profiling device drivers, kernel extensions etc.
       
   384         Used by PERF_LOG macro.
       
   385         @prototype 9.3
       
   386         */
       
   387         EKernPerfLog = 5,
       
   388 
       
   389         /**
       
   390 		@internalTechnology
       
   391         @prototype 9.3
       
   392         */
       
   393         EClientServer = 6,
       
   394 
       
   395         /**
       
   396 		@internalTechnology
       
   397         @prototype 9.3
       
   398         */
       
   399         ERequests = 7,
       
   400 
       
   401         /**
       
   402 		Trace generated when chunks are created and destroyed, and when memory
       
   403 		is committed and decommitted to and from chunks.
       
   404 
       
   405 		If #Prime is called with this category, traces will be generated for all
       
   406 		chunks currently extant.
       
   407 
       
   408 		@see TChunks
       
   409         */
       
   410         EChunks = 8,
       
   411 
       
   412         /**
       
   413 		Trace generated when code segments are created and destroyed, mapped
       
   414 		into out of processes, and when memory is committed and decommitted to
       
   415 		and from them.
       
   416 
       
   417 		If #Prime is called with this category, traces will be generated for all
       
   418 		code segments currently extant.
       
   419 
       
   420 		@see TCodeSegs
       
   421         */
       
   422         ECodeSegs = 9,
       
   423 
       
   424 		/**
       
   425 		Trace generated by Demand Paging.
       
   426 		@prototype 9.3
       
   427 		*/
       
   428 		EPaging = 10,
       
   429 
       
   430 		/**
       
   431 		Trace generated when thread and process priorities are modified, whether
       
   432 		directly or through priority inheritance, aging or other mechanisms used
       
   433 		by the kernel.
       
   434 
       
   435 		The purpose of this category is to enable system-wide study of thread
       
   436 		priority usage.
       
   437 
       
   438 		If #Prime is called with this category, traces will be generated for all
       
   439 		threads currently extant.
       
   440 
       
   441 		@see enum TThreadPriority
       
   442 		@internalTechnology
       
   443         @prototype 9.3
       
   444 		*/
       
   445 		EThreadPriority = 11,
       
   446 
       
   447 		/**
       
   448 		Trace generated by processing Paging requests in the Media subsystem and Media drivers.
       
   449 		@prototype 9.3
       
   450 		*/
       
   451 		EPagingMedia = 12,
       
   452 
       
   453 		/**
       
   454 		Trace generated by the kernel for memory regions which don't belong to any chunk.
       
   455 		@see enum TKernelMemory
       
   456 		@prototype 9.4
       
   457 		*/
       
   458 		EKernelMemory = 13,
       
   459 
       
   460 		/**
       
   461 		Trace generated by user-mode heap usage.
       
   462 
       
   463 		Unlike other trace categories, capturing heap trace involves an additional step
       
   464 		depending on how much trace is required. To enable heap trace for a single process
       
   465 		from the moment it starts, add the following line to the .exe's project (.mmp) file:
       
   466 
       
   467 			firstlib eexe_instrumented_heap.lib
       
   468 
       
   469 		This overrides the build tools default implicit link (for .exe projects) against eexe.lib.
       
   470 
       
   471 		Alternatively, to enable heap trace for all processes at once you can enable the
       
   472 		KUSERHEAPTRACE bit (#96) of the kernel trace flags. You can set this flag either at
       
   473 		ROM-building time (look for the 'kerneltrace' line generally in \epoc32\rom\<platform>\header.iby)
       
   474 		or at runtime by running the following at the Eshell command prompt:
       
   475 
       
   476 			trace 0 0 1
       
   477 
       
   478 		Note that changing this flag at runtime only affects processes created after the flag
       
   479 		is set or unset. It will not affect running processes.
       
   480 
       
   481 		@see enum THeap
       
   482 		@prototype 9.4
       
   483 		*/
       
   484 		EHeap = 14,
       
   485 
       
   486 		/**
       
   487 		Meta trace. Trace that is only useful to programs which use or display BTrace-based data.
       
   488 		@see enum TMetaTrace
       
   489 		@prototype 9.4
       
   490 		*/
       
   491 		EMetaTrace = 15,
       
   492 
       
   493 		/**
       
   494 		Trace generated by the ram allocator to allow the physical layout of RAM
       
   495 		to be tracked.
       
   496 		@internalTechnology
       
   497 		*/
       
   498 		ERamAllocator = 16,
       
   499 
       
   500 		/**
       
   501 		Trace generated by the Fast Mutex in the Nkern.
       
   502 		*/
       
   503 		EFastMutex = 17,
       
   504 
       
   505 
       
   506 		/**
       
   507 		Trace generated by any sampling profiler.
       
   508 		@see enum TProfiling
       
   509 		*/
       
   510 		EProfiling = 18,
       
   511 
       
   512 		/**
       
   513         Trace generated by Power Resource Manager.
       
   514         @prototype 9.5
       
   515         */
       
   516         EResourceManager = 19,
       
   517 
       
   518 
       
   519         /**
       
   520         Trace generated by Power Resource Manager User-Side API.
       
   521         @prototype 9.5
       
   522         */
       
   523         EResourceManagerUs = 20,
       
   524 
       
   525 		/**
       
   526 		Trace generated by Raw Event subsystem APIs
       
   527 		@see enum TRawEventTrace
       
   528 		@prototype 9.5
       
   529 		*/
       
   530 		ERawEvent  =21,
       
   531 
       
   532 		/**
       
   533 		Trace generated by USB communications (Client, Host and OTG) where use
       
   534 		of standard logging (conditional Kern::Printf() calls) is sufficiently
       
   535 		time-consuming that the required device timings mandated by the core
       
   536 		USB standards cannot be achieved
       
   537         @prototype 9.5
       
   538 		*/
       
   539 		EUsb = 22,
       
   540 
       
   541 		/**
       
   542 		Trace generated by Symbian OS kernel synchronization objects.
       
   543         @prototype 9.5
       
   544 		*/
       
   545 		ESymbianKernelSync = 23,
       
   546 
       
   547 		/**
       
   548 		Trace generated by the flexible memory model.
       
   549 		*/
       
   550 		EFlexibleMemModel = 24,
       
   551 
       
   552 		/**
       
   553         Trace generated by IIC bus.
       
   554         @prototype 9.6
       
   555         */
       
   556         EIic = 25,
       
   557 
       
   558 		/**
       
   559 		First category value in the range reserved for platform specific use;
       
   560 		the end of this range is #EPlatformSpecificLast.
       
   561 		Symbian's code will not generate any traces with categories in this range.
       
   562 
       
   563 		It is strongly recommended that platforms reserve the first half of this range
       
   564 		(128..143) for definition and use by base-port (kernel-side) code. Any general
       
   565 		trace framework built on top of BTrace APIs should use the second half of the range.
       
   566 		This allows fast (primary filtered only) BTrace categories to be used in device drivers
       
   567 		and other base-port code, without clashing with more general trace frameworks implemented
       
   568 		for application layer code.
       
   569 		*/
       
   570 		EPlatformSpecificFirst = 128,
       
   571 
       
   572 		/**
       
   573 		Last category value in the range reserved for platform specific use.
       
   574 		@see EPlatformSpecificFirst
       
   575 		*/
       
   576 		EPlatformSpecificLast = 191,
       
   577 
       
   578 		/**
       
   579 		First category value in the range reserved for Symbian tools and future trace framework
       
   580 		implementations; the end of this range is #ESymbianExtentionsLast.
       
   581 		*/
       
   582 		ESymbianExtentionsFirst = 192,
       
   583 
       
   584 		/**
       
   585 		Last category value in the range reserved for Symbian tools and future trace framework
       
   586 		implementations.
       
   587 		@see ESymbianExtentionsFirst
       
   588 		*/
       
   589 		ESymbianExtentionsLast = 253,
       
   590 
       
   591 		/**
       
   592 		Used for testing purposes.
       
   593 
       
   594 		This may be used for ad-hoc testing purposes, e.g. special builds of components
       
   595 		with tracing enabled for diagnostic purposes.
       
   596 
       
   597 		This category is also used by the E32 BTrace unit tests.
       
   598 		@test
       
   599 		*/
       
   600 		ETest1 = 254,
       
   601 
       
   602 		/**
       
   603 		Used for testing purposes.
       
   604 
       
   605 		This may be used for ad-hoc testing purposes, e.g. special builds of components
       
   606 		with tracing enabled for diagnostic purposes.
       
   607 
       
   608 		This category is also used by the E32 BTrace unit tests.
       
   609 		@test
       
   610 		*/
       
   611 		ETest2 = 255
       
   612 		};
       
   613 
       
   614 	/**
       
   615 	Enumeration of sub-category values for trace category EThreadIdentification.
       
   616 	@see EThreadIdentification
       
   617 	*/
       
   618 	enum TThreadIdentification
       
   619 		{
       
   620 		/**
       
   621 		A nano-kernel thread (NThread) has been created.
       
   622 
       
   623 		Trace data format:
       
   624 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   625 		*/
       
   626 		ENanoThreadCreate,
       
   627 
       
   628 		/**
       
   629 		A nano-kernel thread (NThread) has been destroyed.
       
   630 
       
   631 		Trace data format:
       
   632 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   633 		*/
       
   634 		ENanoThreadDestroy,
       
   635 
       
   636 		/**
       
   637 		A thread (DThread) has been created.
       
   638 
       
   639 		Trace data format:
       
   640 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   641 		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
       
   642 		- Remaining data is the ASCII name of the thread.
       
   643 		*/
       
   644 		EThreadCreate,
       
   645 
       
   646 		/**
       
   647 		A thread (DThread) has been destroyed.
       
   648 
       
   649 		Trace data format:
       
   650 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   651 		- 4 bytes containing trace id for the process to which this thread belongs.
       
   652 		- 4 bytes containing thread ID, as returned by RThread::Id().
       
   653 		*/
       
   654 		EThreadDestroy,
       
   655 
       
   656 		/**
       
   657 		A thread (DThread) has been renamed.
       
   658 		This trace may also be output by the tracing system at initialisation
       
   659 		in order to identify threads already in existence.
       
   660 
       
   661 		Trace data format:
       
   662 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   663 		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
       
   664 		- Remaining data is the ASCII name of the thread.
       
   665 		*/
       
   666 		EThreadName,
       
   667 
       
   668 		/**
       
   669 		A process has been renamed.
       
   670 		This trace may also be output together with EThreadCreate or EThreadName traces
       
   671 		to help identify the name of the process to which the thread belongs.
       
   672 
       
   673 		Trace data format:
       
   674 		- 4 bytes containing zero, or if this trace is generated together with EThreadName
       
   675 		  or EThreadCreate, this contains the context id (an NThread*) for the thread.
       
   676 		- 4 bytes containing trace id (a DProcess*) for process.
       
   677 		- Remaining data is the ASCII name of the process.
       
   678 		*/
       
   679 		EProcessName,
       
   680 
       
   681 		/**
       
   682 		Informational trace giving a threads ID, as returned by RThread::Id().
       
   683 		Trace data format:
       
   684 		- 4 bytes containing the context id (an NThread*) for this thread.
       
   685 		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
       
   686 		- 4 bytes containing thread ID, as returned by RThread::Id().
       
   687 		*/
       
   688 		EThreadId,
       
   689 
       
   690 		/**
       
   691 		A process has been created.
       
   692 
       
   693 		Trace data format:
       
   694 		- 4 bytes containing trace id (a DProcess*) for the process.
       
   695 		*/
       
   696 		EProcessCreate,
       
   697 
       
   698 		/**
       
   699 		A process has been destroyed.
       
   700 
       
   701 		Trace data format:
       
   702 		- 4 bytes containing trace id (a DProcess*) for the process.
       
   703 		*/
       
   704 		EProcessDestroy
       
   705 
       
   706 		};
       
   707 
       
   708 	/**
       
   709 	Enumeration of sub-category values for trace category ECpuUsage.
       
   710 	@see ECpuUsage
       
   711 	*/
       
   712 	enum TCpuUsage
       
   713 		{
       
   714 		/**
       
   715 		Trace output at start of Interrupt (IRQ) dispatch.
       
   716 
       
   717 		On platforms which support nested interrupts, traces for these will also
       
   718 		be nested.
       
   719 		*/
       
   720 		EIrqStart,
       
   721 
       
   722 		/**
       
   723 		Trace output at end of Interrupt (IRQ) dispatch.
       
   724 
       
   725 		Note, this trace isn't generated if an Interrupt Service Routine queues
       
   726 		a DFC or causes a thread to be scheduled. In these cases, the traces for
       
   727 		these events (EIDFCStart or ENewThreadContext) should be taken to indicate
       
   728 		that interrupt servicing has ended.
       
   729 		*/
       
   730 		EIrqEnd,
       
   731 
       
   732 		/**
       
   733 		Trace output at start of Fast Interrupt (FIQ) dispatch.
       
   734 
       
   735 		On platforms which support nested interrupts, traces for these will also
       
   736 		be nested.
       
   737 		*/
       
   738 		EFiqStart,
       
   739 
       
   740 		/**
       
   741 		Trace output at end of Fast Interrupt (FIQ) dispatch.
       
   742 
       
   743 		Note, this trace isn't generated if an Interrupt Service Routine queues
       
   744 		a DFC or causes a thread to be scheduled. In these cases, the traces for
       
   745 		these events (EIDFCStart or ENewThreadContext) should be taken to indicate
       
   746 		that interrupt servicing has ended.
       
   747 		*/
       
   748 		EFiqEnd,
       
   749 
       
   750 		/**
       
   751 		Trace output at start of Immediate Delayed Function Call (IDFC) processing.
       
   752 		This processing also includes moving DFCs to their final queue, so the trace
       
   753 		does not necessarily indicate that any IDFCs have been executed.
       
   754 		*/
       
   755 		EIDFCStart,
       
   756 
       
   757 		/**
       
   758 		Trace output at end of Immediate Delayed Function Call (IDFC) processing.
       
   759 		*/
       
   760 		EIDFCEnd,
       
   761 
       
   762 		/**
       
   763 		Trace output when a thread is scheduled to run.
       
   764 		The context id (NThread*) in this trace is that of the thread being scheduled.
       
   765 		*/
       
   766 		ENewThreadContext
       
   767 		};
       
   768 
       
   769     /**
       
   770 	@internalTechnology
       
   771     @prototype 9.3
       
   772     */
       
   773 	enum TClientServer
       
   774 		{
       
   775 		/**
       
   776 		Trace generated whenever a server is created.
       
   777 
       
   778 		Trace data format:
       
   779 		- 4 bytes containing the server id (a DServer*).
       
   780 		- 4 bytes containing undefined data
       
   781 		- Remaining data is the ASCII name of the server.
       
   782 
       
   783 		The context id (NThread*) in this trace is that of the thread creating the server.
       
   784 		*/
       
   785 		EServerCreate,
       
   786 
       
   787 		/**
       
   788 		Trace generated whenever a server is destroyed.
       
   789 
       
   790 		Trace data format:
       
   791 		- 4 bytes containing the server id (a DServer*).
       
   792 
       
   793 		*/
       
   794 		EServerDestroy,
       
   795 
       
   796 		/**
       
   797 		Trace generated whenever a new session is attached to a server.
       
   798 		I.e. a new session has been created.
       
   799 
       
   800 		Trace data format:
       
   801 		- 4 bytes containing the session id (a DSession*).
       
   802 		- 4 bytes containing the server id (a DServer*).
       
   803 
       
   804 		The context id (NThread*) in this trace is that of the thread creating the session.
       
   805 		*/
       
   806 		ESessionAttach,
       
   807 
       
   808 		/**
       
   809 		Trace generated whenever a server session is detached from a server.
       
   810 		I.e. a session has been closed.
       
   811 
       
   812 		Trace data format:
       
   813 		- 4 bytes containing the session id (a DSession*).
       
   814 		- 4 bytes containing the reasons (error code) for the session being closed.
       
   815 
       
   816 		*/
       
   817 		ESessionDetach,
       
   818 
       
   819 		/**
       
   820 		Trace generated whenever a new message is sent to a server.
       
   821 
       
   822 		Trace data format:
       
   823 		- 4 bytes containing the message handle.
       
   824 		- 4 bytes containing the iFunction value for the message.
       
   825 		- 4 bytes containing the session id (a DSession*).
       
   826 
       
   827 		The context id (NThread*) in this trace is that of the thread which sent the message.
       
   828 		*/
       
   829 		EMessageSend,
       
   830 
       
   831 		/**
       
   832 		Trace generated when a server receives a new message.
       
   833 
       
   834 		Trace data format:
       
   835 		- 4 bytes containing the message handle.
       
   836 		*/
       
   837 		EMessageReceive,
       
   838 
       
   839 		/**
       
   840 		Trace generated whenever a message is completed using RMessagePtr2::Complete.
       
   841 
       
   842 		Trace data format:
       
   843 		- 4 bytes containing the message handle.
       
   844 		- 4 bytes containing the completion reason, or object handle, value.
       
   845 		    (The object handle value is that which is delivered to the sender of the
       
   846 			message, not that supplied by the server actually completing the request.)
       
   847 
       
   848 		The context id (NThread*) in this trace is that of the thread which completed the message.
       
   849 		*/
       
   850 		EMessageComplete
       
   851 		};
       
   852 
       
   853 
       
   854     /**
       
   855 	@internalTechnology
       
   856     @prototype 9.3
       
   857     */
       
   858 	enum TRequests
       
   859 		{
       
   860 		/**
       
   861 		Trace generated whenever a request status is completed.
       
   862 
       
   863 		Trace data format:
       
   864 		- 4 bytes containing the thread id (NThread*) of the thread being signalled.
       
   865 		- 4 bytes containing the address of the TRequestStatus object.
       
   866 		- 4 bytes containing the completion reason.
       
   867 
       
   868 		The context id (NThread*) in this trace is that of the thread which completed the request.
       
   869 		*/
       
   870 		ERequestComplete
       
   871 		};
       
   872 
       
   873 
       
   874 	/**
       
   875 	Enumeration of sub-category values for trace category EChunks.
       
   876 	@see EChunks
       
   877 	*/
       
   878 	enum TChunks
       
   879 		{
       
   880 		/**
       
   881 		Trace output when a chunk is created.
       
   882 
       
   883 		Trace data format:
       
   884 		- 4 bytes containing the chunk id (a DChunk*).
       
   885 		- 4 bytes containing the maximum size of the chunk.
       
   886 		- The ASCII name of the chunk.
       
   887 		*/
       
   888 		EChunkCreated,
       
   889 
       
   890 		/**
       
   891 		@internalTechnology
       
   892 
       
   893 		Trace output when a chunk is created containing extra chunk information.
       
   894 
       
   895 		Note that the meaning of the data in this trace is different between
       
   896 		memory models, and may change without warning.
       
   897 
       
   898 		Trace data format:
       
   899 		- 4 bytes containing the chunk id (a DChunk*).
       
   900 		- 4 bytes containing the chunk type.
       
   901 		- 4 bytes containing the chunk's attributes.
       
   902 		*/
       
   903 		EChunkInfo,
       
   904 
       
   905 		/**
       
   906 		Trace output when a chunk is destroyed.
       
   907 
       
   908 		Trace data format:
       
   909 		- 4 bytes containing the chunk id (a DChunk*)
       
   910 		*/
       
   911 		EChunkDestroyed,
       
   912 
       
   913 		/**
       
   914 		Trace output when memory is allocated and committed to a chunk.
       
   915 
       
   916 		Trace data format:
       
   917 		- 4 bytes containing the chunk id (a DChunk*).
       
   918 		- 4 bytes containing the offset into the chunk.
       
   919 		- 4 bytes containing the size of the memory committed.
       
   920 		*/
       
   921 		EChunkMemoryAllocated,
       
   922 
       
   923 		/**
       
   924 		Trace output when memory is decommitted from a chunk and deallocated.
       
   925 
       
   926 		Trace data format:
       
   927 		- 4 bytes containing the chunk id (a DChunk*).
       
   928 		- 4 bytes containing the offset into the chunk.
       
   929 		- 4 bytes containing the size of the memory decommitted.
       
   930 		*/
       
   931 		EChunkMemoryDeallocated,
       
   932 
       
   933 		/**
       
   934 		Trace output when un-owned memory is committed to a chunk.
       
   935 
       
   936 		Trace data format:
       
   937 		- 4 bytes containing the chunk id (a DChunk*).
       
   938 		- 4 bytes containing the offset into the chunk.
       
   939 		- 4 bytes containing the size of the memory committed.
       
   940 		*/
       
   941 		EChunkMemoryAdded,
       
   942 
       
   943 		/**
       
   944 		Trace output when un-owned memory is decommitted to a chunk.
       
   945 
       
   946 		Trace data format:
       
   947 		- 4 bytes containing the chunk id (a DChunk*).
       
   948 		- 4 bytes containing the offset into the chunk.
       
   949 		- 4 bytes containing the size of the memory decommitted.
       
   950 		*/
       
   951 		EChunkMemoryRemoved,
       
   952 
       
   953 		/**
       
   954 		Trace to indicate the owning process of a chunk - only for local (private) chunks.
       
   955 
       
   956 		Trace data format:
       
   957 		- 4 bytes containing the chunk id (a DChunk*).
       
   958 		- 4 bytes containing the process id of the owner (a DProcess*).
       
   959 		*/
       
   960 		EChunkOwner
       
   961 		};
       
   962 
       
   963 	/**
       
   964 	Enumeration of sub-category values for trace category ECodeSegs.
       
   965 	@see ECodeSegs
       
   966 	*/
       
   967 	enum TCodeSegs
       
   968 		{
       
   969 		/**
       
   970 		Trace output when a code segment is created to associate a code segment
       
   971 		id with a filename.
       
   972 
       
   973 		Trace data format:
       
   974 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
   975 		- The ASCII filename.
       
   976 		*/
       
   977 		ECodeSegCreated,
       
   978 
       
   979 		/**
       
   980 		Trace output when a code segment is created.
       
   981 
       
   982 		Trace data format:
       
   983 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
   984 		- 4 bytes containing the attributes.
       
   985 		- 4 bytes containing the code base address (.text).
       
   986 		- 4 bytes containing the size of the code section (.text).
       
   987 		- 4 bytes containing the base address of the constant data section (.rodata).
       
   988 		- 4 bytes containing the size of the constant data section (.rodata).
       
   989 		- 4 bytes containing the base address of the initialised data section (.data).
       
   990 		- 4 bytes containing the size of the initialised data section (.data).
       
   991 		- 4 bytes containing the base address of the uninitialised data section (.bss).
       
   992 		- 4 bytes containing the size of the uninitialised data section (.bss).
       
   993 		*/
       
   994 		ECodeSegInfo,
       
   995 
       
   996 		/**
       
   997 		Trace output when a code segment is destroyed.
       
   998 
       
   999 		Trace data format:
       
  1000 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
  1001 		*/
       
  1002 		ECodeSegDestroyed,
       
  1003 
       
  1004 		/**
       
  1005 		Trace output when a code segment is mapped into a process.
       
  1006 
       
  1007 		Trace data format:
       
  1008 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
  1009 		- 4 bytes containing the process id (a DProcess*).
       
  1010 		*/
       
  1011 		ECodeSegMapped,
       
  1012 
       
  1013 		/**
       
  1014 		Trace output when a code segment is unmapped from a process.
       
  1015 
       
  1016 		Trace data format:
       
  1017 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
  1018 		- 4 bytes containing the process id (a DProcess*).
       
  1019 		*/
       
  1020 		ECodeSegUnmapped,
       
  1021 
       
  1022 		/**
       
  1023 		Trace output when memory is allocated to a code segment.
       
  1024 
       
  1025 		Under the multiple memory model, code segments for RAM-loaded user code
       
  1026 		own the RAM pages the code occupies.  The pages are not owned by any
       
  1027 		chunk, but are mapped into the code chunk of each process that uses the
       
  1028 		code segment.
       
  1029 
       
  1030 		Trace data format:
       
  1031 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
  1032 		- 4 bytes containing the size of the memory allocated.
       
  1033 		*/
       
  1034 		ECodeSegMemoryAllocated,
       
  1035 
       
  1036 		/**
       
  1037 		Trace output when memory is deallocated from a code segment.
       
  1038 
       
  1039 		Under the multiple memory model, code segments for RAM-loaded user code
       
  1040 		own the RAM pages the code occupies.  The pages are not owned by any
       
  1041 		chunk, but are mapped into the code chunk of each process that uses the
       
  1042 		code segment.
       
  1043 
       
  1044 		Trace data format:
       
  1045 		- 4 bytes containing the code segment id (a DCodeSeg*).
       
  1046 		- 4 bytes containing the size of the memory deallocated.
       
  1047 		*/
       
  1048 		ECodeSegMemoryDeallocated
       
  1049 		};
       
  1050 
       
  1051 
       
  1052 	/**
       
  1053 	Enumeration of sub-category values for trace category EPaging.
       
  1054 	@see EPaging
       
  1055 	*/
       
  1056 	enum TPaging
       
  1057 		{
       
  1058 		/**
       
  1059 		This event indicates the beginning of the 'page in' activity.
       
  1060 		The end of this activity is indicated by one of the following events:
       
  1061 		- EPagingPageInUnneeded
       
  1062 		- EPagingPageInROM
       
  1063 		- EPagingPageInCode
       
  1064 		- EPagingPageIn (flexible memory model)
       
  1065 
       
  1066 		Trace data format:
       
  1067 		- 4 bytes containing the virtual address which was accessed, causing this paging event.
       
  1068 		- 4 bytes containing the virtual address of the instruction which caused this paging event.
       
  1069 		  (The PC value.)
       
  1070 
       
  1071 		On the flexible memory model, the following addition trace data is also present:
       
  1072 		- 1 byte containing the required access permissions, as defined by TMappingPermissions.
       
  1073 		- 3 spare bytes, currently zero
       
  1074 
       
  1075 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1076 		*/
       
  1077 		EPagingPageInBegin,
       
  1078 
       
  1079 		/**
       
  1080 		Event which terminates the 'page in' activity when the required page was found to have been
       
  1081 		paged in by another thread while the current thread was processing the fault (see
       
  1082 		EPagingPageInBegin).
       
  1083 
       
  1084 		Trace data format:
       
  1085 		- 0 bytes. (No extra data.)
       
  1086 
       
  1087 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1088 		*/
       
  1089 		EPagingPageInUnneeded,
       
  1090 
       
  1091 		/**
       
  1092 		A ROM page has been paged in.
       
  1093 		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
       
  1094 
       
  1095 		Trace data format:
       
  1096 		- 4 bytes containing the physical address of the page 'paged in'.
       
  1097 		- 4 bytes containing the virtual address of the page 'paged in'.
       
  1098 
       
  1099 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1100 
       
  1101 		This trace is not emitted on the flexible memory model - EPagingPageIn is used instead.
       
  1102 		*/
       
  1103 		EPagingPageInROM,
       
  1104 
       
  1105 		/**
       
  1106 		A ROM page has been 'paged out'. I.e. removed from the live list to be either
       
  1107 		reused or returned to free pool.
       
  1108 
       
  1109 		Trace data format:
       
  1110 		- 4 bytes containing the physical address of the page being 'paged out'.
       
  1111 		- 4 bytes containing the virtual address of the page being 'paged out'.
       
  1112 
       
  1113 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1114 
       
  1115 		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
       
  1116 		*/
       
  1117 		EPagingPageOutROM,
       
  1118 
       
  1119 		/**
       
  1120 		A Free page has been 'paged in'. I.e. added to the live list.
       
  1121 
       
  1122 		Trace data format:
       
  1123 		- 4 bytes containing the physical address of the page being 'paged in'.
       
  1124 
       
  1125 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1126 		*/
       
  1127 		EPagingPageInFree,
       
  1128 
       
  1129 		/**
       
  1130 		A Free page has been 'paged out'. I.e. removed from the live list to be either
       
  1131 		reused or returned to free pool.
       
  1132 
       
  1133 		Trace data format:
       
  1134 		- 4 bytes containing the physical address of the page being 'paged out'.
       
  1135 
       
  1136 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1137 
       
  1138 		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
       
  1139 		*/
       
  1140 		EPagingPageOutFree,
       
  1141 
       
  1142 		/**
       
  1143 		A page has been made 'young' again because it was accessed.
       
  1144 
       
  1145 		Trace data format:
       
  1146 		- 4 bytes containing the physical address of the page being rejuvenated, (made young).
       
  1147 		- 4 bytes containing the virtual address which was accessed, causing this paging event.
       
  1148 		- 4 bytes containing the virtual address of the instruction which caused this paging event.
       
  1149 		  (The PC value.)
       
  1150 
       
  1151 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1152 		*/
       
  1153 		EPagingRejuvenate,
       
  1154 
       
  1155 		/**
       
  1156 		A page fault was found to have already been previously serviced.
       
  1157 
       
  1158 		Trace data format:
       
  1159 		- 4 bytes containing the physical address of the page accessed.
       
  1160 		- 4 bytes containing the virtual address which was accessed, causing this paging event.
       
  1161 		- 4 bytes containing the virtual address of the instruction which caused this paging event.
       
  1162 		  (The PC value.)
       
  1163 
       
  1164 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1165 
       
  1166 		This trace is not emitted on the flexible memory model.
       
  1167 		*/
       
  1168 		EPagingPageNop,
       
  1169 
       
  1170 		/**
       
  1171 		A page has been locked.
       
  1172 
       
  1173 		Trace data format:
       
  1174 		- 4 bytes containing the physical address of the page being locked.
       
  1175 		- 4 bytes containing the value of the lock count after the paged was locked.
       
  1176 
       
  1177 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1178 		*/
       
  1179 		EPagingPageLock,
       
  1180 
       
  1181 		/**
       
  1182 		A page has been unlocked.
       
  1183 
       
  1184 		Trace data format:
       
  1185 		- 4 bytes containing the physical address of the page being unlocked.
       
  1186 		- 4 bytes containing the value of the lock count before the paged was unlocked.
       
  1187 
       
  1188 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1189 		*/
       
  1190 		EPagingPageUnlock,
       
  1191 
       
  1192 		/**
       
  1193 		A page containing RAM cache has been 'paged out'. I.e. removed from the live list to be
       
  1194 		either reused or returned to free pool.
       
  1195 
       
  1196 		Trace data format:
       
  1197 		- 4 bytes containing the physical address of the page being 'paged out'.
       
  1198 		- 4 bytes containing the virtual address of the page being 'paged out'.
       
  1199 
       
  1200 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1201 
       
  1202 		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
       
  1203 		*/
       
  1204 		EPagingPageOutCache,
       
  1205 
       
  1206 		/**
       
  1207 		A page containing RAM-loaded code has been paged in.
       
  1208 		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
       
  1209 
       
  1210 		Trace data format:
       
  1211 		- 4 bytes containing the physical address of the page 'paged in'.
       
  1212 		- 4 bytes containing the virtual address of the page 'paged in'.
       
  1213 
       
  1214 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1215 
       
  1216 		This trace is not emitted on the flexible memory model - EPagingPageIn is used instead.
       
  1217 		*/
       
  1218 		EPagingPageInCode,
       
  1219 
       
  1220 		/**
       
  1221 		A page containing RAM-loaded code has been 'paged out'. I.e. removed from the live list to be
       
  1222 		either reused or returned to free pool.
       
  1223 
       
  1224 		Trace data format:
       
  1225 		- 4 bytes containing the physical address of the page being 'paged out'.
       
  1226 		- 4 bytes containing the virtual address of the page being 'paged out'.
       
  1227 
       
  1228 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1229 
       
  1230 		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
       
  1231 		*/
       
  1232 		EPagingPageOutCode,
       
  1233 
       
  1234 		/**
       
  1235 		A page of RAM-loaded code was found to already be 'paged in' but not mapped in
       
  1236 		the faulting process.
       
  1237 
       
  1238 		Trace data format:
       
  1239 		- 4 bytes containing the physical address of the page 'paged in'.
       
  1240 		- 4 bytes containing the virtual address which was accessed, causing this paging event.
       
  1241 
       
  1242 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1243 
       
  1244 		This trace is only emitted on the multiple memory model.
       
  1245 		*/
       
  1246 		EPagingMapCode,
       
  1247 
       
  1248 		/**
       
  1249 		A page has been made 'old' because it was the last young page to be accessed.
       
  1250 
       
  1251 		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
       
  1252 		macro defined.
       
  1253 
       
  1254 		Trace data format:
       
  1255 		- 4 bytes containing the physical address of the page being aged, (made old).
       
  1256 
       
  1257 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1258 		*/
       
  1259 		EPagingAged,
       
  1260 
       
  1261 		/**
       
  1262 		Trace emitted at the start of decompression of demand paged data.
       
  1263 
       
  1264 		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
       
  1265 		macro defined.
       
  1266 
       
  1267 		Trace data format:
       
  1268 		- 4 bytes containing an integer which indicates the compression type being used:
       
  1269 			  0, no compression;
       
  1270 			  1, bytepair compression.
       
  1271 
       
  1272 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1273 		*/
       
  1274 		EPagingDecompressStart,
       
  1275 
       
  1276 		/**
       
  1277 		Trace emitted at the end of decompression of demand paged data.
       
  1278 
       
  1279 		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
       
  1280 		macro defined.
       
  1281 
       
  1282 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1283 		*/
       
  1284 		EPagingDecompressEnd,
       
  1285 
       
  1286 		/**
       
  1287 		Information about the kernel's memory model.
       
  1288 
       
  1289 		Trace data format:
       
  1290 		- 4 bytes containing the memory model as defined by TMemModelAttributes.
       
  1291 		*/
       
  1292 		EPagingMemoryModel,
       
  1293 
       
  1294 		/**
       
  1295 		A page has been donated to the paging cache via RChunk::Unlock().
       
  1296 
       
  1297 		Trace data format:
       
  1298 		- 4 bytes containing the chunk id (a DChunk*).
       
  1299 		- 4 bytes containing the page index of the page within the chunk.
       
  1300 
       
  1301 		This trace is not emitted on the flexible memory model.
       
  1302 		@see EPagingDonatePage
       
  1303 		*/
       
  1304 		EPagingChunkDonatePage,
       
  1305 
       
  1306 		/**
       
  1307 		A page has been reclaimed from the paging cache via RChunk::Lock().
       
  1308 
       
  1309 		Trace data format:
       
  1310 		- 4 bytes containing the chunk id (a DChunk*).
       
  1311 		- 4 bytes containing the page index of the page within the chunk.
       
  1312 
       
  1313 		This trace is not emitted on the flexible memory model.
       
  1314 		@see EPagingReclaimPage.
       
  1315 		*/
       
  1316 		EPagingChunkReclaimPage,
       
  1317 
       
  1318 		// Traces specific to the flexible memory model
       
  1319 
       
  1320 		/**
       
  1321 		A page has been paged in.
       
  1322 		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
       
  1323 
       
  1324 		Trace data format:
       
  1325 		- 4 bytes containing the physical address of the page 'paged in'.
       
  1326 		- 4 bytes containing the memory object id (DMemoryObject*).
       
  1327 		- 4 bytes containing the page index of the page within the memory object.
       
  1328 
       
  1329 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1330 
       
  1331 		This trace is only emitted on the flexible memory model.
       
  1332 		*/
       
  1333 		EPagingPageIn,
       
  1334 
       
  1335 		/**
       
  1336 		A page has been 'paged out'. I.e. removed from the live list to be either
       
  1337 		reused or returned to free pool.
       
  1338 
       
  1339 		Trace data format:
       
  1340 		- 4 bytes containing the physical address of the page being 'paged out'.
       
  1341 
       
  1342 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1343 
       
  1344 		This trace is only emitted on the flexible memory model.
       
  1345 		*/
       
  1346 		EPagingPageOut,
       
  1347 
       
  1348 		/**
       
  1349 		Event which terminates the 'page in' activity when the required page was found to
       
  1350 		already be paged in but not mapped in the faulting process (see EPagingPageInBegin).
       
  1351 
       
  1352 		Trace data format:
       
  1353 		- 4 bytes containing the physical address of the page 'paged in'.
       
  1354 
       
  1355 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1356 
       
  1357 		This trace is only emitted on the flexible memory model.
       
  1358 		*/
       
  1359 		EPagingMapPage,
       
  1360 
       
  1361 		/**
       
  1362 		A page has been donated to the paging cache via RChunk::Unlock().
       
  1363 
       
  1364 		Trace data format:
       
  1365 		- 4 bytes containing the physical address of the page.
       
  1366 		- 4 bytes containing the memory object id (DMemoryObject*).
       
  1367 		- 4 bytes containing the page index of the page within the memory object.
       
  1368 
       
  1369 		This trace is only emitted on the flexible memory model.
       
  1370 		@see EPagingChunkDonatePage.
       
  1371 		*/
       
  1372 		EPagingDonatePage,
       
  1373 
       
  1374 		/**
       
  1375 		A page has been reclaimed from the paging cache via RChunk::Lock().
       
  1376 
       
  1377 		Trace data format:
       
  1378 		- 4 bytes containing the physical address of the page.
       
  1379 
       
  1380 		This trace is only emitted on the flexible memory model.
       
  1381 		@see EPagingChunkReclaimPage.
       
  1382 		*/
       
  1383 		EPagingReclaimPage,
       
  1384 
       
  1385 		/**
       
  1386 		A page has been moved to the oldest clean list because it was the last old page and
       
  1387 		it was clean.
       
  1388 
       
  1389 		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
       
  1390 		macro defined.
       
  1391 
       
  1392 		Trace data format:
       
  1393 		- 4 bytes containing the physical address of the page being moved to the oldest clean list.
       
  1394 
       
  1395 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1396 		*/
       
  1397 		EPagingAgedClean,
       
  1398 
       
  1399 		/**
       
  1400 		A page has been moved to the oldest dirty list because it was the last old page and
       
  1401 		it was dirty.
       
  1402 
       
  1403 		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
       
  1404 		macro defined.
       
  1405 
       
  1406 		Trace data format:
       
  1407 		- 4 bytes containing the physical address of the page being moved to the oldest dirty list.
       
  1408 
       
  1409 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1410 		*/
       
  1411 		EPagingAgedDirty,
       
  1412 
       
  1413 		/**
       
  1414 		A page has been allocated to hold the MMU page tables required to map demand paged memory.
       
  1415 
       
  1416 		Trace data format:
       
  1417 		- 4 bytes containing the physical address of the page allocated.
       
  1418 
       
  1419 		The context id (NThread*) in this trace is that of the thread caused this paging event.
       
  1420 		
       
  1421 		This trace is only emitted on the flexible memory model.
       
  1422 		*/
       
  1423 		EPagingPageTableAlloc,
       
  1424 		};
       
  1425 
       
  1426     /**
       
  1427 	Enumeration of sub-category values for trace category EResourceManager.
       
  1428 	@see EResourceManager
       
  1429     @prototype 9.5
       
  1430 	*/
       
  1431 	enum TResourceManager
       
  1432 		{
       
  1433 		/**
       
  1434 		Trace output for resource registration.
       
  1435 
       
  1436 		Trace data format:
       
  1437 		- 4 bytes containing the Resource Id.
       
  1438 		- 4 bytes containing the Resource address.
       
  1439 		- N bytes containing the Resource name, where 0 < N < 32
       
  1440 		- 4 bytes containing the Resource Minimum Level
       
  1441 		- 4 bytes containing the Resource Maximum Level
       
  1442 		- 4 bytes containing the Resource Default Level
       
  1443 		*/
       
  1444 		ERegisterResource = 0,
       
  1445 
       
  1446 		/**
       
  1447 		Trace output for client registration
       
  1448 
       
  1449 		Trace data format:
       
  1450 		- 4 bytes containing clientId
       
  1451 		- 4 bytes containing client address
       
  1452 		- N bytes containing client name, where 0 < N < 32
       
  1453 		*/
       
  1454 		ERegisterClient,
       
  1455 
       
  1456 		/**
       
  1457 		Trace output for client deregistration
       
  1458 
       
  1459 		Trace data format:
       
  1460 		- 4 bytes containing clientId
       
  1461 		- 4 bytes containing client address
       
  1462 		- N bytes containing client name, where 0 < N < 32
       
  1463 		*/
       
  1464 		EDeRegisterClient,
       
  1465 
       
  1466 		/**
       
  1467 		Trace output for resource state change start operation
       
  1468 
       
  1469 		Trace data format:
       
  1470 		- 4 bytes containing clientId
       
  1471 		- 4 bytes containing the Resource Id.
       
  1472 		- N bytes containing client name, where 0 < N < 32
       
  1473 		- N bytes containing the Resource name, where 0 < N < 32
       
  1474 		- 4 bytes containing the Resource state
       
  1475 		*/
       
  1476 		ESetResourceStateStart,
       
  1477 
       
  1478 		/**
       
  1479 		Trace output for resource state change end operation
       
  1480 
       
  1481 		Trace data format:
       
  1482 		- 4 bytes containing clientId
       
  1483 		- 4 bytes containing the Resource Id.
       
  1484 		- N bytes containing client name, where 0 < N < 32
       
  1485 		- N bytes containing the Resource name, where 0 < N < 32
       
  1486 		- 4 bytes containing return value.
       
  1487 		- 4 bytes containing the Resource state.
       
  1488 		*/
       
  1489 		ESetResourceStateEnd,
       
  1490 
       
  1491 		/**
       
  1492 		Trace output for registration for post notification
       
  1493 
       
  1494 		Trace data format:
       
  1495 		- 4 bytes containing clientId
       
  1496 		- 4 bytes containing the Resource Id.
       
  1497 		- 4 bytest containing the callback address
       
  1498 		- 4 bytes containing return value.
       
  1499 		*/
       
  1500 		EPostNotificationRegister,
       
  1501 
       
  1502 		/**
       
  1503 		Trace output for deregistration for post notification
       
  1504 
       
  1505 		Trace data format:
       
  1506 		- 4 bytes containing clientId
       
  1507 		- 4 bytes containing the Resource Id.
       
  1508 		- 4 bytes containing the callback address
       
  1509 		- 4 bytes containing the return value.
       
  1510 		*/
       
  1511 		EPostNotificationDeRegister,
       
  1512 
       
  1513 		/**
       
  1514 		Trace output for post notification sent.
       
  1515 
       
  1516 		Trace data format:
       
  1517 		- 4 bytes containing clientId
       
  1518 		- 4 bytes containing the Resource Id.
       
  1519 		*/
       
  1520 		EPostNotificationSent,
       
  1521 
       
  1522 		/**
       
  1523 		Trace output for Callback complete
       
  1524 
       
  1525 		Trace data format:
       
  1526 		- 4 bytes containing clientId
       
  1527 		- 4 bytes containing the Resource Id.
       
  1528 		*/
       
  1529 		ECallbackComplete,
       
  1530 
       
  1531 		/**
       
  1532 		Trace output for resource manager memory usage
       
  1533 
       
  1534 		Trace data format:
       
  1535 		- 4 bytes containing memory allocated in bytes.
       
  1536 		*/
       
  1537 		EMemoryUsage,
       
  1538 
       
  1539 		/**
       
  1540 		Trace output for get resource state start operation
       
  1541 
       
  1542 		Trace data format:
       
  1543 		- 4 bytes containing clientId
       
  1544 		- 4 bytes containing the Resource Id.
       
  1545 		- N bytes containing client name, where 0 < N < 32
       
  1546 		- N bytes containing the Resource name, where 0 < N < 32
       
  1547 		*/
       
  1548 		EGetResourceStateStart,
       
  1549 
       
  1550 		/**
       
  1551 		Trace output for get resource state end operation
       
  1552 
       
  1553 		Trace data format:
       
  1554 		- 4 bytes containing clientId
       
  1555 		- 4 bytes containing the Resource Id.
       
  1556 		- N bytes containing client name, where 0 < N < 32
       
  1557 		- N bytes containing the Resource name, where 0 < N < 32
       
  1558 		- 4 bytes containing the Resource state
       
  1559 		- 4 bytes containing return value.
       
  1560 		*/
       
  1561 		EGetResourceStateEnd,
       
  1562 
       
  1563 		/**
       
  1564 		Trace output for cancellation of long latency operation
       
  1565 
       
  1566 		Trace data format:
       
  1567 		- 4 bytes containing clientId
       
  1568 		- 4 bytes containing the Resource Id.
       
  1569 		- N bytes containing client name, where 0 < N < 32
       
  1570 		- N bytes containing the Resource name, where 0 < N < 32
       
  1571 		- 4 bytes containing return value
       
  1572 		*/
       
  1573 		ECancelLongLatencyOperation,
       
  1574 
       
  1575 		/**
       
  1576 		Trace output for booting of resource manager
       
  1577 
       
  1578 		Trace data format:
       
  1579 		- 4 bytes containing entry point
       
  1580 		*/
       
  1581 		EBooting,
       
  1582 
       
  1583 		/**
       
  1584 		Trace output for PSL resource state change operation
       
  1585 
       
  1586 		Trace data format:
       
  1587 		- 4 bytes containing clientId
       
  1588 		- 4 bytes containing the Resource Id.
       
  1589 		- N bytes containing the Resource name, where 0 < N < 32
       
  1590 		- 4 bytes containing the Resource current state
       
  1591 		- 4 bytes containing the resource requested state
       
  1592 		*/
       
  1593 		EPslChangeResourceStateStart,
       
  1594 
       
  1595 		/**
       
  1596 		Trace output for PSL resource state change operation
       
  1597 
       
  1598 		Trace data format:
       
  1599 		- 4 bytes containing clientId
       
  1600 		- 4 bytes containing the Resource Id.
       
  1601 		- N bytes containing the Resource name, where 0 < N < 32
       
  1602 		- 4 bytes containing the Resource current state
       
  1603 		- 4 bytes containing the resource requested state
       
  1604 		- 4 bytes containing return value
       
  1605 		*/
       
  1606 		EPslChangeResourceStateEnd,
       
  1607 
       
  1608 		/**
       
  1609 		Trace output for get resource state start operation in PSL
       
  1610 
       
  1611 		Trace data format:
       
  1612 		- 4 bytes containing clientId
       
  1613 		- 4 bytes containing the Resource Id.
       
  1614 		- N bytes containing the Resource name, where 0 < N < 32
       
  1615 		*/
       
  1616 		EPslGetResourceStateStart,
       
  1617 
       
  1618 		/**
       
  1619 		Trace output for get resource state end operation in PSL
       
  1620 
       
  1621 		Trace data format:
       
  1622 		- 4 bytes containing clientId
       
  1623 		- 4 bytes containing the Resource Id.
       
  1624 		- N bytes containing the Resource name, where 0 < N < 32
       
  1625 		- 4 bytes containing the Resource state
       
  1626 		- 4 bytes containing return value.
       
  1627 		*/
       
  1628 		EPslGetResourceStateEnd,
       
  1629 
       
  1630 		/**
       
  1631 		Trace output for resource creation
       
  1632 
       
  1633 		Trace data format:
       
  1634 		- 4 bytes containing minimum value of resource
       
  1635 		- 4 bytes containing maximum value of resource
       
  1636 		- 4 bytes containing the default value of resource
       
  1637 		- 4 bytes containing the properties of the resource
       
  1638 		- N bytes containing the Resource name, where 0 < N < 32
       
  1639 		*/
       
  1640 		EPslResourceCreate,
       
  1641 
       
  1642 		/**
       
  1643 		Trace output for static resource with dependency registration
       
  1644 
       
  1645 		Trace data format:
       
  1646 		- 4 bytes containing the Resource Id
       
  1647 		- 4 bytes containing the Resource address
       
  1648 		- N bytes containing the Resource name, where 0 < N < 32
       
  1649 		- 4 bytes containing the minimum value of resource
       
  1650 		- 4 bytes containing the maximum value of resource
       
  1651 		- 4 bytes containing the default value of resource
       
  1652 		*/
       
  1653 		ERegisterStaticResourceWithDependency,
       
  1654 
       
  1655 		/**
       
  1656 		Trace output for dynamic resource registration
       
  1657 
       
  1658 		Trace data format:
       
  1659 		- 4 bytes containing clientId
       
  1660 		- 4 bytes containing the Resource Id
       
  1661 		- N bytes containing the client name, where 0 < N < 32
       
  1662 		- N bytes containing the resource name, where 0 < N < 32
       
  1663 		- 4 bytes containing the resouce address
       
  1664 		*/
       
  1665 		ERegisterDynamicResource,
       
  1666 
       
  1667 		/**
       
  1668 		Trace output for dynamic resource deregistration
       
  1669 
       
  1670 		Trace data format:
       
  1671 		- 4 bytes containing clientId
       
  1672 		- 4 bytes containing the Resource Id
       
  1673 		- N bytes containing the client name, where 0 < N < 32
       
  1674 		- N bytes containing the resource name, where 0 < N < 32
       
  1675 		- 4 bytes containing the resource address
       
  1676 		- 4 bytes containing the resource level.
       
  1677 		*/
       
  1678 		EDeRegisterDynamicResource,
       
  1679 
       
  1680 		/**
       
  1681 		Trace output for resource dependency registration
       
  1682 
       
  1683 		Trace data format:
       
  1684 		- 4 bytes containing clientId
       
  1685 		- 4 bytes containing the Resource Id of first dependent resource
       
  1686 		- N bytes containing the client name, where 0 < N < 32
       
  1687 		- N bytes containing the resource name of first dependent resource, where 0 < N < 32
       
  1688 		- 4 bytes containing the Resource Id of second dependent resource
       
  1689 		- N bytes containing the resource name of second dependent resource, where 0 < N < 32
       
  1690 		- 4 bytes containing the address of first dependent resource
       
  1691 		- 4 bytes containing the address of second dependent resource
       
  1692 		*/
       
  1693 		ERegisterResourceDependency,
       
  1694 
       
  1695 		/**
       
  1696 		Trace output for resource dependency deregistration
       
  1697 
       
  1698 		Trace data format:
       
  1699 		- 4 bytes containing clientId
       
  1700 		- 4 bytes containing the Resource Id of first dependent resource
       
  1701 		- N bytes containing the client name, where 0 < N < 32
       
  1702 		- N bytes containing the resource name of first dependent resource, where 0 < N < 32
       
  1703 		- 4 bytes containing the resource id of second dependent resource
       
  1704 		- N bytes containing the resource name of second dependent resource, where 0 < N < 32
       
  1705 		- 4 bytes containing the address of first dependent resource
       
  1706 		- 4 bytes containing the address of second dependent resource
       
  1707 		*/
       
  1708 		EDeRegisterResourceDependency
       
  1709 		};
       
  1710     /**
       
  1711 	Enumeration of sub-category values for trace category EResourceManagerUs.
       
  1712 	@see EResourceManagerUs
       
  1713     @prototype 9.5
       
  1714 	*/
       
  1715 	enum TResourceManagerUs
       
  1716 		{
       
  1717 		/**
       
  1718 		Trace output for the start of opening a channel to the Resource Controller.
       
  1719 
       
  1720 		Trace data format:
       
  1721 		- 4 bytes unused (displays 0)
       
  1722 		- 4 bytes containing the client thread identifier.
       
  1723 		- N bytes containing the client name, where 0 < N < 32
       
  1724 		*/
       
  1725 		EOpenChannelUsStart = 0,
       
  1726 		/**
       
  1727 		Trace output for the end of opening a channel to the Resource Controller.
       
  1728 
       
  1729 		Trace data format:
       
  1730 		- 4 bytes unused (displays 0)
       
  1731 		- 4 bytes containing the client identifier provided by the Resource Controller
       
  1732 		- N bytes containing the client name, where 0 < N < 32
       
  1733 		*/
       
  1734 		EOpenChannelUsEnd,
       
  1735 		/**
       
  1736 		Trace output for the start of registering a client with the Resource Controller.
       
  1737 
       
  1738 		Trace data format:
       
  1739 		- 4 bytes the number of concurrent change resource state operations to be supported
       
  1740 		- 4 bytes the number of concurrent notification requests to be supported
       
  1741 		- N bytes containing the client name, where 0 < N < 32
       
  1742 		- 4 bytes the number of concurrent get resource state operations to be supported
       
  1743 		*/
       
  1744 		ERegisterClientUsStart,
       
  1745 		/**
       
  1746 		Trace output for the end of registering a client with the Resource Controller.
       
  1747 
       
  1748 		Trace data format:
       
  1749 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1750 		- 4 bytes specifying the value returned from the call to Resource Controller's AllocReserve method
       
  1751 		*/
       
  1752 		ERegisterClientUsEnd,
       
  1753 		/**
       
  1754 		Trace output for the start of de-registering a client with the Resource Controller.
       
  1755 
       
  1756 		Trace data format:
       
  1757 		- 4 bytes unused (displays 0)
       
  1758 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1759 		- N bytes containing the client name, where 0 < N < 32
       
  1760 		*/
       
  1761 		EDeRegisterClientUsStart,
       
  1762 		/**
       
  1763 		Trace output for the end of registering a client with the Resource Controller.
       
  1764 
       
  1765 		Trace data format:
       
  1766 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1767 		*/
       
  1768 		EDeRegisterClientUsEnd,
       
  1769 		/**
       
  1770 		Trace output for the start of a GetResourceState request to the Resource Controller.
       
  1771 
       
  1772 		Trace data format:
       
  1773 		- 4 bytes specifying the resource ID
       
  1774 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1775 		- N bytes containing the client name, where 0 < N < 32
       
  1776 		*/
       
  1777 		EGetResourceStateUsStart,
       
  1778 		/**
       
  1779 		Trace output for the end of a GetResourceState request to the Resource Controller.
       
  1780 
       
  1781 		Trace data format:
       
  1782 		- 4 bytes specifying the resource ID
       
  1783 		- 4 bytes specifying the resource level
       
  1784 		- 4 bytes containing the client identifier
       
  1785 		- 4 bytes specifying the success code returned by the Resource Controller.
       
  1786 		*/
       
  1787 		EGetResourceStateUsEnd,
       
  1788 		/**
       
  1789 		Trace output for the start of a ChangeResourceState request to the Resource Controller.
       
  1790 
       
  1791 		Trace data format:
       
  1792 		- 4 bytes specifying the resource ID
       
  1793 		- 4 bytes specifying the required state
       
  1794 		- N bytes containing the client name, where 0 < N < 32
       
  1795 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1796 		*/
       
  1797 		ESetResourceStateUsStart,
       
  1798 		/**
       
  1799 		Trace output for the end of a ChangeResourceState request to the Resource Controller.
       
  1800 
       
  1801 		Trace data format:
       
  1802 		- 4 bytes specifying the resource ID
       
  1803 		- 4 bytes specifying the requested state
       
  1804 		- 4 bytes containing the client identifier
       
  1805 		- 4 bytes specifying the success code returned by the Resource Controller.
       
  1806 		*/
       
  1807 		ESetResourceStateUsEnd,
       
  1808 		/**
       
  1809 		Trace output for the start of a cancel GetResourceState request to the Resource Controller.
       
  1810 
       
  1811 		Trace data format:
       
  1812 		- 4 bytes specifying the resource ID
       
  1813 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1814 		- N bytes containing the client name, where 0 < N < 32
       
  1815 		*/
       
  1816 		ECancelGetResourceStateUsStart,
       
  1817 		/**
       
  1818 		Trace output for the end of a cancel GetResourceState request to the Resource Controller.
       
  1819 
       
  1820 		Trace data format:
       
  1821 		- 4 bytes specifying the resource ID
       
  1822 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1823 		- N bytes containing the client name, where 0 < N < 32
       
  1824 		*/
       
  1825 		ECancelGetResourceStateUsEnd,
       
  1826 		/**
       
  1827 		Trace output for the start of a cancel ChangeResourceState request to the Resource Controller.
       
  1828 
       
  1829 		Trace data format:
       
  1830 		- 4 bytes specifying the resource ID
       
  1831 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1832 		- N bytes containing the client name, where 0 < N < 32
       
  1833 		*/
       
  1834 		ECancelSetResourceStateUsStart,
       
  1835 		/**
       
  1836 		Trace output for the end of a cancel ChangeResourceState request to the Resource Controller.
       
  1837 
       
  1838 		Trace data format:
       
  1839 		- 4 bytes specifying the resource ID
       
  1840 		- 4 bytes containing the client identifier provided by the Resource Controller.
       
  1841 		- N bytes containing the client name, where 0 < N < 32
       
  1842 		*/
       
  1843 		ECancelSetResourceStateUsEnd
       
  1844 		};
       
  1845 
       
  1846 	/**
       
  1847 	Enumeration of sub-category values for trace category EThreadPriority.
       
  1848 	@see EThreadPriority
       
  1849 	@internalTechnology
       
  1850     @prototype 9.3
       
  1851 	*/
       
  1852 	enum TThreadPriority
       
  1853 		{
       
  1854 		/**
       
  1855 		Trace output when a nanothread priority is changed.
       
  1856 
       
  1857 		Trace data format:
       
  1858 		- 4 bytes containing the context id (an NThread*) for the thread whose priority is changing.
       
  1859 		- 4 bytes containing the new absolute priority.
       
  1860 		*/
       
  1861 		ENThreadPriority=0,
       
  1862 
       
  1863 		/**
       
  1864 		Trace output when a DThread's default priority is set.
       
  1865 
       
  1866 		Trace data format:
       
  1867 		- 4 bytes containing the context id (an NThread*) for the thread whose priority is changing.
       
  1868 		- 4 bytes containing the iThreadPriority member - a value from enum ::TThrdPriority.
       
  1869 		- 4 bytes containing the new default absolute priority.
       
  1870 		*/
       
  1871 		EDThreadPriority=1,
       
  1872 
       
  1873 		/**
       
  1874 		Trace output when a DProcess priority is changed.
       
  1875 
       
  1876 		Trace data format:
       
  1877 		- 4 bytes containing trace id (a DProcess*) for process.
       
  1878 		- 4 bytes containing the new process priority, a value from enum ::TProcPriority
       
  1879 		*/
       
  1880 		EProcessPriority=2
       
  1881 		};
       
  1882 
       
  1883 	/**
       
  1884 	Enumeration of sub-category values for trace category EPagingMedia.
       
  1885 	@see EPagingMedia
       
  1886 	*/
       
  1887 	enum TPagingMedia
       
  1888 		{
       
  1889 		/**
       
  1890 		Event generated when a request to 'page in' data is received by the Local Media Subsystem.
       
  1891 
       
  1892 		Trace data format:
       
  1893 		- 4 bytes containing the linear address of the buffer to where the data is to be written.
       
  1894 		- 4 bytes containing the offset from start of the partition to where the data to be paged in resides.
       
  1895 		- 4 bytes containing the number of bytes to be read off the media.
       
  1896 		- 4 bytes containing local drive number for the drive where the data to be paged in resides (-1 if ROM paging).
       
  1897 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1898 
       
  1899 		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
       
  1900 		*/
       
  1901 		EPagingMediaLocMedPageInBegin,
       
  1902 
       
  1903 		/**
       
  1904 		Event generated by the Local Media Subsystem when a request to page data in or out has completed.
       
  1905 
       
  1906 		Trace data format:
       
  1907 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1908 		- 4 bytes containing the completion code to be returned.
       
  1909 		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out.
       
  1910 
       
  1911 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1912 		*/
       
  1913 		EPagingMediaLocMedPageInPagedIn,
       
  1914 
       
  1915 		/**
       
  1916 		Event generated by the Local Media Subsystem when a request to 'page in' data is deferred.
       
  1917 
       
  1918 		Trace data format:
       
  1919 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1920 		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
       
  1921 
       
  1922 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1923 		*/
       
  1924 		EPagingMediaLocMedPageInDeferred,
       
  1925 
       
  1926 		/**
       
  1927 		Event generated by the Local Media Subsystem when a request to 'page in' data that has been deferred is re-posted.
       
  1928 
       
  1929 		Trace data format:
       
  1930 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1931 		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
       
  1932 
       
  1933 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1934 		*/
       
  1935 		EPagingMediaLocMedPageInDeferredReposted,
       
  1936 
       
  1937 		/**
       
  1938 		Event generated by the Local Media Subsystem when a request to 'page in' data is re-deferred.
       
  1939 
       
  1940 		Trace data format:
       
  1941 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1942 		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
       
  1943 
       
  1944 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1945 		*/
       
  1946 		EPagingMediaLocMedPageInReDeferred,
       
  1947 
       
  1948 		/**
       
  1949 		Event generated by the Local Media Subsystem when a request to 'page in' data is issued when the media is not yet open.
       
  1950 
       
  1951 		Trace data format:
       
  1952 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1953 		- 4 bytes containing the state of the media (one of TMediaState).
       
  1954 		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
       
  1955 
       
  1956 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1957 		*/
       
  1958 		EPagingMediaLocMedPageInQuietlyDeferred,
       
  1959 
       
  1960 		/**
       
  1961 		Event generated by the Local Media Subsystem when a fragment of a Write request is created and is ready to be sent to the Media
       
  1962 		Driver thread .
       
  1963 
       
  1964 		Trace data format:
       
  1965 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1966 		- 4 bytes containing the ID of this fragment (middle or last).
       
  1967 		- 4 bytes containing the length of data in this request fragment.
       
  1968 		- 4 bytes containing the offset within the original request to the start of data in this fragment.
       
  1969 		- 4 bytes containing the offset from start of the partition to where the data in this fragment is to be written.
       
  1970 		- 4 bytes containing the address of the DThread object representing the thread that issued the original Write request.
       
  1971 
       
  1972 		The context id (NThread*) in this trace is that of the File Server drive thread that issued the original Write request.
       
  1973 		*/
       
  1974 		EPagingMediaLocMedFragmentBegin,
       
  1975 
       
  1976 		/**
       
  1977 		Event generated by the Local Media Subsystem when a Write fragment is completed .
       
  1978 
       
  1979 		Trace data format:
       
  1980 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1981 		- 4 bytes containing the completion code to be returned.
       
  1982 
       
  1983 		The context id (NThread*) in this trace is that of the File Server drive thread that issued the original Write request.
       
  1984 		*/
       
  1985 		EPagingMediaLocMedFragmentEnd,
       
  1986 
       
  1987 		/**
       
  1988 		Event generated when the Media Driver starts processing a request to 'page in' data in its specific Request(..) function.
       
  1989 
       
  1990 		Trace data format:
       
  1991 		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
       
  1992 		- 4 bytes containing the linear address in memory where this request object resides.
       
  1993 
       
  1994 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  1995 		*/
       
  1996 		EPagingMediaPagingMedDrvBegin,
       
  1997 
       
  1998 		/**
       
  1999 		Event generated by the Media Driver when the data read by a 'page in' request is written to the paging buffer.
       
  2000 
       
  2001 		Trace data format:
       
  2002 		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
       
  2003 		- 4 bytes containing the linear address in memory where this request object resides.
       
  2004 		- 4 bytes containing the linear address of the buffer to where the data is to be written.
       
  2005 		- 4 bytes containing the offset within the buffer to where the data will be written.
       
  2006 		- 4 bytes containing the length of data to be written.
       
  2007 
       
  2008 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  2009 		*/
       
  2010 		EPagingMediaMedDrvWriteBack,
       
  2011 
       
  2012 		/**
       
  2013 		Event generated when a request to 'page in' data is put on hold because the Media Driver is performing some background
       
  2014 		operation (not another request) and cannot service the request.
       
  2015 
       
  2016 		Trace data format:
       
  2017 		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
       
  2018 		- 4 bytes containing the linear address in memory where this request object resides.
       
  2019 
       
  2020 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  2021 		*/
       
  2022 		EPagingMediaMedDrvOnHold,
       
  2023 
       
  2024 		/**
       
  2025 		Event generated by the Media Driver when the data read by a 'page out' request is read from the paging buffer.
       
  2026 
       
  2027 		Trace data format:
       
  2028 		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
       
  2029 		- 4 bytes containing the linear address in memory where this request object resides.
       
  2030 		- 4 bytes containing the linear address of the buffer to where the data is to be written.
       
  2031 		- 4 bytes containing the offset within the buffer to where the data will be written.
       
  2032 		- 4 bytes containing the length of data to be written.
       
  2033 
       
  2034 		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
       
  2035 		*/
       
  2036 		EPagingMediaMedDrvRead,
       
  2037 
       
  2038 		/**
       
  2039 		Event generated when a request to 'page out' data is received by the Local Media Subsystem.
       
  2040 
       
  2041 		Trace data format:
       
  2042 		- 4 bytes containing the linear address of the buffer from where the data is to be read.
       
  2043 		- 4 bytes containing the offset from start of the partition to where the data to be paged out resides.
       
  2044 		- 4 bytes containing the number of bytes to be written to the media.
       
  2045 		- 4 bytes containing the linear address in memory where this request object resides.
       
  2046 
       
  2047 		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
       
  2048 		*/
       
  2049 		EPagingMediaLocMedPageOutBegin,
       
  2050 
       
  2051 		/**
       
  2052 		Event generated when a request to mark an area of the swap file as deleted is received by the Local Media Subsystem.
       
  2053 
       
  2054 		Trace data format:
       
  2055 		- 4 bytes containing NULL
       
  2056 		- 4 bytes containing the offset from start of the partition to where the data to be paged out resides.
       
  2057 		- 4 bytes containing the number of bytes to be marked as deleted
       
  2058 		- 4 bytes containing the linear address in memory where this request object resides.
       
  2059 
       
  2060 		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
       
  2061 		*/
       
  2062 		EPagingMediaLocMedDeleteNotifyBegin,
       
  2063 
       
  2064 		};
       
  2065 
       
  2066 	/**
       
  2067 	Enumeration of sub-category values for trace category EKernelMemory.
       
  2068 	@see EKernelMemory
       
  2069 	*/
       
  2070 	enum TKernelMemory
       
  2071 		{
       
  2072 		/**
       
  2073 		Event recorded during startup and prime which details the initial amount of free RAM.
       
  2074 
       
  2075 		Trace data format:
       
  2076 		- 4 bytes containing the number of bytes of RAM the system started with.
       
  2077 		*/
       
  2078 		EKernelMemoryInitialFree,
       
  2079 
       
  2080 		/**
       
  2081 		Event recorded during prime which records the then-current amount of free RAM.
       
  2082 
       
  2083 		Trace data format:
       
  2084 		- 4 bytes containing the number of bytes of free RAM.
       
  2085 		*/
       
  2086 		EKernelMemoryCurrentFree,
       
  2087 
       
  2088 		/**
       
  2089 		Event recorded when a miscellaneous kernel allocation is made. These include:
       
  2090 		- Memory for MMU page table contents
       
  2091 		- Memory for MMU SPageTableInfos
       
  2092 		- Memory for shadow pages
       
  2093 
       
  2094 		Trace data format:
       
  2095 		- 4 bytes containing the size, in bytes, of the allocation.
       
  2096 		*/
       
  2097 		EKernelMemoryMiscAlloc,
       
  2098 
       
  2099 		/**
       
  2100 		Event recorded when a miscellaneous kernel allocation (see EKernelMemoryMiscAlloc
       
  2101 		above) is freed.
       
  2102 
       
  2103 		Trace data format:
       
  2104 		- 4 bytes containing the size, in bytes, of the freed allocation.
       
  2105 		*/
       
  2106 		EKernelMemoryMiscFree,
       
  2107 
       
  2108 		/**
       
  2109 		The amount of memory reserved for the minimum demand paging cache. The *actual* DP cache
       
  2110 		also uses free memory, only this minimum amount is permanently reserved for that purpose.
       
  2111 		This event is recorded during prime and when the amount changes.
       
  2112 
       
  2113 		Trace data format:
       
  2114 		- 4 bytes containing the minimum size, in bytes, of the demand paging cache.
       
  2115 		*/
       
  2116 		EKernelMemoryDemandPagingCache,
       
  2117 
       
  2118 		/**
       
  2119 		Physically contiguous memory allocated by device drivers via one of:
       
  2120 			Epoc::AllocPhysicalRam()
       
  2121 			Epoc::ZoneAllocPhysicalRam()
       
  2122 			Epoc::ClaimPhysicalRam()
       
  2123 			TRamDefragRequest::ClaimRamZone()
       
  2124 
       
  2125 		Trace data format:
       
  2126 		- 4 bytes containing the size of the allocated memory.
       
  2127 		- 4 bytes containing the physical base address of allocated memory.
       
  2128 
       
  2129 		NB: The prime function logs a EKernelMemoryDrvPhysAlloc record where the physical
       
  2130 		address is -1 and should be ignored.
       
  2131 		*/
       
  2132 		EKernelMemoryDrvPhysAlloc,
       
  2133 
       
  2134 		/**
       
  2135 		Memory freed by device drivers via calls to all versions of
       
  2136 		Epoc::FreePhysicalRam().
       
  2137 
       
  2138 		Trace data format:
       
  2139 		- 4 bytes containing the size of the freed memory.
       
  2140 		- 4 bytes containing the physical base address of freed memory.
       
  2141 		*/
       
  2142 		EKernelMemoryDrvPhysFree,
       
  2143 		};
       
  2144 
       
  2145 	/**
       
  2146 	Enumeration of sub-category values for trace category EHeap.
       
  2147 	@see EHeap
       
  2148 	*/
       
  2149 	enum THeap
       
  2150 		{
       
  2151 		/**
       
  2152 		Event recorded during process startup which logs the point of heap creation.
       
  2153 
       
  2154 		Trace data format:
       
  2155 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2156 		- 2 bytes containing the size of header overhead, per allocation (0xFFFF indicates a variable size)
       
  2157 		- 2 bytes containing the size of footer overhead, per allocation (0xFFFF indicates a variable size)
       
  2158 		*/
       
  2159 		EHeapCreate,
       
  2160 
       
  2161 		/**
       
  2162 		Event recorded during process startup which details the chunk being used as a heap.
       
  2163 
       
  2164 		Trace data format:
       
  2165 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2166 		- 4 bytes containing the chunk ID (The RHandleBase* of the chunk)
       
  2167 		*/
       
  2168 		EHeapChunkCreate,
       
  2169 
       
  2170 		/**
       
  2171 		Event recorded when RHeap::Alloc() is called.
       
  2172 
       
  2173 		Trace data format:
       
  2174 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2175 		- 4 bytes containing the address of the allocation
       
  2176 		- 4 bytes containing the size of the allocation
       
  2177 		- 4 bytes containing the requested size of allocation
       
  2178 		*/
       
  2179 		EHeapAlloc,
       
  2180 
       
  2181 		/**
       
  2182 		Event recorded when RHeap::ReAlloc() is called.
       
  2183 
       
  2184 		Trace data format:
       
  2185 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2186 		- 4 bytes containing the address of the new allocation
       
  2187 		- 4 bytes containing the size of the allocation
       
  2188 		- 4 bytes containing the requested size of allocation
       
  2189 		- 4 bytes containing the address of the old allocation
       
  2190 		*/
       
  2191 		EHeapReAlloc,
       
  2192 
       
  2193 		/**
       
  2194 		Event recorded when RHeap::Free() is called.
       
  2195 
       
  2196 		Trace data format:
       
  2197 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2198 		- 4 bytes containing the address of the free'd allocation
       
  2199 		*/
       
  2200 		EHeapFree,
       
  2201 
       
  2202 		/**
       
  2203 		Event recorded when RHeap::Alloc() fails.
       
  2204 
       
  2205 		Trace data format:
       
  2206 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2207 		- 4 bytes containing the requested size of allocation
       
  2208 		*/
       
  2209 		EHeapAllocFail,
       
  2210 
       
  2211 		/**
       
  2212 		Event recorded when RHeap::ReAlloc() fails.
       
  2213 
       
  2214 		Trace data format:
       
  2215 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2216 		- 4 bytes containing the address of the old allocation
       
  2217 		- 4 bytes containing the requested size of allocation
       
  2218 		 */
       
  2219 		EHeapReAllocFail,
       
  2220 
       
  2221 		/**
       
  2222 		Event recorded when heap memory corruption occurs.
       
  2223 
       
  2224 		Trace data format:
       
  2225 		- 4 bytes containing the heap ID (The RAllocator*)
       
  2226 		- 4 bytes containing address of the corrupted memory block
       
  2227 		- 4 bytes containing length of the corrupted memory block
       
  2228 		*/
       
  2229 		EHeapCorruption,
       
  2230 
       
  2231 		/**
       
  2232 		Trace to provide additional heap debugging information.
       
  2233 
       
  2234 		This trace (if present) is generated by Symbian OS memory debug tools, and
       
  2235 		will follow one of the other THeap events (e.g. EHeapAlloc, EHeapFree, etc.).
       
  2236 		It is intended to provide a stack trace for the preceding heap event,
       
  2237 		to indicate how the previous heap event was generated.
       
  2238 
       
  2239 		On many systems exact stack frames are not available, and the values
       
  2240 		will be extracted from the stack using heuristics, so there may be some
       
  2241 		spurious values and some missing values.
       
  2242 
       
  2243 		Trace data format:
       
  2244 		- 4 bytes containing the heap ID (the RAllocator*)
       
  2245 		- sequence of 4-byte PC values representing the call stack, with the top-most
       
  2246 		  (most recent call) first.
       
  2247 		*/
       
  2248 		EHeapCallStack,
       
  2249 		};
       
  2250 
       
  2251 	/**
       
  2252 	Enumeration of sub-category values for trace category EMetaTrace.
       
  2253 	@see EMetaTrace
       
  2254 	*/
       
  2255 	enum TMetaTrace
       
  2256 		{
       
  2257 		/**
       
  2258 		Information about timestamps used for tracing.
       
  2259 
       
  2260 		Trace data format:
       
  2261 		- 4 bytes containing the period of the Timestamp value.
       
  2262 		- 4 bytes containing the period of the Timestamp2 value.
       
  2263 		- 4 bytes containing a set of bit flags with the following meaning:
       
  2264 			- Bit 0, if true, indicates that Timestamp and Timestamp2 are two halves
       
  2265 			  of a single 64bit timestamp value; Timestamp2 is the most significant part.
       
  2266 			- All other bits are presently undefined.
       
  2267 
       
  2268 		The format of the timestamp period data is a period in seconds given using an exponent and mantissa
       
  2269 		format, where the most significant 8 bits are the signed power-of-two value for the exponent, and
       
  2270 		the least significant 24 bits are the integer value of the mantissa. The binary point is to the right
       
  2271 		of the least significant mantissa bit, and the mantissa may not be in normalised form.
       
  2272 
       
  2273 		Example code for decoding the period:
       
  2274 		@code
       
  2275 			TInt32 period; // value from trace record
       
  2276 			int exponent = (signed char)(period>>24);
       
  2277 			int mantissa = period&0xffffff;
       
  2278 			double periodInSeconds = (double)mantissa*pow(2,exponent);
       
  2279 		@endcode
       
  2280 		*/
       
  2281 		EMetaTraceTimestampsInfo,
       
  2282 
       
  2283 		/**
       
  2284 		Trace indicating the start of a test case being measured.
       
  2285 
       
  2286 		Trace data format:
       
  2287 		- 4 bytes containing measurement specific value.
       
  2288 		- 4 bytes containing a further measurement specific value.
       
  2289 		- Remaining data is ASCII text providing human readable information.
       
  2290 		*/
       
  2291 		EMetaTraceMeasurementStart,
       
  2292 
       
  2293 		/**
       
  2294 		Trace indicating the end of a test case being measured.
       
  2295 
       
  2296 		Trace data format:
       
  2297 		- 4 bytes containing measurement specific identifying value.
       
  2298 		- 4 bytes containing a further measurement specific identifying value.
       
  2299 
       
  2300 		The values contained in this trace must be identical to those in the corresponding
       
  2301 		ETraceInfoMeasurementStart trace.
       
  2302 		*/
       
  2303 		EMetaTraceMeasurementEnd,
       
  2304 
       
  2305 		/**
       
  2306 		Trace indicating a change in state of the primary filter.
       
  2307 
       
  2308 		Trace data format:
       
  2309 		- 1 byte containing a trace category number.
       
  2310 		- 1 byte containing the new filter state for the category. (0=off, 1=on).
       
  2311 		- 2 byte padding. (Should be output as zeros.)
       
  2312 		*/
       
  2313 		EMetaTraceFilterChange,
       
  2314 		};
       
  2315 
       
  2316 	/**
       
  2317 	Enumeration of sub-category values for trace category ERamAllocator.
       
  2318 	@see BTrace::ERamAllocator
       
  2319 	*/
       
  2320 	enum TRamAllocator
       
  2321 		{
       
  2322 		/**
       
  2323 		The number of RAM zones.
       
  2324 
       
  2325 		Trace data format:
       
  2326 		- 4 bytes containing the number of RAM zones.
       
  2327 		*/
       
  2328 		ERamAllocZoneCount,
       
  2329 
       
  2330 		/**
       
  2331 		Information on the layout of a RAM zone.
       
  2332 
       
  2333 		Trace data format:
       
  2334 		- 4 bytes containing the number of pages in the zone
       
  2335 		- 4 bytes containing the physical base address of the zone
       
  2336 		- 4 bytes containing the ID of the zone
       
  2337 		- 1 bytes containing the preference of the zone
       
  2338 		- 1 bytes containing the flags of the zone
       
  2339 		- 2 bytes reserved for future use
       
  2340 		*/
       
  2341 		ERamAllocZoneConfig,
       
  2342 
       
  2343 		/**
       
  2344 		This trace is sent for every contiguous block of RAM that was allocated
       
  2345 		during the kernel boot process.
       
  2346 
       
  2347 		Trace data format:
       
  2348 		- 4 bytes containing the number of contiguous pages allocated for the block
       
  2349 		- 4 bytes containing the physical base address of the block
       
  2350 		*/
       
  2351 		ERamAllocBootAllocation,
       
  2352 
       
  2353 
       
  2354 		/**
       
  2355 		This trace marks the end of the boot allocations
       
  2356 
       
  2357 		Trace data format:
       
  2358 		- no extra bytes are sent
       
  2359 		*/
       
  2360 		ERamAllocBootAllocationEnd,
       
  2361 
       
  2362 		/**
       
  2363 		Event generated when a RAM zone's flags have been modified
       
  2364 		This could occur when a RAM zone is blocked/unblocked from further
       
  2365 		allocations from all/certain page types.
       
  2366 
       
  2367 		Trace data format:
       
  2368 		- 4 bytes containing the ID of the zone
       
  2369 		- 4 bytes containing the flags of the zone
       
  2370 		*/
       
  2371 		ERamAllocZoneFlagsModified,
       
  2372 
       
  2373 		/**
       
  2374 		Event generated when DRamAllocator::ClaimPhysicalRam has successfully
       
  2375 		claimed the specified RAM pages.
       
  2376 
       
  2377 		Trace data format:
       
  2378 		- 4 bytes containing the number of contiguous pages
       
  2379 		- 4 bytes containing the base address of the pages
       
  2380 		*/
       
  2381 		ERamAllocClaimRam,
       
  2382 
       
  2383 		/**
       
  2384 		Event generated when DRamAllocator::MarkPageAllocated has successfully
       
  2385 		marked the specified page as allocated.
       
  2386 
       
  2387 		Trace data format:
       
  2388 		- 4 bytes containing the TZonePageType type of the page
       
  2389 		- 4 bytes containing the address of the page
       
  2390 		*/
       
  2391 		ERamAllocMarkAllocated,
       
  2392 
       
  2393 		/**
       
  2394 		Event generated when DRamAllocator::AllocContiguousRam successfully
       
  2395 		allocates the requested number of pages.
       
  2396 
       
  2397 		Trace data format:
       
  2398 		- 4 bytes containing the TZonePageType type of the pages
       
  2399 		- 4 bytes containing the number of contiguous pages
       
  2400 		- 4 bytes containing the base address of the pages
       
  2401 		*/
       
  2402 		ERamAllocContiguousRam,
       
  2403 
       
  2404 		/**
       
  2405 		Event generated when DRamAllocator::FreePage has successfully freed
       
  2406 		the specified RAM page.
       
  2407 
       
  2408 		Trace data format:
       
  2409 		- 4 bytes containing the TZonePageType type of the page
       
  2410 		- 4 bytes containing the address of the page
       
  2411 		*/
       
  2412 		ERamAllocFreePage,
       
  2413 
       
  2414 		/**
       
  2415 		Event generated when DRamAllocator::FreePhysical successfully freed
       
  2416 		the specified RAM page(s).
       
  2417 
       
  2418 		Trace data format:
       
  2419 		- 4 bytes containing the number of contiguous pages
       
  2420 		- 4 bytes containing the base address of the pages
       
  2421 		*/
       
  2422 		ERamAllocFreePhysical,
       
  2423 
       
  2424 		/**
       
  2425 		Event generated for each contiguous block of pages when
       
  2426 		DRamAllocator::AllocRamPages or DRamAllocator::ZoneAllocRamPages
       
  2427 		are attempting to fulfil a request.
       
  2428 
       
  2429 		Trace data format:
       
  2430 		- 4 bytes containing the TZonePageType type of the pages
       
  2431 		- 4 bytes containing the number of contiguous pages
       
  2432 		- 4 bytes containing the base address of the pages
       
  2433 		*/
       
  2434 		ERamAllocRamPages,
       
  2435 
       
  2436 		/**
       
  2437 		Event generated for contiguous block of pages when
       
  2438 		DRamAllocator::FreeRamPages is invoked.
       
  2439 
       
  2440 		Trace data format:
       
  2441 		- 4 bytes containing the TZonePageType type of the pages
       
  2442 		- 4 bytes containing the number of contiguous pages
       
  2443 		- 4 bytes containing the base address of the pages
       
  2444 		*/
       
  2445 		ERamAllocFreePages,
       
  2446 
       
  2447 		/**
       
  2448 		Event generated when DRamAllocator::AllocRamPages has successfully
       
  2449 		allocated all the requested number of RAM pages.  If DRamAllocator::AllocRamPages
       
  2450 		couldn't allocate all the requested pages then this event is not generated.
       
  2451 
       
  2452 		Trace data format:
       
  2453 		- no extra bytes sent
       
  2454 		*/
       
  2455 		ERamAllocRamPagesEnd,
       
  2456 
       
  2457 		/**
       
  2458 		Event generated when all ERamAllocFreePages events for a particular
       
  2459 		call of DRamAllocator::FreeRamPages have been generated.
       
  2460 
       
  2461 		Trace data format:
       
  2462 		- no extra bytes sent
       
  2463 		*/
       
  2464 		ERamAllocFreePagesEnd,
       
  2465 
       
  2466 		/**
       
  2467 		Event generated when DRamAllocator::ChangePageType is has successfully
       
  2468 		updated the type of the specified page.
       
  2469 
       
  2470 		Trace data format:
       
  2471 		- 4 bytes containing the new TZonePageType type of the page
       
  2472 		- 4 bytes containing the physical address of the page
       
  2473 		*/
       
  2474 		ERamAllocChangePageType,
       
  2475 
       
  2476 		/**
       
  2477 		Event generated when DRamAllocator::ZoneAllocContiguousRam has
       
  2478 		successfully allocated the required number of pages.
       
  2479 
       
  2480 		Trace data format:
       
  2481 		- 4 bytes containing the TZonePageType type of the pages
       
  2482 		- 4 bytes containing the number of contiguous pages
       
  2483 		- 4 bytes containing the base address of the pages
       
  2484 		*/
       
  2485 		ERamAllocZoneContiguousRam,
       
  2486 
       
  2487 		/**
       
  2488 		Event generated when DRamAllocator::ZoneAllocRamPages has successfully
       
  2489 		allocated all the requested RAM pages.  If DRamAllocator::ZoneAllocRamPages
       
  2490 		couldn't allocate all the requested pages then this event is not generated.
       
  2491 
       
  2492 		Trace data format:
       
  2493 		- no extra bytes sent
       
  2494 		*/
       
  2495 		ERamAllocZoneRamPagesEnd,
       
  2496 
       
  2497 		/**
       
  2498 		Event generated when Epoc::ClaimRamZone has successfully claimed
       
  2499 		the requested zone.
       
  2500 
       
  2501 		Trace data format:
       
  2502 		- 4 bytes containing the ID of the zone that has been claimed.
       
  2503 		*/
       
  2504 		ERamAllocClaimZone,
       
  2505 		};
       
  2506 
       
  2507 	enum TFastMutex
       
  2508 		{
       
  2509 		/**
       
  2510 		Event generated when a thread acquires a fast mutex, (waits on it).
       
  2511 
       
  2512 		Trace data format:
       
  2513 		- 4 bytes containing the fast mutex id, (an NFastMutex*).
       
  2514 		*/
       
  2515 		EFastMutexWait,
       
  2516 
       
  2517 		/**
       
  2518 		Event generated when a thread releases a fast mutex, (signals it).
       
  2519 
       
  2520 		Trace data format:
       
  2521 		- 4 bytes containing the fast mutex id, (an NFastMutex*).
       
  2522 		*/
       
  2523 		EFastMutexSignal,
       
  2524 
       
  2525 		/**
       
  2526 		Event generated when a fast mutex is 'flashed' (signalled then immediately
       
  2527 		waited on again). E.g the operation performed by NKern::FlashSystem.
       
  2528 
       
  2529 		Trace data format:
       
  2530 		- 4 bytes containing the fast mutex id, (an NFastMutex*).
       
  2531 		*/
       
  2532 		EFastMutexFlash,
       
  2533 
       
  2534 		/**
       
  2535 		Trace to associate a fast mutex with a textual name.
       
  2536 
       
  2537 		Trace data format:
       
  2538 		- 4 bytes containing the fast mutex id, (an NFastMutex*).
       
  2539 		- 4 bytes containing unspecified data (should be output as zero).
       
  2540 		- Remaining data is the ASCII name for the fast mutex.
       
  2541 		*/
       
  2542 		EFastMutexName,
       
  2543 
       
  2544 		/**
       
  2545 		Event generated when a thread blocks on a fast mutex.
       
  2546 
       
  2547 		Trace data format:
       
  2548 		- 4 bytes containing the fast mutex id, (an NFastMutex*).
       
  2549 		*/
       
  2550 		EFastMutexBlock,
       
  2551 		};
       
  2552 
       
  2553 	/**
       
  2554 	Enumeration of sub-category values for trace category EProfiling.
       
  2555 	@see BTrace::EProfiling
       
  2556 	*/
       
  2557 	enum TProfiling
       
  2558 		{
       
  2559 		/**
       
  2560 		CPU sample including program counter and thread context.
       
  2561 
       
  2562 		Trace data format:
       
  2563 		- 4 bytes containing the program counter.
       
  2564 		- 4 bytes containing thread context (an NThread*).
       
  2565 		*/
       
  2566 		ECpuFullSample = 0,
       
  2567 
       
  2568 		/**
       
  2569 		Optimised CPU sample including program counter.
       
  2570 		Doesn't include a thread context id as it hasn't changed since
       
  2571 		the last sample.
       
  2572 
       
  2573 		Trace data format:
       
  2574 		- 4 bytes containing the program counter.
       
  2575 		*/
       
  2576 		ECpuOptimisedSample,
       
  2577 
       
  2578 		/**
       
  2579 		CPU sample from iDFC including program counter.
       
  2580 
       
  2581 		Trace data format:
       
  2582 		- 4 bytes containing the program counter.
       
  2583 		*/
       
  2584 		ECpuIdfcSample,
       
  2585 
       
  2586 		/**
       
  2587 		CPU sample from non-Symbian thread.
       
  2588 
       
  2589   		Trace data format:
       
  2590 		- no extra bytes are sent
       
  2591 		*/
       
  2592 		ECpuNonSymbianThreadSample
       
  2593 
       
  2594 		};
       
  2595 
       
  2596 	/**
       
  2597 	Enumeration of sub-category values for trace category ERawEvent.
       
  2598 	@see BTrace::ERawEvent
       
  2599 	*/
       
  2600 	enum TRawEventTrace
       
  2601 		{
       
  2602 
       
  2603 		/**
       
  2604 		For all the set Functions in the TRawEvent class.
       
  2605 		Trace Data Format Varies depends which of the Overloaded Set Method from where its set .
       
  2606 		Trace data format:
       
  2607 		if there are only one 4 byte data
       
  2608 
       
  2609 		--The Following oder is folloed for data.
       
  2610 		- 4 bytes containing the event type
       
  2611 
       
  2612 		if there are 2*4 byte data
       
  2613 		- 4 bytes containing the event type
       
  2614 		- 4 bytes containing the scan code
       
  2615 
       
  2616 		if there are  3*4 byte data
       
  2617 		- 4 bytes containing the event type
       
  2618 		--4 bytes containining the X co-ordinate
       
  2619 		--4 bytes containining the Y co-ordinate
       
  2620 
       
  2621 		if there are  4*4 byte data
       
  2622 		- 4 bytes containing the event type
       
  2623 		--4 bytes containining the X co-ordinate
       
  2624 		--4 bytes containining the Y co-ordinate
       
  2625 		--4 bytes containining the Z co-ordinate
       
  2626 
       
  2627 		if there are  5*4 byte data
       
  2628 		- 4 bytes containing the event type
       
  2629 		--4 bytes containining the X co-ordinate
       
  2630 		--4 bytes containining the Y co-ordinate
       
  2631 		--4 bytes containining the Z co-ordinate
       
  2632 		--4 bytes containining the PointerNumber
       
  2633 
       
  2634   		if there are  7*4 byte data
       
  2635 		- 4 bytes containing the event type
       
  2636 		--4 bytes containining the X co-ordinate
       
  2637 		--4 bytes containining the Y co-ordinate
       
  2638 		--4 bytes containining the Z co-ordinate
       
  2639 		--4 bytes containining the Phi polar coordinate.
       
  2640 		--4 bytes containining the Theta polar coordinate.
       
  2641 		--4 bytes containining the rotation angle(alpha)
       
  2642 		*/
       
  2643 
       
  2644 		ESetEvent = 1,
       
  2645 
       
  2646 		/**
       
  2647 		For  user side SetTip Events
       
  2648 		Trace data format:
       
  2649 		- 4 bytes to state containing Tip Info.
       
  2650 		*/
       
  2651 		ESetTipEvent,
       
  2652 
       
  2653 		/**
       
  2654 		For  SetTilt Events
       
  2655 		Trace data format:
       
  2656 		- 4 bytes containing the event type
       
  2657 		--4 bytes containining the Phi polar coordinate.
       
  2658 		--4 bytes containining the Theta polar coordinate.
       
  2659 		*/
       
  2660 		ESetTiltEvent,
       
  2661 
       
  2662 		/**
       
  2663 		For  SetRotation Events
       
  2664 		Trace data format:
       
  2665 		- 4 bytes containing the event type
       
  2666 		--4 bytes containining the rotation angle (alpha)
       
  2667 		*/
       
  2668 		ESetRotationtEvent,
       
  2669 
       
  2670 		/**
       
  2671 		For  SetPointerNumber Events
       
  2672 		Trace data format:
       
  2673 		- 4 bytes containing the Pointer Number
       
  2674 		*/
       
  2675 		ESetPointerNumberEvent,
       
  2676 
       
  2677 		/**
       
  2678 		For  user side addevents (User::AddEvent)
       
  2679 		Trace data format:
       
  2680 		- 4 bytes containing the event type
       
  2681 		*/
       
  2682 		EUserAddEvent,
       
  2683 
       
  2684 		/**
       
  2685 		For  kernal side addevents (Kern::AddEvent)
       
  2686 		Trace data format:
       
  2687 		- 4 bytes containing the event type
       
  2688 		*/
       
  2689 		EKernelAddEvent
       
  2690 		};
       
  2691 
       
  2692 	enum TSymbianKernelSync
       
  2693 		{
       
  2694 		/**
       
  2695 		A semaphore (DSemaphore) has been created.
       
  2696 
       
  2697 		Trace data format:
       
  2698 		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
       
  2699 		- 4 bytes containing the owning DThread* or DProcess*
       
  2700 		- Remaining data is the ASCII name of the semaphore.
       
  2701 		*/
       
  2702 		ESemaphoreCreate=0x00,
       
  2703 
       
  2704 		/**
       
  2705 		A semaphore (DSemaphore) has been destroyed.
       
  2706 
       
  2707 		Trace data format:
       
  2708 		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
       
  2709 		*/
       
  2710 		ESemaphoreDestroy=0x01,
       
  2711 
       
  2712 		/**
       
  2713 		A semaphore (DSemaphore) has been acquired.
       
  2714 
       
  2715 		Trace data format:
       
  2716 		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
       
  2717 		*/
       
  2718 		ESemaphoreAcquire=0x02,
       
  2719 
       
  2720 		/**
       
  2721 		A semaphore (DSemaphore) has been released.
       
  2722 
       
  2723 		Trace data format:
       
  2724 		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
       
  2725 		*/
       
  2726 		ESemaphoreRelease=0x03,
       
  2727 
       
  2728 		/**
       
  2729 		A thread has blocked on a semaphore (DSemaphore)
       
  2730 
       
  2731 		Trace data format:
       
  2732 		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
       
  2733 		*/
       
  2734 		ESemaphoreBlock=0x04,
       
  2735 
       
  2736 
       
  2737 		/**
       
  2738 		A mutex (DMutex) has been created.
       
  2739 
       
  2740 		Trace data format:
       
  2741 		- 4 bytes containing trace id (a DMutex*) for this mutex.
       
  2742 		- 4 bytes containing the owning DThread* or DProcess*
       
  2743 		- Remaining data is the ASCII name of the mutex.
       
  2744 		*/
       
  2745 		EMutexCreate=0x10,
       
  2746 
       
  2747 		/**
       
  2748 		A mutex (DMutex) has been destroyed.
       
  2749 
       
  2750 		Trace data format:
       
  2751 		- 4 bytes containing trace id (a DMutex*) for this mutex.
       
  2752 		*/
       
  2753 		EMutexDestroy=0x11,
       
  2754 
       
  2755 		/**
       
  2756 		A mutex (DMutex) has been acquired.
       
  2757 
       
  2758 		Trace data format:
       
  2759 		- 4 bytes containing trace id (a DMutex*) for this mutex.
       
  2760 		*/
       
  2761 		EMutexAcquire=0x12,
       
  2762 
       
  2763 		/**
       
  2764 		A mutex (DMutex) has been released.
       
  2765 
       
  2766 		Trace data format:
       
  2767 		- 4 bytes containing trace id (a DMutex*) for this mutex.
       
  2768 		*/
       
  2769 		EMutexRelease=0x13,
       
  2770 
       
  2771 		/**
       
  2772 		A thread has blocked on a mutex (DMutex)
       
  2773 
       
  2774 		Trace data format:
       
  2775 		- 4 bytes containing trace id (a DMutex*) for this mutex.
       
  2776 		*/
       
  2777 		EMutexBlock=0x14,
       
  2778 
       
  2779 
       
  2780 		/**
       
  2781 		A condition variable (DCondVar) has been created.
       
  2782 
       
  2783 		Trace data format:
       
  2784 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2785 		- 4 bytes containing the owning DThread* or DProcess*
       
  2786 		- Remaining data is the ASCII name of the condition variable.
       
  2787 		*/
       
  2788 		ECondVarCreate=0x20,
       
  2789 
       
  2790 		/**
       
  2791 		A condition variable (DCondVar) has been destroyed.
       
  2792 
       
  2793 		Trace data format:
       
  2794 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2795 		*/
       
  2796 		ECondVarDestroy=0x21,
       
  2797 
       
  2798 		/**
       
  2799 		A thread has blocked on a condition variable (DCondVar)
       
  2800 
       
  2801 		Trace data format:
       
  2802 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2803 		- 4 bytes containing trace id (DMutex*) for the associated mutex.
       
  2804 		*/
       
  2805 		ECondVarBlock=0x22,
       
  2806 
       
  2807 		/**
       
  2808 		A thread has been released from a condition variable (DCondVar) wait
       
  2809 
       
  2810 		Trace data format:
       
  2811 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2812 		- 4 bytes containing trace id (DMutex*) for the associated mutex.
       
  2813 		*/
       
  2814 		ECondVarWakeUp=0x23,
       
  2815 
       
  2816 		/**
       
  2817 		A condition variable (DCondVar) has been signalled
       
  2818 
       
  2819 		Trace data format:
       
  2820 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2821 		- 4 bytes containing trace id (DMutex*) for the associated mutex.
       
  2822 		*/
       
  2823 		ECondVarSignal=0x24,
       
  2824 
       
  2825 		/**
       
  2826 		A condition variable (DCondVar) has been signalled in broadcast mode.
       
  2827 
       
  2828 		Trace data format:
       
  2829 		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
       
  2830 		- 4 bytes containing trace id (DMutex*) for the associated mutex.
       
  2831 		*/
       
  2832 		ECondVarBroadcast=0x25,
       
  2833 
       
  2834 		};
       
  2835 
       
  2836 	enum TFlexibleMemModel
       
  2837 		{
       
  2838 		/**
       
  2839 		A memory object has been created.
       
  2840 
       
  2841 		Trace data format:
       
  2842 		- 4 bytes containing the memory object id (DMemoryObject*).
       
  2843 		- 4 bytes containing the size of the memory in pages.
       
  2844 		*/
       
  2845 		EMemoryObjectCreate,
       
  2846 
       
  2847 		/**
       
  2848 		A memory object has been destroyed.
       
  2849 
       
  2850 		Trace data format:
       
  2851 		- 4 bytes containing the memory object id (DMemoryObject*).
       
  2852 		*/
       
  2853 		EMemoryObjectDestroy,
       
  2854 
       
  2855 		/**
       
  2856 		A memory mapping has been created.
       
  2857 
       
  2858 		Trace data format:
       
  2859 		- 4 bytes containing the memory mapping id (DMemoryMapping*).
       
  2860 		- 4 bytes containing the memory object id (DMemoryObject*).
       
  2861 		- 4 bytes containing the offset of the mapping into the memory object, in pages
       
  2862 		- 4 bytes containing the size of the mapping in pages
       
  2863 		- 2 bytes containing the ASID
       
  2864 		- 2 spare bytes, currently zero
       
  2865 		- 4 bytes containing the virtual address the mapping
       
  2866 		*/
       
  2867 		EMemoryMappingCreate,
       
  2868 
       
  2869 		/**
       
  2870 		A memory mapping has been destroyed.
       
  2871 
       
  2872 		Trace data format:
       
  2873 		- 4 bytes containing the memory mapping id (DMemoryMapping*).
       
  2874 		*/
       
  2875 		EMemoryMappingDestroy,
       
  2876 
       
  2877 		// The following traces associate memory model objects with the kernel objects that use them
       
  2878 
       
  2879 		/**
       
  2880 	    A memory object is being used for the contents of a chunk.
       
  2881 
       
  2882 		Trace data format:
       
  2883 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2884 		- 4 bytes containing the chunk id (a DChunk*)
       
  2885 		*/
       
  2886 		EMemoryObjectIsChunk,
       
  2887 
       
  2888 		/**
       
  2889 	    A memory object is being used for the contents of a code segment.
       
  2890 
       
  2891 		Trace data format:
       
  2892 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2893 		- 4 bytes containing the code segment id (a DCodeSeg*)
       
  2894 		*/
       
  2895 		EMemoryObjectIsCodeSeg,
       
  2896 
       
  2897 		/**
       
  2898 	    A memory object is being used for process static data.
       
  2899 
       
  2900 		Trace data format:
       
  2901 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2902 		- 4 bytes containing the process id (a DProcess*)
       
  2903 		*/
       
  2904 		EMemoryObjectIsProcessStaticData,
       
  2905 
       
  2906 		/**
       
  2907 	    A memory object is being used for DLL static data.
       
  2908 
       
  2909 		Trace data format:
       
  2910 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2911 		- 4 bytes containing the code segment id (a DCodeSeg*)
       
  2912 		- 4 bytes containing the process id (a DProcess*)
       
  2913 		*/
       
  2914 		EMemoryObjectIsDllStaticData,
       
  2915 
       
  2916 		/**
       
  2917 	    A memory object is being used for a thread's supervisor stack.
       
  2918 
       
  2919 		Trace data format:
       
  2920 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2921 		- 4 bytes containing the thread id (a DThread*)
       
  2922 		*/
       
  2923 		EMemoryObjectIsSupervisorStack,
       
  2924 
       
  2925 		/**
       
  2926 	    A memory object is being used for a thread's user stack.
       
  2927 
       
  2928 		Trace data format:
       
  2929 		- 4 bytes containing the memory object id (a DMemoryObject*).
       
  2930 		- 4 bytes containing the thread id (a DThread*)
       
  2931 		*/
       
  2932 		EMemoryObjectIsUserStack,
       
  2933 
       
  2934 		/**
       
  2935 		Identifies the Address Space ID (ASID) used for a process.
       
  2936 
       
  2937 		Trace data format:
       
  2938 		- 4 bytes containing the process id (a DProcess*)
       
  2939 		- 2 bytes containing the ASID
       
  2940 		- 2 spare bytes, currently zero
       
  2941 		*/
       
  2942 		EAddressSpaceId
       
  2943 		};
       
  2944 
       
  2945     /**
       
  2946 	Enumeration of sub-category values for trace category EIic.
       
  2947 	@see EIic
       
  2948     @prototype 9.6
       
  2949 	*/
       
  2950 	enum TIic
       
  2951 		{
       
  2952 		/**
       
  2953 		Trace output for the invocation by the PSL of registering an array of pointers to channels with the IIC bus controller.
       
  2954 
       
  2955 		Trace data format:
       
  2956 		- 4 bytes containing the address of the array
       
  2957 		- 4 bytes containing the number of channels in the array
       
  2958 		*/
       
  2959 		ERegisterChansStartPsl = 0,
       
  2960 
       
  2961 		/**
       
  2962 		Trace output for the start of the PIL registering an array of pointers to channels with the IIC bus controller.
       
  2963 
       
  2964 		Trace data format:
       
  2965 		- 4 bytes containing the address of the array
       
  2966 		- 4 bytes containing the number of channels in the array
       
  2967 		- 4 bytes containing the number of channels registered with the controller prior to this point
       
  2968 		*/
       
  2969 		ERegisterChansStartPil = 1,
       
  2970 
       
  2971 		/**
       
  2972 		Trace output for the end of the PIL registering an array of pointers to channels with the IIC bus controller.
       
  2973 
       
  2974 		Trace data format:
       
  2975 		- 4 bytes containing the address of the array
       
  2976 		- 4 bytes containing the number of channels now registered with the controller
       
  2977 		*/
       
  2978 		ERegisterChansEndPil = 2,
       
  2979 
       
  2980 		/**
       
  2981 		Trace output for the end of the PSL registering an array of pointers to channels with the IIC bus controller.
       
  2982 
       
  2983 		Trace data format:
       
  2984 		- 4 bytes containing the address of the array
       
  2985 		- 4 bytes containing the number of channels in the array
       
  2986 		- 4 bytes containing the error code returned by the IIC bus controller
       
  2987 		*/
       
  2988 		ERegisterChansEndPsl = 3,
       
  2989 
       
  2990 		/**
       
  2991 		Trace output for the start of the PSL de-registering a channel with the IIC bus controller.
       
  2992 
       
  2993 		Trace data format:
       
  2994 		- 4 bytes containing the address of the channel
       
  2995 		*/
       
  2996 		EDeRegisterChanStartPsl = 4,
       
  2997 
       
  2998 		/**
       
  2999 		Trace output for the start of the PIL de-registering a channel with the IIC bus controller.
       
  3000 
       
  3001 		Trace data format:
       
  3002 		- 4 bytes containing the address of the channel
       
  3003 		- 4 bytes containing the number of channels registered with the controller prior to this point
       
  3004 		*/
       
  3005 		EDeRegisterChanStartPil = 5,
       
  3006 
       
  3007 		/**
       
  3008 		Trace output for the end of the PSL de-registering a channel with the IIC bus controller.
       
  3009 
       
  3010 		Trace data format:
       
  3011 		- 4 bytes containing the address of the channel
       
  3012 		- 4 bytes containing the number of channels now registered with the controller
       
  3013 		*/
       
  3014 		EDeRegisterChanEndPil = 6,
       
  3015 
       
  3016 		/**
       
  3017 		Trace output for the end of the PSL de-registering a channel with the IIC bus controller.
       
  3018 
       
  3019 		Trace data format:
       
  3020 		- 4 bytes containing the address of the channel
       
  3021 		- 4 bytes containing the error code returned by the IIC bus controller
       
  3022 		*/
       
  3023 		EDeRegisterChanEndPsl = 7,
       
  3024 
       
  3025 		/**
       
  3026 		Trace output for the start of a synchronous queue transaction request in the PIL.
       
  3027 
       
  3028 		Trace data format:
       
  3029 		- 4 bytes containing the bus realisation variability token
       
  3030 		- 4 bytes containing the pointer to the transaction object
       
  3031 		*/
       
  3032 		EMQTransSyncStartPil = 8,
       
  3033 
       
  3034 		/**
       
  3035 		Trace output for the end of a synchronous queue transaction request in the PIL.
       
  3036 
       
  3037 		Trace data format:
       
  3038 		- 4 bytes containing the bus realisation variability token
       
  3039 		- 4 bytes containing the error code returned by the controller
       
  3040 		*/
       
  3041 		EMQTransSyncEndPil = 9,
       
  3042 
       
  3043 		/**
       
  3044 		Trace output for the start of a synchronous queue transaction request in the PIL.
       
  3045 
       
  3046 		Trace data format:
       
  3047 		- 4 bytes containing the bus realisation variability token
       
  3048 		- 4 bytes containing the pointer to the transaction object
       
  3049 		- 4 bytes containing the pointer to the callback object
       
  3050 		*/
       
  3051 		EMQTransAsyncStartPil = 10,
       
  3052 
       
  3053 		/**
       
  3054 		Trace output for the end of a synchronous queue transaction request in the PIL.
       
  3055 
       
  3056 		Trace data format:
       
  3057 		- 4 bytes containing the bus realisation variability token
       
  3058 		- 4 bytes containing the error code returned by the controller
       
  3059 		*/
       
  3060 		EMQTransAsyncEndPil = 11,
       
  3061 
       
  3062 		/**
       
  3063 		Trace output for the start of cancelling an asynchronous queue transaction request in the PIL.
       
  3064 
       
  3065 		Trace data format:
       
  3066 		- 4 bytes containing the bus realisation variability token
       
  3067 		- 4 bytes containing the pointer to the transaction object
       
  3068 		*/
       
  3069 		EMCancelTransStartPil = 12,
       
  3070 
       
  3071 		/**
       
  3072 		Trace output for the end of cancelling an asynchronous queue transaction request in the PIL.
       
  3073 
       
  3074 		Trace data format:
       
  3075 		- 4 bytes containing the pointer to the transaction object
       
  3076 		- 4 bytes containing the error code returned by the controller
       
  3077 		*/
       
  3078 		EMCancelTransEndPil = 13,
       
  3079 
       
  3080 		/**
       
  3081 		Trace output for the start of processing a transaction request in the PIL.
       
  3082 
       
  3083 		Trace data format:
       
  3084 		- 4 bytes containing the address of the channel
       
  3085 		- 4 bytes containing the pointer to the transaction object
       
  3086 		*/
       
  3087 		EMProcessTransStartPil = 14,
       
  3088 
       
  3089 		/**
       
  3090 		Trace output for the start of processing a transaction request in the PSL.
       
  3091 
       
  3092 		Trace data format:
       
  3093 		- 4 bytes containing the pointer to the transaction object
       
  3094 		*/
       
  3095 		EMProcessTransStartPsl = 15,
       
  3096 
       
  3097 		/**
       
  3098 		Trace output for the end of processing a transaction request in the PSL.
       
  3099 
       
  3100 		Trace data format:
       
  3101 		- 4 bytes containing the result code
       
  3102 		*/
       
  3103 		EMProcessTransEndPsl = 16,
       
  3104 
       
  3105 		/**
       
  3106 		Trace output for the end of processing a transaction request in the PIL.
       
  3107 
       
  3108 		Trace data format:
       
  3109 		- 4 bytes containing the address of the channel
       
  3110 		- 4 bytes containing the pointer to the transaction object
       
  3111 		- 4 bytes containing the result code
       
  3112 		- 4 bytes containing the pointer to the client callback object
       
  3113 		*/
       
  3114 		EMProcessTransEndPil = 17,
       
  3115 
       
  3116 		/**
       
  3117 		Trace output for the start of synchronously capturing a Slave channel in the PIL.
       
  3118 
       
  3119 		Trace data format:
       
  3120 		- 4 bytes containing the bus realisation variability
       
  3121 		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
       
  3122 		*/
       
  3123 		ESCaptChanSyncStartPil = 18,
       
  3124 
       
  3125 		/**
       
  3126 		Trace output for the start of synchronously capturing a Slave channel in the PSL.
       
  3127 
       
  3128 		Trace data format:
       
  3129 		- 4 bytes containing the address of the channel
       
  3130 		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
       
  3131 		*/
       
  3132 		ESCaptChanSyncStartPsl = 19,
       
  3133 
       
  3134 		/**
       
  3135 		Trace output for the end of synchronously capturing a Slave channel in the PSL.
       
  3136 
       
  3137 		Trace data format:
       
  3138 		- 4 bytes containing the address of the channel
       
  3139 		- 4 bytes containing the result code
       
  3140 		*/
       
  3141 		ESCaptChanSyncEndPsl = 20,
       
  3142 
       
  3143 		/**
       
  3144 		Trace output for the end of synchronously capturing a Slave channel in the PIL.
       
  3145 
       
  3146 		Trace data format:
       
  3147 		- 4 bytes containing the bus realisation variability
       
  3148 		- 4 bytes containing the platform-specific cookie that uniquely identifies the channel
       
  3149 		- 4 bytes containing the result code
       
  3150 		*/
       
  3151 		ESCaptChanSyncEndPil = 21,
       
  3152 
       
  3153 		/**
       
  3154 		Trace output for the start of asynchronously capturing a Slave channel in the PIL.
       
  3155 
       
  3156 		Trace data format:
       
  3157 		- 4 bytes containing the bus realisation variability
       
  3158 		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
       
  3159 		- 4 bytes containing the pointer to the client callback object
       
  3160 		*/
       
  3161 		ESCaptChanASyncStartPil = 22,
       
  3162 
       
  3163 		/**
       
  3164 		Trace output for the start of asynchronously capturing a Slave channel in the PSL.
       
  3165 
       
  3166 		Trace data format:
       
  3167 		- 4 bytes containing a pointer to the channel object
       
  3168 		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
       
  3169 		*/
       
  3170 		ESCaptChanASyncStartPsl = 23,
       
  3171 
       
  3172 		/**
       
  3173 		Trace output for the end of asynchronously capturing a Slave channel in the PSL.
       
  3174 
       
  3175 		Trace data format:
       
  3176 		- 4 bytes containing a pointer to the channel object
       
  3177 		- 4 bytes containing the result code
       
  3178 		*/
       
  3179 		ESCaptChanASyncEndPsl = 24,
       
  3180 
       
  3181 		/**
       
  3182 		Trace output for the end of asynchronously capturing a Slave channel in the PIL.
       
  3183 
       
  3184 		Trace data format:
       
  3185 		- 4 bytes containing a pointer to the channel object
       
  3186 		- 4 bytes containing the result code
       
  3187 		*/
       
  3188 		ESCaptChanASyncEndPil = 25,
       
  3189 
       
  3190 		/**
       
  3191 		Trace output for the start of releasing a Slave channel in the PIL.
       
  3192 
       
  3193 		Trace data format:
       
  3194 		- 4 bytes containing the channel identifier cookie
       
  3195 		*/
       
  3196 		ESRelChanStartPil = 26,
       
  3197 
       
  3198 		/**
       
  3199 		Trace output for the start of releasing a Slave channel in the PSL.
       
  3200 
       
  3201 		Trace data format:
       
  3202 		- 4 bytes containing a pointer to the channel object
       
  3203 		*/
       
  3204 		ESRelChanStartPsl = 27,
       
  3205 
       
  3206 		/**
       
  3207 		Trace output for the end of releasing a Slave channel in the PSL.
       
  3208 
       
  3209 		Trace data format:
       
  3210 		- 4 bytes containing a pointer to the channel object
       
  3211 		- 4 bytes containing the result code
       
  3212 		*/
       
  3213 		ESRelChanEndPsl = 28,
       
  3214 
       
  3215 		/**
       
  3216 		Trace output for the end of releasing a Slave channel in the PIL.
       
  3217 
       
  3218 		Trace data format:
       
  3219 		- 4 bytes containing the channel identifier cookie
       
  3220 		- 4 bytes containing the result code
       
  3221 		*/
       
  3222 		ESRelChanEndPil = 29,
       
  3223 
       
  3224 		/**
       
  3225 		Trace output for the start of registering an Rx buffer for a Slave channel in the PIL.
       
  3226 
       
  3227 		Trace data format:
       
  3228 		- 4 bytes containing a pointer to the receive buffer
       
  3229 		- 4 bytes containing the number of buffer bytes used to store a word.
       
  3230 		- 4 bytes containing the number of words expected to be received.
       
  3231 		- 4 bytes containing offset from the start of the buffer where to store the received data.
       
  3232 		*/
       
  3233 		ESRegRxBufStartPil = 30,
       
  3234 
       
  3235 		/**
       
  3236 		Trace output for the start of registering an Rx buffer for a Slave channel in the PSL.
       
  3237 
       
  3238 		Trace data format:
       
  3239 		- 4 bytes containing a pointer to the channel object
       
  3240 		- 4 bytes containing a pointer to the receive buffer
       
  3241 		- 4 bytes containing the number of buffer bytes used to store a word.
       
  3242 		- 4 bytes containing the number of words expected to be received.
       
  3243 		- 4 bytes containing offset from the start of the buffer where to store the received data.
       
  3244 		*/
       
  3245 		ESRegRxBufStartPsl = 31,
       
  3246 
       
  3247 		/**
       
  3248 		Trace output for the end of registering an Rx buffer for a Slave channel in the PSL.
       
  3249 
       
  3250 		Trace data format:
       
  3251 		- 4 bytes containing a pointer to the channel object
       
  3252 		- 4 bytes containing the result code
       
  3253 		*/
       
  3254 		ESRegRxBufEndPsl = 32,
       
  3255 
       
  3256 		/**
       
  3257 		Trace output for the end of registering an Rx buffer for a Slave channel in the PIL.
       
  3258 
       
  3259 		Trace data format:
       
  3260 		- 4 bytes containing the result code
       
  3261 		*/
       
  3262 		ESRegRxBufEndPil = 33,
       
  3263 
       
  3264 		/**
       
  3265 		Trace output for the start of registering an Tx buffer for a Slave channel in the PIL.
       
  3266 
       
  3267 		Trace data format:
       
  3268 		- 4 bytes containing a pointer to the transmit buffer
       
  3269 		- 4 bytes containing the number of buffer bytes used to store a word.
       
  3270 		- 4 bytes containing the number of words expected to be transmitted.
       
  3271 		- 4 bytes containing offset from the start of the buffer from where to transmit data.
       
  3272 		*/
       
  3273 		ESRegTxBufStartPil = 34,
       
  3274 
       
  3275 		/**
       
  3276 		Trace output for the start of registering an Tx buffer for a Slave channel in the PSL.
       
  3277 
       
  3278 		Trace data format:
       
  3279 		- 4 bytes containing a pointer to the channel object
       
  3280 		- 4 bytes containing a pointer to the transmit buffer
       
  3281 		- 4 bytes containing the number of buffer bytes used to store a word.
       
  3282 		- 4 bytes containing the number of words expected to be transmitted.
       
  3283 		- 4 bytes containing offset from the start of the buffer from where to transmit data.
       
  3284 		*/
       
  3285 		ESRegTxBufStartPsl = 35,
       
  3286 
       
  3287 		/**
       
  3288 		Trace output for the end of registering an Tx buffer for a Slave channel in the PSL.
       
  3289 
       
  3290 		Trace data format:
       
  3291 		- 4 bytes containing a pointer to the channel object
       
  3292 		- 4 bytes containing the result code
       
  3293 		*/
       
  3294 		ESRegTxBufEndPsl = 36,
       
  3295 
       
  3296 		/**
       
  3297 		Trace output for the start of setting a notification for a Slave channel in the PIL.
       
  3298 
       
  3299 		Trace data format:
       
  3300 		- 4 bytes containing the result code
       
  3301 		*/
       
  3302 		ESRegTxBufEndPil = 37,
       
  3303 
       
  3304 		/**
       
  3305 		Trace output for the start of setting a notification for a Slave channel in the PIL.
       
  3306 
       
  3307 		Trace data format:
       
  3308 		- 4 bytes containing the channel identifier cookie
       
  3309 		- 4 bytes containing the trigger value
       
  3310 		*/
       
  3311 		ESNotifTrigStartPil = 38,
       
  3312 
       
  3313 		/**
       
  3314 		Trace output for the start of setting a notification for a Slave channel in the PSL.
       
  3315 		
       
  3316 		Trace data format:
       
  3317 		- 4 bytes containing the trigger value
       
  3318 		*/
       
  3319 		ESNotifTrigStartPsl = 39,
       
  3320 
       
  3321 		/**
       
  3322 		Trace output for the end of setting a notification for a Slave channel in the PSL.
       
  3323 		
       
  3324 		Trace data format:
       
  3325 		- 4 bytes containing the result code
       
  3326 		*/
       
  3327 		ESNotifTrigEndPsl = 40,
       
  3328 
       
  3329 		/**
       
  3330 		Trace output for the end of setting a notification for a Slave channel in the PIL.
       
  3331 
       
  3332 		Trace data format:
       
  3333 		- 4 bytes containing the channel identifier cookie
       
  3334 		- 4 bytes containing the result code
       
  3335 		*/
       
  3336 		ESNotifTrigEndPil = 41,
       
  3337 
       
  3338 		/**
       
  3339 		Trace output for the start of a StaticExtension operaton for a MasterSlave channel in the PIL.
       
  3340 
       
  3341 		Trace data format:
       
  3342 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3343 		- 4 bytes containing a function identifier
       
  3344 		- 4 bytes containing an argument to be passed to the function
       
  3345 		- 4 bytes containing an argument to be passed to the function
       
  3346 		*/
       
  3347 		EMSStatExtStartPil = 42,
       
  3348 
       
  3349 		/**
       
  3350 		Trace output for the end of a StaticExtension operation for a MasterSlave channel in the PIL.
       
  3351 
       
  3352 		Trace data format:
       
  3353 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3354 		- 4 bytes containing a function identifier
       
  3355 		- 4 bytes containing the result code
       
  3356 		*/
       
  3357 		EMSStatExtEndPil = 43,
       
  3358 
       
  3359 		/**
       
  3360 		Trace output for the start of a StaticExtension operation for a Master channel in the PIL.
       
  3361 
       
  3362 		Trace data format:
       
  3363 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3364 		- 4 bytes containing a function identifier
       
  3365 		- 4 bytes containing an argument to be passed to the function
       
  3366 		- 4 bytes containing an argument to be passed to the function
       
  3367 		*/
       
  3368 		EMStatExtStartPil = 44,
       
  3369 
       
  3370 		/**
       
  3371 		Trace output for the start of a StaticExtension operation for a Master channel in the PSL.
       
  3372 
       
  3373 		Trace data format:
       
  3374 		- 4 bytes containing a pointer to the channel object
       
  3375 		- 4 bytes containing a function identifier
       
  3376 		- 4 bytes containing an argument to be passed to the function
       
  3377 		- 4 bytes containing an argument to be passed to the function
       
  3378 		*/
       
  3379 		EMStatExtStartPsl = 45,
       
  3380 
       
  3381 		/**
       
  3382 		Trace output for the end of a StaticExtension operation for a Master channel in the PSL.
       
  3383 
       
  3384 		Trace data format:
       
  3385 		- 4 bytes containing a pointer to the channel object
       
  3386 		- 4 bytes containing a function identifier
       
  3387 		- 4 bytes containing the result code
       
  3388 		*/
       
  3389 		EMStatExtEndPsl = 46,
       
  3390 
       
  3391 		/**
       
  3392 		Trace output for the end of a StaticExtension operation for a Master channel in the PIL.
       
  3393 
       
  3394 		Trace data format:
       
  3395 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3396 		- 4 bytes containing a function identifier
       
  3397 		- 4 bytes containing the result code
       
  3398 		*/
       
  3399 		EMStatExtEndPil = 47,
       
  3400 
       
  3401 		/**
       
  3402 		Trace output for the start of a StaticExtension operation for a Slave channel in the PIL.
       
  3403 
       
  3404 		Trace data format:
       
  3405 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3406 		- 4 bytes containing a function identifier
       
  3407 		- 4 bytes containing an argument to be passed to the function
       
  3408 		- 4 bytes containing an argument to be passed to the function
       
  3409 		*/
       
  3410 		ESStatExtStartPil = 48,
       
  3411 
       
  3412 		/**
       
  3413 		Trace output for the start of a StaticExtension operation for a Slave channel in the PSL.
       
  3414 
       
  3415 		Trace data format:
       
  3416 		- 4 bytes containing a pointer to the channel object
       
  3417 		- 4 bytes containing a function identifier
       
  3418 		- 4 bytes containing an argument to be passed to the function
       
  3419 		- 4 bytes containing an argument to be passed to the function
       
  3420 		*/
       
  3421 		ESStatExtStartPsl = 49,
       
  3422 
       
  3423 		/**
       
  3424 		Trace output for the end of a StaticExtension operation for a Slave channel in the PSL.
       
  3425 
       
  3426 		Trace data format:
       
  3427 		- 4 bytes containing a pointer to the channel object
       
  3428 		- 4 bytes containing a function identifier
       
  3429 		- 4 bytes containing the result code
       
  3430 		*/
       
  3431 		ESStatExtEndPsl = 50,
       
  3432 		/**
       
  3433 		Trace output for the end of a StaticExtension operation for a Slave channel in the PIL.
       
  3434 
       
  3435 		Trace data format:
       
  3436 		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
       
  3437 		- 4 bytes containing a function identifier
       
  3438 		- 4 bytes containing the result code
       
  3439 		*/
       
  3440 		ESStatExtEndPil = 51
       
  3441 		};
       
  3442 
       
  3443 	/**
       
  3444 	Calculate the address of the next trace record.
       
  3445 	@param aCurrentRecord A pointer to a trace record.
       
  3446 	@return The address of the trace record which follows aCurrentRecord.
       
  3447 	*/
       
  3448 	inline static TUint8* NextRecord(TAny* aCurrentRecord);
       
  3449 
       
  3450 #ifdef __KERNEL_MODE__
       
  3451 
       
  3452 	/**
       
  3453 	Create initial trace output required for the specified trace category.
       
  3454 	E.g. For the EThreadIdentification category, this will cause traces which identify
       
  3455 	all threads already in existence at this point.
       
  3456 
       
  3457 	@aCategory The trace category, or -1 to indicate all trace categories.
       
  3458 
       
  3459 	@publishedPartner
       
  3460 	@released
       
  3461 	*/
       
  3462 	IMPORT_C static void Prime(TInt aCategory=-1);
       
  3463 
       
  3464 	/**
       
  3465 	Prototype for function which is called to output trace records.
       
  3466 	I.e. as set by SetHandler().
       
  3467 
       
  3468 	The handler function should output all values which are appropriate for the
       
  3469 	trace as specified in aHeader.
       
  3470 
       
  3471 	@param aHeader	The 4 bytes for the trace header.
       
  3472 	@param aHeader2	The second header word.
       
  3473 					(If EHeader2Present is set in the header flags.)
       
  3474 	@param aContext	The context id.
       
  3475 					(If EContextIdPresent is set in the header flags.)
       
  3476 	@param a1		The first four bytes of trace data.
       
  3477 					(Only if the header size indicates that this is present.)
       
  3478 	@param a2		The second four bytes of trace data.
       
  3479 					(Only if the header size indicates that this is present.)
       
  3480 	@param a3		This is either the third four bytes of trace data, if
       
  3481 					the header size indicates there is between 9 and 12 bytes
       
  3482 					of trace data. If more than 12 of trace data are indicated, then
       
  3483 					a3 contains a pointer to the remaining trace data, bytes 8 trough to N.
       
  3484 					This trace data is word aligned.
       
  3485 	@param aExtra	The 'extra' value.
       
  3486 					(If EExtraPresent is set in the header flags.)
       
  3487 	@param aPc		The Program Counter value.
       
  3488 					(If EPcPresent is set in the header flags.)
       
  3489 
       
  3490 	@return			True, if the trace handler is enabled and outputting trace.
       
  3491 					False otherwise.
       
  3492 
       
  3493 	Here is an example implementation of a trace handler:
       
  3494 
       
  3495 	@code
       
  3496 	TInt size = (aHeader>>BTrace::ESizeIndex*8)&0xff;
       
  3497 	TInt flags = (aHeader>>BTrace::EFlagsIndex*8)&0xff;
       
  3498 	Output(aHeader), size -= 4;
       
  3499 	if(flags&BTrace::EHeader2Present)
       
  3500 		Output(aHeader2), size -= 4;
       
  3501 	if(flags&BTrace::EContextIdPresent)
       
  3502 		Output(aContext), size -= 4;
       
  3503 	if(flags&BTrace::EPcPresent)
       
  3504 		Output(aPc), size -= 4;
       
  3505 	if(flags&BTrace::EExtraPresent)
       
  3506 		Output(aExtra), size -= 4;
       
  3507 	if(size<=0)
       
  3508 		return ETrue;
       
  3509 	Output(a1), size -= 4;
       
  3510 	if(size<=0)
       
  3511 		return ETrue;
       
  3512 	Output(a2), size -= 4;
       
  3513 	if(size<=0)
       
  3514 		return ETrue;
       
  3515 	if(size<=4)
       
  3516 		Output(a3);
       
  3517 	else
       
  3518 		{
       
  3519 		TUint32* data = (TUint32*)a3;
       
  3520 		TUint32* end = (TUint32*)(a3+size);
       
  3521 		do Output(*data++); while(data<end);
       
  3522 		}
       
  3523 	return ETrue;
       
  3524 	@endcode
       
  3525 
       
  3526 	The trace handler may add timestamp values to the trace it outputs, in which case
       
  3527 	it should modify the flags and size in aHeader accordingly, before outputting this value.
       
  3528 	The Timestamp and/or Timestamp2 should be output, in that order, between the Header2 and
       
  3529 	Context ID values.
       
  3530 
       
  3531 	IMPORTANT NOTES.
       
  3532 	-	The handler must not make use of any kernel APIs, apart from TDfc::RawAdd(). (This is
       
  3533 		because kernel APIs may contain tracing and this would result in deadlock of the system.)
       
  3534 	-	The trace handler must not access or modify arguments which are not indicated as
       
  3535 		being present by their flag in aHeader or aHeader2.
       
  3536 		In particular, on ARM CPUs, the values a2, a3, aExtra and aPc are stored on the stack
       
  3537 		and the caller of this function may not have created these arguments before calling the
       
  3538 		trace handler.
       
  3539 	-	The handler may be called in any context and in a re-entrant manner. Implementations must
       
  3540 		be designed to cope with this.
       
  3541 	-	The interrupt disable status must not be reduced by the trace handler during its operation.
       
  3542 		E.g. if IRQs are disabled on entry, the handler must not cause them to become enabled
       
  3543 		at any point.
       
  3544 
       
  3545 	@pre Call in any context.
       
  3546 	@post Interrupt enable status unchanged.
       
  3547 
       
  3548 	@publishedPartner
       
  3549 	@released
       
  3550 	*/
       
  3551 	typedef TBool(*THandler)(TUint32 aHeader,TUint32 aHeader2,const TUint32 aContext,const TUint32 a1,const TUint32 a2,const TUint32 a3,const TUint32 aExtra,const TUint32 aPc);
       
  3552 
       
  3553 
       
  3554 	/**
       
  3555 	Set the function which will receive all trace records.
       
  3556 	@return The handler function which existed before this function was called.
       
  3557 	@publishedPartner
       
  3558 	@released
       
  3559 	*/
       
  3560 	IMPORT_C static BTrace::THandler SetHandler(BTrace::THandler aHandler);
       
  3561 
       
  3562 
       
  3563 	/**
       
  3564 	Set the trace filter bit for the specified category.
       
  3565 
       
  3566 	@param aCategory A category value from enum BTrace::TCategory.
       
  3567 	@param aValue The new filter value for the category.
       
  3568 				  1 means traces of this category are output, 0 means they are suppressed.
       
  3569 				  Other values must not be used.
       
  3570 
       
  3571 	@return The previous value of the filter for the category, 0 or 1.
       
  3572 			Or KErrNotSupported if this category is not supported by this build of the kernel.
       
  3573 	@publishedPartner
       
  3574 	@released
       
  3575 	*/
       
  3576 	IMPORT_C static TInt SetFilter(TUint aCategory, TBool aValue);
       
  3577 
       
  3578 
       
  3579 	/**
       
  3580 	Modify the secondary trace filter to add or remove the specified UID.
       
  3581 
       
  3582 	This method can not be used to disable a UID key if SetFilter2(TInt aGlobalFilter)
       
  3583 	has been used to set the filter to pass all traces. Such attempts result in a return
       
  3584 	code of KErrNotSupported.
       
  3585 
       
  3586 	@param aUid   The UID to filter.
       
  3587 	@param aValue The new filter value for the UID.
       
  3588 				  1 means traces with this UID are output, 0 means they are suppressed.
       
  3589 				  Other values must not be used.
       
  3590 
       
  3591 	@return The previous value of the filter for the UID, 0 or 1, if operation is successful.
       
  3592 			Otherwise, a negative number representing a system wide error code.
       
  3593 			(E.g. KErrNoMemory.)
       
  3594 
       
  3595 	@pre Call in a thread context.
       
  3596 
       
  3597 	@publishedPartner
       
  3598 	@released
       
  3599 	*/
       
  3600 	IMPORT_C static TInt SetFilter2(TUint32 aUid, TBool aValue);
       
  3601 
       
  3602 
       
  3603 	/**
       
  3604 	Set the secondary trace filter to include only the specified UIDs.
       
  3605 
       
  3606 	@param aUids    Pointer to array of UIDs.
       
  3607 	@param aNumUids Number of UID values pointer to by \a aUid.
       
  3608 
       
  3609 	@return KErrNone on success.
       
  3610 			Otherwise, a negative number representing a system wide error code.
       
  3611 			(E.g. KErrNoMemory.)
       
  3612 
       
  3613 	@pre Call in a thread context.
       
  3614 
       
  3615 	@publishedPartner
       
  3616 	@released
       
  3617 	*/
       
  3618 	IMPORT_C static TInt SetFilter2(const TUint32* aUids, TInt aNumUids);
       
  3619 
       
  3620 
       
  3621 	/**
       
  3622 	Set the secondary trace filter to pass or reject every trace.
       
  3623 
       
  3624 	@param aGlobalFilter If 0, the secondary filter will reject
       
  3625 						 all traces; if 1, all traces are passed
       
  3626 						 by the filter.
       
  3627 						 Other values have no effect.
       
  3628 
       
  3629 	@return The previous value of the global filter, or -1 if the global filter
       
  3630 			was not previously set.
       
  3631 
       
  3632 	@pre Call in a thread context.
       
  3633 
       
  3634 	@publishedPartner
       
  3635 	@released
       
  3636 	*/
       
  3637 	IMPORT_C static TInt SetFilter2(TInt aGlobalFilter);
       
  3638 
       
  3639 
       
  3640 	/**
       
  3641 	Get the contents of the secondary trace filter.
       
  3642 
       
  3643 	@param[out] aUids   Pointer to array of UIDs contained in the secondary filter.
       
  3644 						Ownership of this array is passed to the caller of this
       
  3645 						function, which is then responsible for deleting it.
       
  3646 						If filter is empty, \a aUid equals zero.
       
  3647 	@param[out] aGlobalFilter	Set to 1 if the secondary filter passes all traces.
       
  3648 								Set to 0 if the secondary filter rejects all traces.
       
  3649 								Set to -1 if the secondary filter operates by UIDs contained in traces.
       
  3650 
       
  3651 	@return Number of UIDs in returned array, if operation is successful.
       
  3652 			Otherwise, a negative number representing a system wide error code.
       
  3653 
       
  3654 
       
  3655 	@pre Call in a thread context.
       
  3656     @pre Calling thread must be in a critical section.
       
  3657 
       
  3658 	@publishedPartner
       
  3659 	@released
       
  3660 	*/
       
  3661 	IMPORT_C static TInt Filter2(TUint32*& aUids, TInt& aGlobalFilter);
       
  3662 
       
  3663 
       
  3664 	/**
       
  3665 	Get the trace filter bit for the specified category.
       
  3666 
       
  3667 	@param aCategory A category value from enum BTrace::TCategory,
       
  3668 	@return The value of the filter for the category, 0 or 1.
       
  3669 			Or KErrNotSupported if this category is not supported by this build of the kernel.
       
  3670 
       
  3671 	@publishedPartner
       
  3672 	@released
       
  3673 	*/
       
  3674 	inline static TInt Filter(TUint aCategory);
       
  3675 
       
  3676 	/**
       
  3677 	Get a pointer to the spinlock used to serialise BTrace output on SMP systems.
       
  3678 
       
  3679 	@internalComponent
       
  3680 	*/
       
  3681 	IMPORT_C static TSpinLock* LockPtr();
       
  3682 
       
  3683 
       
  3684 	/**
       
  3685 	Enumeration of control functions which can be implemented by the BTrace handler.
       
  3686 
       
  3687 	These values are passed to #Control to indicate the requested operation and are
       
  3688 	passed unaltered to the BTrace implementation's control function as specified by
       
  3689 	SetHandlers().
       
  3690 
       
  3691 	@see #Control
       
  3692 	@see #TControlFunction
       
  3693 	*/
       
  3694 	enum TControl
       
  3695 		{
       
  3696 		/**
       
  3697 		Called to indicate that the system has crashed. Typical response to this call
       
  3698 		is to disable tracing so that debug monitor activity doesn't generate any additional
       
  3699 		trace.
       
  3700 
       
  3701 		As this function is called after the system is crashed its implementation must not
       
  3702 		make use of any APIs which require a running system, it must also not re-enable
       
  3703 		interrupts.
       
  3704 
       
  3705 		ControlFunction argument meaning: None, ignore.
       
  3706 
       
  3707 		ControlFunction returns nothing, ignore.
       
  3708 		*/
       
  3709 		ECtrlSystemCrashed,
       
  3710 
       
  3711 		/**
       
  3712 		Called by crash monitor to request first block of data from any memory resident
       
  3713 		trace buffer. A size of zero should be returned if the buffer is empty.
       
  3714 
       
  3715 		This should be a non-destructive operation if possible. I.e. the contents of the
       
  3716 		buffer should be capable of being read multiple times by issuing repeated
       
  3717 		ECtrlCrashReadFirst/ECtrlCrashReadNext sequences.
       
  3718 
       
  3719 		As this function is called after the system is crashed its implementation must not
       
  3720 		make use of any APIs which require a running system, it must also not re-enable
       
  3721 		interrupts.
       
  3722 
       
  3723 		ControlFunction argument meaning:
       
  3724 		- aArg1 should be treated as a TUint8*& and set to the start address of the trace data.
       
  3725 		- aArg2 should be treated as a TUint& and set to the length of the trace data.
       
  3726 
       
  3727 		ControlFunction returns KErrNone if successful, otherwise one of the other system wide
       
  3728 		error codes.
       
  3729 		*/
       
  3730 		ECtrlCrashReadFirst,
       
  3731 
       
  3732 		/**
       
  3733 		Called by crash monitor after using ECrashReadFirst, to request subsequent
       
  3734 		blocks of data from the trace buffer. A size of zero should be returned if
       
  3735 		the end of the buffer has been reached.
       
  3736 
       
  3737 		As this function is called after the system is crashed its implementation must not
       
  3738 		make use of any APIs which require a running system, it must also not re-enable
       
  3739 		interrupts.
       
  3740 
       
  3741 		ControlFunction argument meaning:
       
  3742 		aArg1 should be treated as a TUint8** and set to the start address of the trace data.
       
  3743 		aArg2 should be treated as a TUint* and set to the length of the trace data.
       
  3744 
       
  3745 		ControlFunction returns KErrNone if successful, otherwise one of the other system wide
       
  3746 		error codes.
       
  3747 		*/
       
  3748 		ECtrlCrashReadNext
       
  3749 		};
       
  3750 
       
  3751 	/**
       
  3752 	Prototype for function callback called by #Control.
       
  3753 	I.e. as set by SetHandlers().
       
  3754 	*/
       
  3755 	typedef TInt(*TControlFunction)(TControl aFunction, TAny* aArg1, TAny* aArg2);
       
  3756 
       
  3757 	/**
       
  3758 	Call the BTrace handlers control function to perform the function.
       
  3759 
       
  3760 	@param aFunction	A value from TControl specifying the requested operation.
       
  3761 	@param aArg1		First argument for the operation. See enum TControl.
       
  3762 	@param aArg1		Second argument for the operation. See enum TControl.
       
  3763 
       
  3764 	@return KErrNone if successful,
       
  3765 			KErrNotSupported if the function isn't supported.
       
  3766 			otherwise one of the other system wide error codes.
       
  3767 
       
  3768 	@see TControl.
       
  3769 	*/
       
  3770 	IMPORT_C static TInt Control(TControl aFunction, TAny* aArg1=0, TAny* aArg2=0);
       
  3771 
       
  3772 	/**
       
  3773 	Set both the function which will receive all trace records, and the
       
  3774 	control function which will be called by each use of #Control.
       
  3775 
       
  3776 	@param aNewHandler The new handler to receive trace.
       
  3777 	@param aNewControl The new handler for control functions.
       
  3778 	@param aOldHandler The trace handler which existed prior to this function being called.
       
  3779 	@param aOldControl The control handler which existed prior to this function being called.
       
  3780 	*/
       
  3781 	IMPORT_C static void SetHandlers(BTrace::THandler aNewHandler, BTrace::TControlFunction aNewControl, BTrace::THandler& aOldHandler, BTrace::TControlFunction& aOldControl);
       
  3782 
       
  3783 #endif //  __KERNEL_MODE__
       
  3784 
       
  3785 	/**
       
  3786 	Check the trace filters to see if a trace with a given category
       
  3787 	would be output.
       
  3788 
       
  3789 	@param aCategory  A category value from enum BTrace::TCategory.
       
  3790 					  Only the 8 least significant bits in this value are used;
       
  3791 					  other bits are ignored.
       
  3792 
       
  3793 	@return True if a trace with this specification would be passed by the filters.
       
  3794 			False if a trace with this specification would be dropped by the filters.
       
  3795 
       
  3796 	@publishedPartner
       
  3797 	@released
       
  3798 	*/
       
  3799 	IMPORT_C static TBool CheckFilter(TUint32 aCategory);
       
  3800 
       
  3801 	/**
       
  3802 	Check the trace filters to see if a trace with a given category
       
  3803 	and filter UID would be output.
       
  3804 
       
  3805 	@param aCategory  A category value from enum BTrace::TCategory.
       
  3806 					  Only the 8 least significant bits in this value are used;
       
  3807 					  other bits are ignored.
       
  3808 	@param aUid       A UID to filter on.
       
  3809 
       
  3810 	@return True if a trace with this specification would be passed by the filters.
       
  3811 			False if a trace with this specification would be dropped by the filters.
       
  3812 
       
  3813 	@publishedPartner
       
  3814 	@released
       
  3815 	*/
       
  3816 	IMPORT_C static TBool CheckFilter2(TUint32 aCategory,TUint32 aUid);
       
  3817 
       
  3818 	/**
       
  3819 	Common function for BTrace macros.
       
  3820 	@internalComponent
       
  3821 	*/
       
  3822 	IMPORT_C static TBool Out(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
       
  3823 
       
  3824 	/**
       
  3825 	Common function for BTrace macros.
       
  3826 	@internalComponent
       
  3827 	*/
       
  3828 	IMPORT_C static TBool OutX(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
       
  3829 
       
  3830 	/**
       
  3831 	Common function for BTrace macros.
       
  3832 	@internalComponent
       
  3833 	*/
       
  3834 	IMPORT_C static TBool OutN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
       
  3835 
       
  3836 	/**
       
  3837 	Common function for BTrace macros.
       
  3838 	@internalComponent
       
  3839 	*/
       
  3840 	IMPORT_C static TBool OutNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
       
  3841 
       
  3842 	/**
       
  3843 	Common function for BTrace macros.
       
  3844 	@internalComponent
       
  3845 	*/
       
  3846 	IMPORT_C static TBool OutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize);
       
  3847 
       
  3848 	/**
       
  3849 	Common function for BTrace macros.
       
  3850 	@internalComponent
       
  3851 	*/
       
  3852 	IMPORT_C static TBool OutFiltered(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
       
  3853 
       
  3854 	/**
       
  3855 	Common function for BTrace macros.
       
  3856 	@internalComponent
       
  3857 	*/
       
  3858 	IMPORT_C static TBool OutFilteredX(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
       
  3859 
       
  3860 	/**
       
  3861 	Common function for BTrace macros.
       
  3862 	@internalComponent
       
  3863 	*/
       
  3864 	IMPORT_C static TBool OutFilteredN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
       
  3865 
       
  3866 	/**
       
  3867 	Common function for BTrace macros.
       
  3868 	@internalComponent
       
  3869 	*/
       
  3870 	IMPORT_C static TBool OutFilteredNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
       
  3871 
       
  3872 	/**
       
  3873 	Common function for BTrace macros.
       
  3874 	@internalComponent
       
  3875 	*/
       
  3876 	IMPORT_C static TBool OutFilteredBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize);
       
  3877 
       
  3878 	/**
       
  3879 	@internalComponent
       
  3880 	*/
       
  3881 	static void Init0();
       
  3882 
       
  3883 	/**
       
  3884 	@internalComponent
       
  3885 	*/
       
  3886 	typedef TBool(*TBTrace1)(TUint32);
       
  3887 
       
  3888 	/**
       
  3889 	@internalComponent
       
  3890 	*/
       
  3891 	typedef TBool(*TBTrace2)(TUint32,TUint32);
       
  3892 
       
  3893 	/**
       
  3894 	@internalComponent
       
  3895 	*/
       
  3896 	typedef TBool(*TBTrace3)(TUint32,TUint32,TUint32);
       
  3897 
       
  3898 	/**
       
  3899 	@internalComponent
       
  3900 	*/
       
  3901 	struct SExecExtension
       
  3902 		{
       
  3903 		TUint32	iA2;
       
  3904 		TUint32	iA3;
       
  3905 		TUint32	iPc;
       
  3906 		};
       
  3907 
       
  3908 	/**
       
  3909 	@internalComponent
       
  3910 	*/
       
  3911 	static TBool DoOutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize, TUint32 aContext, TUint32 aPc);
       
  3912 
       
  3913 	/**
       
  3914 	@internalComponent
       
  3915 	*/
       
  3916 	static TUint32 BigTraceId;
       
  3917 
       
  3918 	/**
       
  3919 	@internalComponent
       
  3920 	*/
       
  3921 	static TBool IsSupported(TUint aCategory);
       
  3922 
       
  3923 	/**
       
  3924 	Common function for UTrace calls, that need to set both program counter and format id as well as the normal parameters.
       
  3925 
       
  3926 	@param aHeader			The header (a0) of the trace record.
       
  3927 	@param aModuleUid		A uid (a1) to filter on
       
  3928 	@param aPc				A program counter
       
  3929 	@param aFormatId		A format id
       
  3930 	@param aData			The data to output
       
  3931 	@param aDataSize		The size of the data
       
  3932 
       
  3933 	@return ETrue if a trace was successfully sent and dealt with by the handler.
       
  3934 
       
  3935 	@internalComponent
       
  3936 	@prototype
       
  3937 	*/
       
  3938 	IMPORT_C static TBool OutFilteredPcFormatBig(TUint32 aHeader, TUint32 aModuleUid, TUint32 aPc, TUint16 aFormatId, const TAny* aData, TInt aDataSize);
       
  3939 
       
  3940 	};
       
  3941 
       
  3942 
       
  3943 /**
       
  3944 @internalComponent
       
  3945 */
       
  3946 class DBTraceFilter2
       
  3947 	{
       
  3948 public:
       
  3949 	TUint iNumUids;
       
  3950 	TInt iAccessCount;
       
  3951 	TUint32 iUids[1];
       
  3952 
       
  3953 	TBool Check(TUint32 aUid);
       
  3954 
       
  3955 	static DBTraceFilter2* New(TInt aNumUids);
       
  3956 	static DBTraceFilter2* Open(DBTraceFilter2*volatile& aFilter2);
       
  3957 	void Close();
       
  3958 
       
  3959 	DBTraceFilter2* iCleanupLink;
       
  3960 	static DBTraceFilter2* iCleanupHead;
       
  3961 	static void Cleanup();
       
  3962 	};
       
  3963 
       
  3964 
       
  3965 
       
  3966 
       
  3967 //
       
  3968 // BTraceX macros
       
  3969 //
       
  3970 
       
  3971 /**
       
  3972 @internalComponent
       
  3973 */
       
  3974 #define BTRACE_HEADER(aSize,aCategory,aSubCategory)			\
       
  3975 	(((aSize)<<BTrace::ESizeIndex*8)							\
       
  3976 	+((aCategory)<<BTrace::ECategoryIndex*8)					\
       
  3977 	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
       
  3978 
       
  3979 /**
       
  3980 @internalComponent
       
  3981 */
       
  3982 #define BTRACE_HEADER_C(aSize,aCategory,aSubCategory)		\
       
  3983 	((((aSize)+4)<<BTrace::ESizeIndex*8)						\
       
  3984 	+((BTrace::EContextIdPresent)<<BTrace::EFlagsIndex*8)	\
       
  3985 	+((aCategory)<<BTrace::ECategoryIndex*8)					\
       
  3986 	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
       
  3987 
       
  3988 /**
       
  3989 @internalComponent
       
  3990 */
       
  3991 #define BTRACE_HEADER_P(aSize,aCategory,aSubCategory)		\
       
  3992 	((((aSize)+4)<<BTrace::ESizeIndex*8)						\
       
  3993 	+((BTrace::EPcPresent)<<BTrace::EFlagsIndex*8)		\
       
  3994 	+((aCategory)<<BTrace::ECategoryIndex*8)					\
       
  3995 	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
       
  3996 
       
  3997 /**
       
  3998 @internalComponent
       
  3999 */
       
  4000 #define BTRACE_HEADER_CP(aSize,aCategory,aSubCategory)								\
       
  4001 	((((aSize)+8)<<BTrace::ESizeIndex*8)												\
       
  4002 	+((BTrace::EContextIdPresent|BTrace::EPcPresent)<<BTrace::EFlagsIndex*8)	\
       
  4003 	+((aCategory)<<BTrace::ECategoryIndex*8)											\
       
  4004 	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
       
  4005 
       
  4006 
       
  4007 
       
  4008 /**
       
  4009 Output a trace record of the specified category.
       
  4010 
       
  4011 The trace record data is 0 bytes in size.
       
  4012 
       
  4013 @param aCategory	A value from enum BTrace::TCategory,
       
  4014 @param aSubCategory Sub-category value between 0 and 255.
       
  4015 					The meaning of this is dependent on the Category.
       
  4016 
       
  4017 @return True if trace is enabled for aCategory, false otherwise.
       
  4018 @publishedPartner
       
  4019 @released
       
  4020 */
       
  4021 #define BTrace0(aCategory,aSubCategory) \
       
  4022 	((BTrace::TBTrace1)BTrace::Out) \
       
  4023 		(BTRACE_HEADER(4,(aCategory),(aSubCategory)))
       
  4024 
       
  4025 /**
       
  4026 Output a trace record of the specified category.
       
  4027 
       
  4028 The trace record data is 4 bytes in size.
       
  4029 
       
  4030 @param aCategory	A value from enum BTrace::TCategory,
       
  4031 @param aSubCategory Sub-category value between 0 and 255.
       
  4032 					The meaning of this is dependent on the Category.
       
  4033 @param a1			The 32bit quantity which forms the data of this trace record.
       
  4034 
       
  4035 @return True if trace is enabled for aCategory, false otherwise.
       
  4036 @publishedPartner
       
  4037 @released
       
  4038 */
       
  4039 #define BTrace4(aCategory,aSubCategory,a1) \
       
  4040 	((BTrace::TBTrace2)BTrace::Out) \
       
  4041 		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(a1))
       
  4042 
       
  4043 /**
       
  4044 Output a trace record of the specified category.
       
  4045 
       
  4046 The trace record data is 8 bytes in size.
       
  4047 
       
  4048 @param aCategory	A value from enum BTrace::TCategory,
       
  4049 @param aSubCategory Sub-category value between 0 and 255.
       
  4050 					The meaning of this is dependent on the Category.
       
  4051 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4052 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4053 
       
  4054 @return True if trace is enabled for aCategory, false otherwise.
       
  4055 @publishedPartner
       
  4056 @released
       
  4057 */
       
  4058 #define BTrace8(aCategory,aSubCategory,a1,a2) \
       
  4059 	((BTrace::TBTrace3)BTrace::Out) \
       
  4060 		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
       
  4061 
       
  4062 /**
       
  4063 Output a trace record of the specified category.
       
  4064 
       
  4065 The trace record data is 12 bytes in size.
       
  4066 
       
  4067 @param aCategory	A value from enum BTrace::TCategory,
       
  4068 @param aSubCategory Sub-category value between 0 and 255.
       
  4069 					The meaning of this is dependent on the Category.
       
  4070 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4071 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4072 @param a3			The third 32bit quantity which forms the data of this trace record.
       
  4073 
       
  4074 @return True if trace is enabled for aCategory, false otherwise.
       
  4075 @publishedPartner
       
  4076 @released
       
  4077 */
       
  4078 #define BTrace12(aCategory,aSubCategory,a1,a2,a3) \
       
  4079 	BTrace::Out \
       
  4080 		(BTRACE_HEADER(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
       
  4081 
       
  4082 /**
       
  4083 Output a trace record of the specified category.
       
  4084 
       
  4085 @param aCategory	A value from enum BTrace::TCategory,
       
  4086 @param aSubCategory Sub-category value between 0 and 255.
       
  4087 					The meaning of this is dependent on the Category.
       
  4088 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4089 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4090 @param aData		Address of addition data to add to trace.
       
  4091 					Must be word aligned, i.e. a multiple of 4.
       
  4092 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4093 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4094 					flag ERecordTruncated is set in the record.
       
  4095 
       
  4096 @return True if trace is enabled for aCategory, false otherwise.
       
  4097 @publishedPartner
       
  4098 @released
       
  4099 */
       
  4100 #define BTraceN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
       
  4101 	BTrace::OutN \
       
  4102 		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
       
  4103 
       
  4104 /**
       
  4105 Output a trace record of the specified category.
       
  4106 
       
  4107 If the specified data is too big to find into a single trace record, then a
       
  4108 multipart trace is generated. See TMultiPart.
       
  4109 
       
  4110 @param aCategory	A value from enum BTrace::TCategory,
       
  4111 @param aSubCategory Sub-category value between 0 and 255.
       
  4112 					The meaning of this is dependent on the Category.
       
  4113 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4114 @param aData		Address of addition data to add to trace.
       
  4115 					Must be word aligned, i.e. a multiple of 4.
       
  4116 @param aDataSize	Number of bytes of additional data.
       
  4117 
       
  4118 @return True if trace is enabled for aCategory, false otherwise.
       
  4119 @publishedPartner
       
  4120 @released
       
  4121 */
       
  4122 #define BTraceBig(aCategory,aSubCategory,a1,aData,aDataSize) \
       
  4123 	BTrace::OutBig \
       
  4124 		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
       
  4125 
       
  4126 
       
  4127 
       
  4128 /**
       
  4129 Output a trace record of the specified category.
       
  4130 
       
  4131 The trace record data is 0 bytes in size.
       
  4132 
       
  4133 @param aCategory	A value from enum BTrace::TCategory,
       
  4134 @param aSubCategory Sub-category value between 0 and 255.
       
  4135 					The meaning of this is dependent on the Category.
       
  4136 
       
  4137 @return True if trace is enabled for aCategory, false otherwise.
       
  4138 @publishedPartner
       
  4139 @released
       
  4140 */
       
  4141 #define BTraceContext0(aCategory,aSubCategory) \
       
  4142 	((BTrace::TBTrace1)BTrace::OutX) \
       
  4143 		(BTRACE_HEADER_C(4,(aCategory),(aSubCategory)))
       
  4144 
       
  4145 /**
       
  4146 Output a trace record of the specified category which also includes a Context ID.
       
  4147 
       
  4148 The trace record data is 4 bytes in size.
       
  4149 
       
  4150 @param aCategory	A value from enum BTrace::TCategory,
       
  4151 @param aSubCategory Sub-category value between 0 and 255.
       
  4152 					The meaning of this is dependent on the Category.
       
  4153 @param a1			The 32bit quantity which forms the data of this trace record.
       
  4154 
       
  4155 @return True if trace is enabled for aCategory, false otherwise.
       
  4156 @publishedPartner
       
  4157 @released
       
  4158 */
       
  4159 #define BTraceContext4(aCategory,aSubCategory,a1) \
       
  4160 	((BTrace::TBTrace2)BTrace::OutX) \
       
  4161 		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(a1))
       
  4162 
       
  4163 /**
       
  4164 Output a trace record of the specified category which also includes a Context ID.
       
  4165 
       
  4166 The trace record data is 8 bytes in size.
       
  4167 
       
  4168 @param aCategory	A value from enum BTrace::TCategory,
       
  4169 @param aSubCategory Sub-category value between 0 and 255.
       
  4170 					The meaning of this is dependent on the Category.
       
  4171 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4172 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4173 
       
  4174 @return True if trace is enabled for aCategory, false otherwise.
       
  4175 @publishedPartner
       
  4176 @released
       
  4177 */
       
  4178 #define BTraceContext8(aCategory,aSubCategory,a1,a2) \
       
  4179 	((BTrace::TBTrace3)BTrace::OutX) \
       
  4180 		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
       
  4181 
       
  4182 /**
       
  4183 Output a trace record of the specified category which also includes a Context ID.
       
  4184 
       
  4185 The trace record data is 12 bytes in size.
       
  4186 
       
  4187 @param aCategory	A value from enum BTrace::TCategory,
       
  4188 @param aSubCategory Sub-category value between 0 and 255.
       
  4189 					The meaning of this is dependent on the Category.
       
  4190 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4191 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4192 @param a3			The third 32bit quantity which forms the data of this trace record.
       
  4193 
       
  4194 @return True if trace is enabled for aCategory, false otherwise.
       
  4195 @publishedPartner
       
  4196 @released
       
  4197 */
       
  4198 #define BTraceContext12(aCategory,aSubCategory,a1,a2,a3) \
       
  4199 	BTrace::OutX \
       
  4200 		(BTRACE_HEADER_C(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
       
  4201 
       
  4202 /**
       
  4203 Output a trace record of the specified category which also includes a Context ID.
       
  4204 
       
  4205 @param aCategory	A value from enum BTrace::TCategory,
       
  4206 @param aSubCategory Sub-category value between 0 and 255.
       
  4207 					The meaning of this is dependent on the Category.
       
  4208 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4209 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4210 @param aData		Address of addition data to add to trace.
       
  4211 					Must be word aligned, i.e. a multiple of 4.
       
  4212 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4213 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4214 					flag ERecordTruncated is set in the record.
       
  4215 
       
  4216 @return True if trace is enabled for aCategory, false otherwise.
       
  4217 @publishedPartner
       
  4218 @released
       
  4219 */
       
  4220 #define BTraceContextN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
       
  4221 	BTrace::OutNX \
       
  4222 		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
       
  4223 
       
  4224 /**
       
  4225 Output a trace record of the specified category which also includes a Context ID.
       
  4226 
       
  4227 If the specified data is too big to find into a single trace record, then a
       
  4228 multipart trace is generated. See TMultiPart.
       
  4229 
       
  4230 @param aCategory	A value from enum BTrace::TCategory,
       
  4231 @param aSubCategory Sub-category value between 0 and 255.
       
  4232 					The meaning of this is dependent on the Category.
       
  4233 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4234 @param aData		Address of addition data to add to trace.
       
  4235 					Must be word aligned, i.e. a multiple of 4.
       
  4236 @param aDataSize	Number of bytes of additional data.
       
  4237 
       
  4238 @return True if trace is enabled for aCategory, false otherwise.
       
  4239 @publishedPartner
       
  4240 @released
       
  4241 */
       
  4242 #define BTraceContextBig(aCategory,aSubCategory,a1,aData,aDataSize) \
       
  4243 	BTrace::OutBig \
       
  4244 		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
       
  4245 
       
  4246 
       
  4247 
       
  4248 /**
       
  4249 Output a trace record of the specified category which also includes a Program Counter value.
       
  4250 
       
  4251 The trace record data is 0 bytes in size.
       
  4252 
       
  4253 @param aCategory	A value from enum BTrace::TCategory,
       
  4254 @param aSubCategory Sub-category value between 0 and 255.
       
  4255 					The meaning of this is dependent on the Category.
       
  4256 
       
  4257 @return True if trace is enabled for aCategory, false otherwise.
       
  4258 @publishedPartner
       
  4259 @released
       
  4260 */
       
  4261 #define BTracePc0(aCategory,aSubCategory) \
       
  4262 	((BTrace::TBTrace1)BTrace::Out) \
       
  4263 		(BTRACE_HEADER_P(4,(aCategory),(aSubCategory)))
       
  4264 
       
  4265 /**
       
  4266 Output a trace record of the specified category which also includes a Program Counter value.
       
  4267 
       
  4268 The trace record data is 4 bytes in size.
       
  4269 
       
  4270 @param aCategory	A value from enum BTrace::TCategory,
       
  4271 @param aSubCategory Sub-category value between 0 and 255.
       
  4272 					The meaning of this is dependent on the Category.
       
  4273 @param a1			The 32bit quantity which forms the data of this trace record.
       
  4274 
       
  4275 @return True if trace is enabled for aCategory, false otherwise.
       
  4276 @publishedPartner
       
  4277 @released
       
  4278 */
       
  4279 #define BTracePc4(aCategory,aSubCategory,a1)	\
       
  4280 	((BTrace::TBTrace2)BTrace::Out) \
       
  4281 		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(a1))
       
  4282 
       
  4283 /**
       
  4284 Output a trace record of the specified category which also includes a Program Counter value.
       
  4285 
       
  4286 The trace record data is 8 bytes in size.
       
  4287 
       
  4288 @param aCategory	A value from enum BTrace::TCategory,
       
  4289 @param aSubCategory Sub-category value between 0 and 255.
       
  4290 					The meaning of this is dependent on the Category.
       
  4291 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4292 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4293 
       
  4294 @return True if trace is enabled for aCategory, false otherwise.
       
  4295 @publishedPartner
       
  4296 @released
       
  4297 */
       
  4298 #define BTracePc8(aCategory,aSubCategory,a1,a2) \
       
  4299 	((BTrace::TBTrace3)BTrace::Out) \
       
  4300 		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
       
  4301 
       
  4302 /**
       
  4303 Output a trace record of the specified category which also includes a Program Counter value.
       
  4304 
       
  4305 The trace record data is 12 bytes in size.
       
  4306 
       
  4307 @param aCategory	A value from enum BTrace::TCategory,
       
  4308 @param aSubCategory Sub-category value between 0 and 255.
       
  4309 					The meaning of this is dependent on the Category.
       
  4310 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4311 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4312 @param a3			The third 32bit quantity which forms the data of this trace record.
       
  4313 
       
  4314 @return True if trace is enabled for aCategory, false otherwise.
       
  4315 @publishedPartner
       
  4316 @released
       
  4317 */
       
  4318 #define BTracePc12(aCategory,aSubCategory,a1,a2,a3) \
       
  4319 	BTrace::Out \
       
  4320 		(BTRACE_HEADER_P(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
       
  4321 
       
  4322 /**
       
  4323 Output a trace record of the specified category which also includes a Program Counter value.
       
  4324 
       
  4325 @param aCategory	A value from enum BTrace::TCategory,
       
  4326 @param aSubCategory Sub-category value between 0 and 255.
       
  4327 					The meaning of this is dependent on the Category.
       
  4328 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4329 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4330 @param aData		Address of addition data to add to trace.
       
  4331 					Must be word aligned, i.e. a multiple of 4.
       
  4332 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4333 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4334 					flag ERecordTruncated is set in the record.
       
  4335 
       
  4336 @return True if trace is enabled for aCategory, false otherwise.
       
  4337 @publishedPartner
       
  4338 @released
       
  4339 */
       
  4340 #define BTracePcN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
       
  4341 	BTrace::OutN \
       
  4342 		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
       
  4343 
       
  4344 /**
       
  4345 Output a trace record of the specified category which also includes a Program Counter value.
       
  4346 
       
  4347 If the specified data is too big to find into a single trace record, then a
       
  4348 multipart trace is generated. See TMultiPart.
       
  4349 
       
  4350 @param aCategory	A value from enum BTrace::TCategory,
       
  4351 @param aSubCategory Sub-category value between 0 and 255.
       
  4352 					The meaning of this is dependent on the Category.
       
  4353 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4354 @param aData		Address of addition data to add to trace.
       
  4355 					Must be word aligned, i.e. a multiple of 4.
       
  4356 @param aDataSize	Number of bytes of additional data.
       
  4357 
       
  4358 @return True if trace is enabled for aCategory, false otherwise.
       
  4359 @publishedPartner
       
  4360 @released
       
  4361 */
       
  4362 #define BTracePcBig(aCategory,aSubCategory,a1,aData,aDataSize) \
       
  4363 	BTrace::OutBig \
       
  4364 		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
       
  4365 
       
  4366 
       
  4367 
       
  4368 
       
  4369 /**
       
  4370 Output a trace record of the specified category which also includes
       
  4371 Context ID and Program Counter values.
       
  4372 
       
  4373 The trace record data is 0 bytes in size.
       
  4374 
       
  4375 @param aCategory	A value from enum BTrace::TCategory,
       
  4376 @param aSubCategory Sub-category value between 0 and 255.
       
  4377 					The meaning of this is dependent on the Category.
       
  4378 
       
  4379 @return True if trace is enabled for aCategory, false otherwise.
       
  4380 @publishedPartner
       
  4381 @released
       
  4382 */
       
  4383 #define BTraceContextPc0(aCategory,aSubCategory)	\
       
  4384 	((BTrace::TBTrace1)BTrace::OutX) \
       
  4385 		(BTRACE_HEADER_CP(4,(aCategory),(aSubCategory)))
       
  4386 
       
  4387 /**
       
  4388 Output a trace record of the specified category which also includes
       
  4389 Context ID and Program Counter values.
       
  4390 
       
  4391 The trace record data is 4 bytes in size.
       
  4392 
       
  4393 @param aCategory	A value from enum BTrace::TCategory,
       
  4394 @param aSubCategory Sub-category value between 0 and 255.
       
  4395 					The meaning of this is dependent on the Category.
       
  4396 @param a1			The 32bit quantity which forms the data of this trace record.
       
  4397 
       
  4398 @return True if trace is enabled for aCategory, false otherwise.
       
  4399 @publishedPartner
       
  4400 @released
       
  4401 */
       
  4402 #define BTraceContextPc4(aCategory,aSubCategory,a1)	\
       
  4403 	((BTrace::TBTrace2)BTrace::OutX) \
       
  4404 		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(a1))
       
  4405 
       
  4406 /**
       
  4407 Output a trace record of the specified category which also includes
       
  4408 Context ID and Program Counter values.
       
  4409 
       
  4410 The trace record data is 8 bytes in size.
       
  4411 
       
  4412 @param aCategory	A value from enum BTrace::TCategory,
       
  4413 @param aSubCategory Sub-category value between 0 and 255.
       
  4414 					The meaning of this is dependent on the Category.
       
  4415 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4416 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4417 
       
  4418 @return True if trace is enabled for aCategory, false otherwise.
       
  4419 @publishedPartner
       
  4420 @released
       
  4421 */
       
  4422 #define BTraceContextPc8(aCategory,aSubCategory,a1,a2) \
       
  4423 	((BTrace::TBTrace3)BTrace::OutX) \
       
  4424 		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
       
  4425 
       
  4426 /**
       
  4427 Output a trace record of the specified category which also includes
       
  4428 Context ID and Program Counter values.
       
  4429 
       
  4430 The trace record data is 12 bytes in size.
       
  4431 
       
  4432 @param aCategory	A value from enum BTrace::TCategory,
       
  4433 @param aSubCategory Sub-category value between 0 and 255.
       
  4434 					The meaning of this is dependent on the Category.
       
  4435 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4436 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4437 @param a3			The third 32bit quantity which forms the data of this trace record.
       
  4438 
       
  4439 @return True if trace is enabled for aCategory, false otherwise.
       
  4440 @publishedPartner
       
  4441 @released
       
  4442 */
       
  4443 #define BTraceContextPc12(aCategory,aSubCategory,a1,a2,a3) \
       
  4444 	BTrace::OutX \
       
  4445 		(BTRACE_HEADER_CP(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
       
  4446 
       
  4447 /**
       
  4448 Output a trace record of the specified category which also includes
       
  4449 Context ID and Program Counter values.
       
  4450 
       
  4451 @param aCategory	A value from enum BTrace::TCategory,
       
  4452 @param aSubCategory Sub-category value between 0 and 255.
       
  4453 					The meaning of this is dependent on the Category.
       
  4454 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4455 @param a2			The second 32bit quantity which forms the data of this trace record.
       
  4456 @param aData		Address of addition data to add to trace.
       
  4457 					Must be word aligned, i.e. a multiple of 4.
       
  4458 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4459 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4460 					flag ERecordTruncated is set in the record.
       
  4461 
       
  4462 @return True if trace is enabled for aCategory, false otherwise.
       
  4463 @publishedPartner
       
  4464 @released
       
  4465 */
       
  4466 #define BTraceContextPcN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
       
  4467 	BTrace::OutNX \
       
  4468 		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
       
  4469 
       
  4470 /**
       
  4471 Output a trace record of the specified category which also includes
       
  4472 Context ID and Program Counter values.
       
  4473 
       
  4474 If the specified data is too big to find into a single trace record, then a
       
  4475 multipart trace is generated. See TMultiPart.
       
  4476 
       
  4477 @param aCategory	A value from enum BTrace::TCategory,
       
  4478 @param aSubCategory Sub-category value between 0 and 255.
       
  4479 					The meaning of this is dependent on the Category.
       
  4480 @param a1			The first 32bit quantity which forms the data of this trace record.
       
  4481 @param aData		Address of addition data to add to trace.
       
  4482 					Must be word aligned, i.e. a multiple of 4.
       
  4483 @param aDataSize	Number of bytes of additional data.
       
  4484 
       
  4485 @return True if trace is enabled for aCategory, false otherwise.
       
  4486 @publishedPartner
       
  4487 @released
       
  4488 */
       
  4489 #define BTraceContextPcBig(aCategory,aSubCategory,a1,aData,aDataSize) \
       
  4490 	BTrace::OutBig \
       
  4491 		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
       
  4492 
       
  4493 
       
  4494 
       
  4495 /**
       
  4496 Output a trace record of the specified category.
       
  4497 
       
  4498 The trace record data is 4 bytes in size.
       
  4499 
       
  4500 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4501 
       
  4502 @param aCategory	A value from enum BTrace::TCategory,
       
  4503 @param aSubCategory Sub-category value between 0 and 255.
       
  4504 					The meaning of this is dependent on the Category.
       
  4505 @param aUid			The 32bit quantity which forms the data of this trace record.
       
  4506 
       
  4507 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4508 @publishedPartner
       
  4509 @released
       
  4510 */
       
  4511 #define BTraceFiltered4(aCategory,aSubCategory,aUid) \
       
  4512 	((BTrace::TBTrace2)BTrace::OutFiltered) \
       
  4513 		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
       
  4514 
       
  4515 /**
       
  4516 Output a trace record of the specified category.
       
  4517 
       
  4518 The trace record data is 8 bytes in size.
       
  4519 
       
  4520 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4521 
       
  4522 @param aCategory	A value from enum BTrace::TCategory,
       
  4523 @param aSubCategory Sub-category value between 0 and 255.
       
  4524 					The meaning of this is dependent on the Category.
       
  4525 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4526 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4527 
       
  4528 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4529 @publishedPartner
       
  4530 @released
       
  4531 */
       
  4532 #define BTraceFiltered8(aCategory,aSubCategory,aUid,a1) \
       
  4533 	((BTrace::TBTrace3)BTrace::OutFiltered) \
       
  4534 		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
       
  4535 
       
  4536 /**
       
  4537 Output a trace record of the specified category.
       
  4538 
       
  4539 The trace record data is 12 bytes in size.
       
  4540 
       
  4541 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4542 
       
  4543 @param aCategory	A value from enum BTrace::TCategory,
       
  4544 @param aSubCategory Sub-category value between 0 and 255.
       
  4545 					The meaning of this is dependent on the Category.
       
  4546 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4547 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4548 @param a2			The third 32bit quantity which forms the data of this trace record.
       
  4549 
       
  4550 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4551 @publishedPartner
       
  4552 @released
       
  4553 */
       
  4554 #define BTraceFiltered12(aCategory,aSubCategory,aUid,a1,a2) \
       
  4555 	BTrace::OutFiltered \
       
  4556 		(BTRACE_HEADER(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
       
  4557 
       
  4558 /**
       
  4559 Output a trace record of the specified category.
       
  4560 
       
  4561 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4562 
       
  4563 @param aCategory	A value from enum BTrace::TCategory,
       
  4564 @param aSubCategory Sub-category value between 0 and 255.
       
  4565 					The meaning of this is dependent on the Category.
       
  4566 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4567 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4568 @param aData		Address of addition data to add to trace.
       
  4569 					Must be word aligned, i.e. a multiple of 4.
       
  4570 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4571 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4572 					flag ERecordTruncated is set in the record.
       
  4573 
       
  4574 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4575 @publishedPartner
       
  4576 @released
       
  4577 */
       
  4578 #define BTraceFilteredN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
       
  4579 	BTrace::OutFilteredN \
       
  4580 		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
       
  4581 
       
  4582 /**
       
  4583 Output a trace record of the specified category.
       
  4584 
       
  4585 If the specified data is too big to find into a single trace record, then a
       
  4586 multipart trace is generated. See TMultiPart.
       
  4587 
       
  4588 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4589 
       
  4590 @param aCategory	A value from enum BTrace::TCategory,
       
  4591 @param aSubCategory Sub-category value between 0 and 255.
       
  4592 					The meaning of this is dependent on the Category.
       
  4593 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4594 @param aData		Address of addition data to add to trace.
       
  4595 					Must be word aligned, i.e. a multiple of 4.
       
  4596 @param aDataSize	Number of bytes of additional data.
       
  4597 
       
  4598 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4599 @publishedPartner
       
  4600 @released
       
  4601 */
       
  4602 #define BTraceFilteredBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
       
  4603 	BTrace::OutFilteredBig \
       
  4604 		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
       
  4605 
       
  4606 
       
  4607 
       
  4608 /**
       
  4609 Output a trace record of the specified category which also includes a Context ID.
       
  4610 
       
  4611 The trace record data is 4 bytes in size.
       
  4612 
       
  4613 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4614 
       
  4615 @param aCategory	A value from enum BTrace::TCategory,
       
  4616 @param aSubCategory Sub-category value between 0 and 255.
       
  4617 					The meaning of this is dependent on the Category.
       
  4618 @param aUid			The 32bit quantity which forms the data of this trace record.
       
  4619 
       
  4620 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4621 @publishedPartner
       
  4622 @released
       
  4623 */
       
  4624 #define BTraceFilteredContext4(aCategory,aSubCategory,aUid) \
       
  4625 	((BTrace::TBTrace2)BTrace::OutFilteredX) \
       
  4626 		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
       
  4627 
       
  4628 /**
       
  4629 Output a trace record of the specified category which also includes a Context ID.
       
  4630 
       
  4631 The trace record data is 8 bytes in size.
       
  4632 
       
  4633 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4634 
       
  4635 @param aCategory	A value from enum BTrace::TCategory,
       
  4636 @param aSubCategory Sub-category value between 0 and 255.
       
  4637 					The meaning of this is dependent on the Category.
       
  4638 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4639 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4640 
       
  4641 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4642 @publishedPartner
       
  4643 @released
       
  4644 */
       
  4645 #define BTraceFilteredContext8(aCategory,aSubCategory,aUid,a1) \
       
  4646 	((BTrace::TBTrace3)BTrace::OutFilteredX) \
       
  4647 		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
       
  4648 
       
  4649 /**
       
  4650 Output a trace record of the specified category which also includes a Context ID.
       
  4651 
       
  4652 The trace record data is 12 bytes in size.
       
  4653 
       
  4654 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4655 
       
  4656 @param aCategory	A value from enum BTrace::TCategory,
       
  4657 @param aSubCategory Sub-category value between 0 and 255.
       
  4658 					The meaning of this is dependent on the Category.
       
  4659 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4660 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4661 @param a2			The third 32bit quantity which forms the data of this trace record.
       
  4662 
       
  4663 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4664 @publishedPartner
       
  4665 @released
       
  4666 */
       
  4667 #define BTraceFilteredContext12(aCategory,aSubCategory,aUid,a1,a2) \
       
  4668 	BTrace::OutFilteredX \
       
  4669 		(BTRACE_HEADER_C(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
       
  4670 
       
  4671 /**
       
  4672 Output a trace record of the specified category which also includes a Context ID.
       
  4673 
       
  4674 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4675 
       
  4676 @param aCategory	A value from enum BTrace::TCategory,
       
  4677 @param aSubCategory Sub-category value between 0 and 255.
       
  4678 					The meaning of this is dependent on the Category.
       
  4679 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4680 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4681 @param aData		Address of addition data to add to trace.
       
  4682 					Must be word aligned, i.e. a multiple of 4.
       
  4683 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4684 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4685 					flag ERecordTruncated is set in the record.
       
  4686 
       
  4687 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4688 @publishedPartner
       
  4689 @released
       
  4690 */
       
  4691 #define BTraceFilteredContextN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
       
  4692 	BTrace::OutFilteredNX \
       
  4693 		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
       
  4694 
       
  4695 /**
       
  4696 Output a trace record of the specified category which also includes a Context ID.
       
  4697 
       
  4698 If the specified data is too big to find into a single trace record, then a
       
  4699 multipart trace is generated. See TMultiPart.
       
  4700 
       
  4701 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4702 
       
  4703 @param aCategory	A value from enum BTrace::TCategory,
       
  4704 @param aSubCategory Sub-category value between 0 and 255.
       
  4705 					The meaning of this is dependent on the Category.
       
  4706 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4707 @param aData		Address of addition data to add to trace.
       
  4708 					Must be word aligned, i.e. a multiple of 4.
       
  4709 @param aDataSize	Number of bytes of additional data.
       
  4710 
       
  4711 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4712 @publishedPartner
       
  4713 @released
       
  4714 */
       
  4715 #define BTraceFilteredContextBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
       
  4716 	BTrace::OutFilteredBig \
       
  4717 		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
       
  4718 
       
  4719 
       
  4720 
       
  4721 /**
       
  4722 Output a trace record of the specified category which also includes a Program Counter value.
       
  4723 
       
  4724 The trace record data is 4 bytes in size.
       
  4725 
       
  4726 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4727 
       
  4728 @param aCategory	A value from enum BTrace::TCategory,
       
  4729 @param aSubCategory Sub-category value between 0 and 255.
       
  4730 					The meaning of this is dependent on the Category.
       
  4731 @param aUid			The 32bit quantity which forms the data of this trace record.
       
  4732 
       
  4733 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4734 @publishedPartner
       
  4735 @released
       
  4736 */
       
  4737 #define BTraceFilteredPc4(aCategory,aSubCategory,aUid)	\
       
  4738 	((BTrace::TBTrace2)BTrace::OutFiltered) \
       
  4739 		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
       
  4740 
       
  4741 /**
       
  4742 Output a trace record of the specified category which also includes a Program Counter value.
       
  4743 
       
  4744 The trace record data is 8 bytes in size.
       
  4745 
       
  4746 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4747 
       
  4748 @param aCategory	A value from enum BTrace::TCategory,
       
  4749 @param aSubCategory Sub-category value between 0 and 255.
       
  4750 					The meaning of this is dependent on the Category.
       
  4751 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4752 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4753 
       
  4754 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4755 @publishedPartner
       
  4756 @released
       
  4757 */
       
  4758 #define BTraceFilteredPc8(aCategory,aSubCategory,aUid,a1) \
       
  4759 	((BTrace::TBTrace3)BTrace::OutFiltered) \
       
  4760 		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
       
  4761 
       
  4762 /**
       
  4763 Output a trace record of the specified category which also includes a Program Counter value.
       
  4764 
       
  4765 The trace record data is 12 bytes in size.
       
  4766 
       
  4767 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4768 
       
  4769 @param aCategory	A value from enum BTrace::TCategory,
       
  4770 @param aSubCategory Sub-category value between 0 and 255.
       
  4771 					The meaning of this is dependent on the Category.
       
  4772 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4773 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4774 @param a2			The third 32bit quantity which forms the data of this trace record.
       
  4775 
       
  4776 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4777 @publishedPartner
       
  4778 @released
       
  4779 */
       
  4780 #define BTraceFilteredPc12(aCategory,aSubCategory,aUid,a1,a2) \
       
  4781 	BTrace::OutFiltered \
       
  4782 		(BTRACE_HEADER_P(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
       
  4783 
       
  4784 /**
       
  4785 Output a trace record of the specified category which also includes a Program Counter value.
       
  4786 
       
  4787 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4788 
       
  4789 @param aCategory	A value from enum BTrace::TCategory,
       
  4790 @param aSubCategory Sub-category value between 0 and 255.
       
  4791 					The meaning of this is dependent on the Category.
       
  4792 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4793 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4794 @param aData		Address of addition data to add to trace.
       
  4795 					Must be word aligned, i.e. a multiple of 4.
       
  4796 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4797 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4798 					flag ERecordTruncated is set in the record.
       
  4799 
       
  4800 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4801 @publishedPartner
       
  4802 @released
       
  4803 */
       
  4804 #define BTraceFilteredPcN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
       
  4805 	BTrace::OutFilteredN \
       
  4806 		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
       
  4807 
       
  4808 /**
       
  4809 Output a trace record of the specified category which also includes a Program Counter value.
       
  4810 
       
  4811 If the specified data is too big to find into a single trace record, then a
       
  4812 multipart trace is generated. See TMultiPart.
       
  4813 
       
  4814 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4815 
       
  4816 @param aCategory	A value from enum BTrace::TCategory,
       
  4817 @param aSubCategory Sub-category value between 0 and 255.
       
  4818 					The meaning of this is dependent on the Category.
       
  4819 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4820 @param aData		Address of addition data to add to trace.
       
  4821 					Must be word aligned, i.e. a multiple of 4.
       
  4822 @param aDataSize	Number of bytes of additional data.
       
  4823 
       
  4824 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4825 @publishedPartner
       
  4826 @released
       
  4827 */
       
  4828 #define BTraceFilteredPcBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
       
  4829 	BTrace::OutFilteredBig \
       
  4830 		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
       
  4831 
       
  4832 
       
  4833 
       
  4834 
       
  4835 /**
       
  4836 Output a trace record of the specified category which also includes
       
  4837 Context ID and Program Counter values.
       
  4838 
       
  4839 The trace record data is 4 bytes in size.
       
  4840 
       
  4841 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4842 
       
  4843 @param aCategory	A value from enum BTrace::TCategory,
       
  4844 @param aSubCategory Sub-category value between 0 and 255.
       
  4845 					The meaning of this is dependent on the Category.
       
  4846 @param aUid			The 32bit quantity which forms the data of this trace record.
       
  4847 
       
  4848 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4849 @publishedPartner
       
  4850 @released
       
  4851 */
       
  4852 #define BTraceFilteredContextPc4(aCategory,aSubCategory,aUid)	\
       
  4853 	((BTrace::TBTrace2)BTrace::OutFilteredX) \
       
  4854 		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
       
  4855 
       
  4856 /**
       
  4857 Output a trace record of the specified category which also includes
       
  4858 Context ID and Program Counter values.
       
  4859 
       
  4860 The trace record data is 8 bytes in size.
       
  4861 
       
  4862 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4863 
       
  4864 @param aCategory	A value from enum BTrace::TCategory,
       
  4865 @param aSubCategory Sub-category value between 0 and 255.
       
  4866 					The meaning of this is dependent on the Category.
       
  4867 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4868 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4869 
       
  4870 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4871 @publishedPartner
       
  4872 @released
       
  4873 */
       
  4874 #define BTraceFilteredContextPc8(aCategory,aSubCategory,aUid,a1) \
       
  4875 	((BTrace::TBTrace3)BTrace::OutFilteredX) \
       
  4876 		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
       
  4877 
       
  4878 /**
       
  4879 Output a trace record of the specified category which also includes
       
  4880 Context ID and Program Counter values.
       
  4881 
       
  4882 The trace record data is 12 bytes in size.
       
  4883 
       
  4884 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4885 
       
  4886 @param aCategory	A value from enum BTrace::TCategory,
       
  4887 @param aSubCategory Sub-category value between 0 and 255.
       
  4888 					The meaning of this is dependent on the Category.
       
  4889 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4890 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4891 @param a2			The third 32bit quantity which forms the data of this trace record.
       
  4892 
       
  4893 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4894 @publishedPartner
       
  4895 @released
       
  4896 */
       
  4897 #define BTraceFilteredContextPc12(aCategory,aSubCategory,aUid,a1,a2) \
       
  4898 	BTrace::OutFilteredX \
       
  4899 		(BTRACE_HEADER_CP(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
       
  4900 
       
  4901 /**
       
  4902 Output a trace record of the specified category which also includes
       
  4903 Context ID and Program Counter values.
       
  4904 
       
  4905 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4906 
       
  4907 @param aCategory	A value from enum BTrace::TCategory,
       
  4908 @param aSubCategory Sub-category value between 0 and 255.
       
  4909 					The meaning of this is dependent on the Category.
       
  4910 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4911 @param a1			The second 32bit quantity which forms the data of this trace record.
       
  4912 @param aData		Address of addition data to add to trace.
       
  4913 					Must be word aligned, i.e. a multiple of 4.
       
  4914 @param aDataSize	Number of bytes of additional data. If this value is greater than
       
  4915 					KMaxBTraceDataArray then data is truncated to this size and the
       
  4916 					flag ERecordTruncated is set in the record.
       
  4917 
       
  4918 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4919 @publishedPartner
       
  4920 @released
       
  4921 */
       
  4922 #define BTraceFilteredContextPcN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
       
  4923 	BTrace::OutFilteredNX \
       
  4924 		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
       
  4925 
       
  4926 /**
       
  4927 Output a trace record of the specified category which also includes
       
  4928 Context ID and Program Counter values.
       
  4929 
       
  4930 If the specified data is too big to find into a single trace record, then a
       
  4931 multipart trace is generated. See TMultiPart.
       
  4932 
       
  4933 If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
       
  4934 
       
  4935 @param aCategory	A value from enum BTrace::TCategory,
       
  4936 @param aSubCategory Sub-category value between 0 and 255.
       
  4937 					The meaning of this is dependent on the Category.
       
  4938 @param aUid			The first 32bit quantity which forms the data of this trace record.
       
  4939 @param aData		Address of addition data to add to trace.
       
  4940 					Must be word aligned, i.e. a multiple of 4.
       
  4941 @param aDataSize	Number of bytes of additional data.
       
  4942 
       
  4943 @return True if trace is enabled for aCategory and aUid, false otherwise.
       
  4944 @publishedPartner
       
  4945 @released
       
  4946 */
       
  4947 #define BTraceFilteredContextPcBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
       
  4948 	BTrace::OutFilteredBig \
       
  4949 		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
       
  4950 
       
  4951 
       
  4952 
       
  4953 //
       
  4954 // Inline methods
       
  4955 //
       
  4956 
       
  4957 inline TUint8* BTrace::NextRecord(TAny* aCurrentRecord)
       
  4958 	{
       
  4959 	TUint size = ((TUint8*)aCurrentRecord)[ESizeIndex];
       
  4960 	*(TUint*)&aCurrentRecord += 3;
       
  4961 	*(TUint*)&aCurrentRecord += size;
       
  4962 	*(TUint*)&aCurrentRecord &= ~3;
       
  4963 	return (TUint8*)aCurrentRecord;
       
  4964 	}
       
  4965 
       
  4966 #ifdef __KERNEL_MODE__
       
  4967 
       
  4968 inline TInt BTrace::Filter(TUint aCategory)
       
  4969 	{
       
  4970 	return SetFilter(aCategory,-1);
       
  4971 	}
       
  4972 
       
  4973 #endif
       
  4974 
       
  4975 /**
       
  4976 The maximum permissible value for aDataSize in trace outputs.
       
  4977 @see BTraceN BTracePcN BTraceContextN BTraceContextPcN
       
  4978 @publishedPartner
       
  4979 @released
       
  4980 */
       
  4981 const TUint KMaxBTraceDataArray = 80;
       
  4982 
       
  4983 
       
  4984 
       
  4985 /**
       
  4986 The maximum total number of bytes in a trace record.
       
  4987 @publishedPartner
       
  4988 @released
       
  4989 */
       
  4990 const TInt KMaxBTraceRecordSize = 7*4+8+KMaxBTraceDataArray;
       
  4991 
       
  4992 
       
  4993 #ifdef __MARM__
       
  4994 #define BTRACE_MACHINE_CODED
       
  4995 #endif
       
  4996 
       
  4997 #endif