os/kernelhwsrv/kernel/eka/include/e32btrace.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/kernelhwsrv/kernel/eka/include/e32btrace.h	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,5000 @@
     1.4 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 +// All rights reserved.
     1.6 +// This component and the accompanying materials are made available
     1.7 +// under the terms of the License "Eclipse Public License v1.0"
     1.8 +// which accompanies this distribution, and is available
     1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
    1.10 +//
    1.11 +// Initial Contributors:
    1.12 +// Nokia Corporation - initial contribution.
    1.13 +//
    1.14 +// Contributors:
    1.15 +//
    1.16 +// Description:
    1.17 +// e32\include\e32btrace.h
    1.18 +// 
    1.19 +// WARNING: This file contains some APIs which are internal and are subject
    1.20 +//          to change without notice. Such APIs should therefore not be used
    1.21 +//          outside the Kernel and Hardware Services package.
    1.22 +//
    1.23 +
    1.24 +#ifndef E32BTRACE_H
    1.25 +#define E32BTRACE_H
    1.26 +
    1.27 +#ifdef __KERNEL_MODE__
    1.28 +class TSpinLock;
    1.29 +#endif
    1.30 +
    1.31 +/**
    1.32 +Class for handling fast tracing.
    1.33 +
    1.34 +A trace record consists of three parts: a header, header extensions,
    1.35 +and the trace data itself.
    1.36 +
    1.37 +The header consists of four bytes containing:
    1.38 +
    1.39 +-#	Size of the record in bytes. (Maximum value is KMaxBTraceRecordSize.)
    1.40 +-#	Flags. See enum TFlags.
    1.41 +-#	Category. Category value from enum BTrace::TCategory.
    1.42 +-#	Sub-category. The meaning of this is dependent on the value of Category.
    1.43 +
    1.44 +When trace records are stored in memory they are stored word (32 bit) aligned.
    1.45 +Therefore the size must be rounded up to a multiple of four when calculating
    1.46 +the address of the next record. E.g.
    1.47 +@code
    1.48 +	TUint8* record; // pointer to trace record
    1.49 +	TInt size = record[BTrace::ESizeIndex];
    1.50 +	record += (size+3)&~3; // move record pointer on to next record.
    1.51 +@endcode
    1.52 +The NextRecord() method is provided to do this operation.
    1.53 +
    1.54 +Following the header are optionally a number of 32 bit 'header extension' values.
    1.55 +These are present in the order shown below but only exist if the appropriate flag bit
    1.56 +is set in the Header.
    1.57 +
    1.58 +-#	Header2.		Contains flag values from enum Flags2.
    1.59 +					This value is only present if the EHeader2Present flag is set.
    1.60 +-#	Timestamp.		A timestamp value indicating when the trace was generated.
    1.61 +					The format and resolution of this value are platform-dependent, but
    1.62 +					typically will contain the same values as would be returned by
    1.63 +					User::FastCounter() or NKern::FastCounter().
    1.64 +					This value is only present if the ETimestampPresent flag is set.
    1.65 +-#	Timestamp2.		Additional timestamp information. E.g. the most significant
    1.66 +					half of a 64bit timestamp value. Note, it is valid for a Timestamp2 value
    1.67 +					to be present even if the previous Timestamp is absent.
    1.68 +					This value is only present if the ETimestamp2Present flag is set.
    1.69 +-#	Context ID.		This value indicates the context in which the trace was generated.
    1.70 +					The meaning of the id is dependent on the contents of the two
    1.71 +					least significant bits:
    1.72 +					-	00	indicates the value is the address of the NThread object for
    1.73 +							the currently executing thread.
    1.74 +					-	01	indicates Fast Interrupt (FIQ) context.
    1.75 +							Other bits of the value are currently reserved for future use.
    1.76 +					-	10	indicates Interrupt (IRQ) context. Other bits of the value
    1.77 +							are currently reserved for future use.
    1.78 +					-	11	indicates Immediate Delayed Function Call (IDFC) context.
    1.79 +							Other bits of the value are currently reserved for future use.
    1.80 +					.
    1.81 +					This value is only present if the EContextIdPresent flag is set.
    1.82 +-#	Program Counter. This is the memory address of the instruction after the location
    1.83 +					the trace was output.
    1.84 +					This value is only present if the EPcPresent flag is set.
    1.85 +-#	Extra.			An extra value used for different purposes depending on the trace type.
    1.86 +					This value is only present if the EExtraPresent flag is set.
    1.87 +
    1.88 +Following the header extensions are 0 or more bytes of trace data specified when the trace
    1.89 +was output.
    1.90 +
    1.91 +To output a trace, the following macros can be used:
    1.92 +- BTrace0
    1.93 +- BTrace4
    1.94 +- BTrace8
    1.95 +- BTrace12
    1.96 +- BTraceN
    1.97 +- BTraceBig
    1.98 +- BTracePc0
    1.99 +- BTracePc4
   1.100 +- BTracePc8
   1.101 +- BTracePc12
   1.102 +- BTracePcN
   1.103 +- BTracePcBig
   1.104 +- BTraceContext0
   1.105 +- BTraceContext4
   1.106 +- BTraceContext8
   1.107 +- BTraceContext12
   1.108 +- BTraceContextN
   1.109 +- BTraceContextBig
   1.110 +- BTraceContextPc0
   1.111 +- BTraceContextPc4
   1.112 +- BTraceContextPc8
   1.113 +- BTraceContextPc12
   1.114 +- BTraceContextPcN
   1.115 +- BTraceContextPcBig
   1.116 +
   1.117 +Whenever a trace is output, the trace handler is called with the arguments specified.
   1.118 +See typedef THandler and SetHandler().
   1.119 +
   1.120 +Each tracing category has a filter bit, which if set to zero means that traces in that category
   1.121 +are discarded, see SetFilter(). This filtering is performed before the trace handler is
   1.122 +called. This filter may also be initialised from boot time by using the 'btrace' keyword in
   1.123 +an OBY file used to build a ROM image.
   1.124 +
   1.125 +Traces may also be additionally sent through a second level of filtering. This examines the
   1.126 +first 32 bits of data in the trace and if this value isn't present in the list maintained
   1.127 +in the secondary filter, the trace is discarded. The contents of the secondary filter are
   1.128 +set using the SetFilter2 methods.
   1.129 +
   1.130 +Values used for secondary filtering must be Symbian Unique Identifiers (UIDs) allocated
   1.131 +using the normal UID allocation process. Note, the following non-valid UID value ranges
   1.132 +are reserved.
   1.133 +- 0x00000000..0x007fffff	Reserved for platform specific use.
   1.134 +- 0x00800000..0x00ffffff	Reserved for use by Symbian.
   1.135 +
   1.136 +To generate traces which are to be processed by the secondary filter, the following
   1.137 +macros can be used:
   1.138 +
   1.139 +- BTraceFiltered4
   1.140 +- BTraceFiltered8
   1.141 +- BTraceFiltered12
   1.142 +- BTraceFilteredN
   1.143 +- BTraceFilteredBig
   1.144 +- BTraceFilteredPc4
   1.145 +- BTraceFilteredPc8
   1.146 +- BTraceFilteredPc12
   1.147 +- BTraceFilteredPcN
   1.148 +- BTraceFilteredPcBig
   1.149 +- BTraceFilteredContext4
   1.150 +- BTraceFilteredContext8
   1.151 +- BTraceFilteredContext12
   1.152 +- BTraceFilteredContextN
   1.153 +- BTraceFilteredContextBig
   1.154 +- BTraceFilteredContextPc4
   1.155 +- BTraceFilteredContextPc8
   1.156 +- BTraceFilteredContextPc12
   1.157 +- BTraceFilteredContextPcN
   1.158 +- BTraceFilteredContextPcBig
   1.159 +
   1.160 +Traces generated using the above methods will be filtered twice; once using the primary
   1.161 +filter which checks the trace's category, and once using the secondary filter which checks
   1.162 +the 32 bit UID value at the start of the trace data. Therefore the trace must pass both filter
   1.163 +checks for it to be sent to the trace handler for output.
   1.164 +
   1.165 +@publishedPartner
   1.166 +@released
   1.167 +*/
   1.168 +class BTrace
   1.169 +	{
   1.170 +public:
   1.171 +	/**
   1.172 +	Byte indices into the trace header for specific fields.
   1.173 +	*/
   1.174 +	enum THeaderStructure
   1.175 +		{
   1.176 +		/**
   1.177 +		Size of record in bytes.
   1.178 +		*/
   1.179 +		ESizeIndex = 0,
   1.180 +
   1.181 +		/**
   1.182 +		Bitfield of flags from enum TFlags. E.g. to detect if a timestamp is present in
   1.183 +		the record, code like this could be used.
   1.184 +		@code
   1.185 +			TUint8* record; // pointer to trace record
   1.186 +			if(record[BTrace::EFlagsIndex]&BTrace::ETimestampPresent)
   1.187 +				TimestampPresent();
   1.188 +			else
   1.189 +				TimestampNotPresent();
   1.190 +		@endcode
   1.191 +		*/
   1.192 +		EFlagsIndex = 1,
   1.193 +
   1.194 +		/**
   1.195 +		Category value from enum BTrace::TCategory.
   1.196 +		*/
   1.197 +		ECategoryIndex = 2,
   1.198 +
   1.199 +		/**
   1.200 +		Sub-category value. The meaning of this is dependent on the Category.
   1.201 +		*/
   1.202 +		ESubCategoryIndex = 3,
   1.203 +		};
   1.204 +
   1.205 +	/**
   1.206 +	Bit flags which indicate state of a trace record.
   1.207 +	*/
   1.208 +	enum TFlags
   1.209 +		{
   1.210 +		/**
   1.211 +		Header2 is present in the trace record.
   1.212 +		*/
   1.213 +		EHeader2Present		= 1<<0,
   1.214 +
   1.215 +		/**
   1.216 +		A timestamp value is present in the trace record.
   1.217 +		*/
   1.218 +		ETimestampPresent	= 1<<1,
   1.219 +
   1.220 +		/**
   1.221 +		A second timestamp value is present in the trace record.
   1.222 +		*/
   1.223 +		ETimestamp2Present	= 1<<2,
   1.224 +
   1.225 +		/**
   1.226 +		A context ID is present in the trace record.
   1.227 +		*/
   1.228 +		EContextIdPresent	= 1<<3,
   1.229 +
   1.230 +		/**
   1.231 +		A CPU program counter (PC) value is present in the trace record.
   1.232 +		*/
   1.233 +		EPcPresent			= 1<<4,
   1.234 +
   1.235 +		/**
   1.236 +		An 'extra' value is present in the trace record.
   1.237 +		*/
   1.238 +		EExtraPresent		= 1<<5,
   1.239 +
   1.240 +		/**
   1.241 +		Indicates that the data in this trace record was truncated to keep the size
   1.242 +		within the maximum permissible.
   1.243 +		*/
   1.244 +		ERecordTruncated	= 1<<6,
   1.245 +
   1.246 +		/**
   1.247 +		Indicates that trace record(s) before this one are missing.
   1.248 +		This can happen if the trace buffer was full when a trace output was attempted.
   1.249 +		*/
   1.250 +		EMissingRecord		= 1<<7
   1.251 +		};
   1.252 +
   1.253 +	/**
   1.254 +	Bit flags present in the Flags2 value of the header extension.
   1.255 +	*/
   1.256 +	enum TFlags2
   1.257 +		{
   1.258 +		/**
   1.259 +		Masks out the bits for the multipart trace type. (See enum TMultiPart.)
   1.260 +		*/
   1.261 +		EMultipartFlagMask		= 3<<0,
   1.262 +
   1.263 +		/**
   1.264 +		Masks out the bits for the CPU ID for SMP systems (zero if present on non SMP systems)
   1.265 +		*/
   1.266 +		ECpuIdMask			= 0xfff<<20,
   1.267 +		};
   1.268 +
   1.269 +	/**
   1.270 +	Values for multipart trace indicator. These values are stored in Flags2 an
   1.271 +	are obtained by ANDing with the value EMultipartFlagMask.
   1.272 +
   1.273 +	If a 'Big' trace is generated which doesn't fit into a single trace record
   1.274 +	then its data is split into several separate trace records; a multipart trace.
   1.275 +
   1.276 +	In multipart traces the 'extra' trace value is present in the header extension.
   1.277 +	(EExtraPresent is set.) This extra value contains a unique trace identifier
   1.278 +	which is the same is all parts of the trace.
   1.279 +
   1.280 +	The structure of the data part of each trace record in a multipart trace is described
   1.281 +	below. In this description, the following labels are used.
   1.282 +	-	A is the initial 4 bytes of data; the a1 argument of BTraceBig.
   1.283 +	-	D is the array of bytes of additional data; the aData argument of BTraceBig.
   1.284 +	-	N is the size of D; the aDataSize argument of BTraceBig
   1.285 +	-	X is the maximum number of additional bytes which will fit into a trace record.
   1.286 +		This is usually KMaxBTraceDataArray but this should not be assumed, instead
   1.287 +		the size and other information present in each trace record should be examined.
   1.288 +
   1.289 +	For the first part of a multipart trace, the data in a trace record has the following
   1.290 +	structure:
   1.291 +
   1.292 +	-	4 bytes containing N.
   1.293 +	-	4 bytes containing A.
   1.294 +	-	X bytes containing D[0..X-1]
   1.295 +
   1.296 +	If the parts are numbered 0 through to 'j', then a middle part of a multipart trace
   1.297 +	is numbered 'i' where 0<i<j. The data in these parts has the structure:
   1.298 +
   1.299 +	-	4 bytes containing N.
   1.300 +	-	4 bytes containing X*i. I.e. the offset within D for the data in this trace record.
   1.301 +	-	X bytes containing D[X*i..X*i+X-1]
   1.302 +
   1.303 +	For the last part of a multipart trace, the data has the structure:
   1.304 +
   1.305 +	-	4 bytes containing N.
   1.306 +	-	4 bytes containing X*j. I.e. the offset within D for the data in this trace record.
   1.307 +	-	N modulo X bytes containing D[X*j..N-1]. I.e. the final bytes of the trace data.
   1.308 +	*/
   1.309 +	enum TMultiPart
   1.310 +		{
   1.311 +		/**
   1.312 +		Indicates that this trace is the first part of a multipart trace.
   1.313 +		*/
   1.314 +		EMultipartFirst			= 1,
   1.315 +
   1.316 +		/**
   1.317 +		Indicates that this trace is a middle part of a multipart trace.
   1.318 +		I.e. it is not the first or last part.
   1.319 +		*/
   1.320 +		EMultipartMiddle		= 2,
   1.321 +
   1.322 +		/**
   1.323 +		Indicates that this trace is the last part of a multipart trace.
   1.324 +		*/
   1.325 +		EMultipartLast			= 3,
   1.326 +		};
   1.327 +
   1.328 +	/**
   1.329 +	Enumeration of trace categories.
   1.330 +	*/
   1.331 +	enum TCategory
   1.332 +		{
   1.333 +		/**
   1.334 +		Trace generated by all calls to RDebug::Printf.
   1.335 +
   1.336 +		The first 4 bytes of trace data contain the thread ID, RThread::Id(), for the
   1.337 +		thread which caused this trace to be emitted. If the trace wasn't generated in
   1.338 +		thread context, this id has the value KNullThreadId.
   1.339 +
   1.340 +		Subsequent bytes of data contain the ASCII text for the formatted string
   1.341 +		generated by Kern::Printf.
   1.342 +
   1.343 +		These traces also contain a context ID, i.e. the EContextIdPresent flag is
   1.344 +		set and a context ID value is present in the extended header.
   1.345 +
   1.346 +		If the trace text doesn't fit completely into one trace record, then
   1.347 +		a multipart trace is generated. See enum TMultiPart.
   1.348 +		*/
   1.349 +		ERDebugPrintf = 0,
   1.350 +
   1.351 +		/**
   1.352 +		Trace generated by all calls to Kern::Printf.
   1.353 +		Trace records in this category have the same structure as ERDebugPrintf.
   1.354 +		*/
   1.355 +		EKernPrintf = 1,
   1.356 +
   1.357 +		/**
   1.358 +		Trace generated by platform security diagnostic messages.
   1.359 +		Trace records in this category have the same structure as ERDebugPrintf.
   1.360 +		*/
   1.361 +		EPlatsecPrintf = 2,
   1.362 +
   1.363 +		/**
   1.364 +		Trace generated for the purpose of associating thread context ids with
   1.365 +		the textual names of threads. These traces are usually generated when a
   1.366 +		thread is created, renamed or destroyed.
   1.367 +
   1.368 +		If #Prime is called with this category, traces will be generated for all
   1.369 +		threads currently extant.
   1.370 +
   1.371 +		@see enum TThreadIdentification
   1.372 +		*/
   1.373 +		EThreadIdentification = 3,
   1.374 +
   1.375 +		/**
   1.376 +		Trace generated when the CPU usage changes state, e.g. at thread context switch
   1.377 +		or during interrupt and DFC processing.
   1.378 +
   1.379 +		The purpose of this trace category is to profile CPU usage.
   1.380 +
   1.381 +		@see enum TCpuUsage
   1.382 +		*/
   1.383 +		ECpuUsage = 4,
   1.384 +
   1.385 +        /**
   1.386 +        Category used for profiling device drivers, kernel extensions etc.
   1.387 +        Used by PERF_LOG macro.
   1.388 +        @prototype 9.3
   1.389 +        */
   1.390 +        EKernPerfLog = 5,
   1.391 +
   1.392 +        /**
   1.393 +		Trace generated when client-server activity takes place such as server creation,
   1.394 +		session management, message handling, etc.
   1.395 +
   1.396 +		If #Prime is called with this category, traces will be generated for all
   1.397 +		servers currently running and their sessions.
   1.398 +        */
   1.399 +        EClientServer = 6,
   1.400 +
   1.401 +        /**
   1.402 +		Trace generated on thread request completion.
   1.403 +        */
   1.404 +        ERequests = 7,
   1.405 +
   1.406 +        /**
   1.407 +		Trace generated when chunks are created and destroyed, and when memory
   1.408 +		is committed and decommitted to and from chunks.
   1.409 +
   1.410 +		If #Prime is called with this category, traces will be generated for all
   1.411 +		chunks currently extant.
   1.412 +
   1.413 +		@see TChunks
   1.414 +        */
   1.415 +        EChunks = 8,
   1.416 +
   1.417 +        /**
   1.418 +		Trace generated when code segments are created and destroyed, mapped
   1.419 +		into out of processes, and when memory is committed and decommitted to
   1.420 +		and from them.
   1.421 +
   1.422 +		If #Prime is called with this category, traces will be generated for all
   1.423 +		code segments currently extant.
   1.424 +
   1.425 +		@see TCodeSegs
   1.426 +        */
   1.427 +        ECodeSegs = 9,
   1.428 +
   1.429 +		/**
   1.430 +		Trace generated by Demand Paging.
   1.431 +		@prototype 9.3
   1.432 +		*/
   1.433 +		EPaging = 10,
   1.434 +
   1.435 +		/**
   1.436 +		Trace generated when thread and process priorities are modified, whether
   1.437 +		directly or through priority inheritance, aging or other mechanisms used
   1.438 +		by the kernel.
   1.439 +
   1.440 +		The purpose of this category is to enable system-wide study of thread
   1.441 +		priority usage.
   1.442 +
   1.443 +		If #Prime is called with this category, traces will be generated for all
   1.444 +		threads currently extant.
   1.445 +
   1.446 +		@see enum TThreadPriority
   1.447 +		@internalTechnology
   1.448 +        @prototype 9.3
   1.449 +		*/
   1.450 +		EThreadPriority = 11,
   1.451 +
   1.452 +		/**
   1.453 +		Trace generated by processing Paging requests in the Media subsystem and Media drivers.
   1.454 +		@prototype 9.3
   1.455 +		*/
   1.456 +		EPagingMedia = 12,
   1.457 +
   1.458 +		/**
   1.459 +		Trace generated by the kernel for memory regions which don't belong to any chunk.
   1.460 +		@see enum TKernelMemory
   1.461 +		@prototype 9.4
   1.462 +		*/
   1.463 +		EKernelMemory = 13,
   1.464 +
   1.465 +		/**
   1.466 +		Trace generated by user-mode heap usage.
   1.467 +
   1.468 +		Unlike other trace categories, capturing heap trace involves an additional step
   1.469 +		depending on how much trace is required. To enable heap trace for a single process
   1.470 +		from the moment it starts, add the following line to the .exe's project (.mmp) file:
   1.471 +
   1.472 +			firstlib eexe_instrumented_heap.lib
   1.473 +
   1.474 +		This overrides the build tools default implicit link (for .exe projects) against eexe.lib.
   1.475 +
   1.476 +		Alternatively, to enable heap trace for all processes at once you can enable the
   1.477 +		KUSERHEAPTRACE bit (#96) of the kernel trace flags. You can set this flag either at
   1.478 +		ROM-building time (look for the 'kerneltrace' line generally in \epoc32\rom\<platform>\header.iby)
   1.479 +		or at runtime by running the following at the Eshell command prompt:
   1.480 +
   1.481 +			trace 0 0 1
   1.482 +
   1.483 +		Note that changing this flag at runtime only affects processes created after the flag
   1.484 +		is set or unset. It will not affect running processes.
   1.485 +
   1.486 +		@see enum THeap
   1.487 +		@prototype 9.4
   1.488 +		*/
   1.489 +		EHeap = 14,
   1.490 +
   1.491 +		/**
   1.492 +		Meta trace. Trace that is only useful to programs which use or display BTrace-based data.
   1.493 +		@see enum TMetaTrace
   1.494 +		@prototype 9.4
   1.495 +		*/
   1.496 +		EMetaTrace = 15,
   1.497 +
   1.498 +		/**
   1.499 +		Trace generated by the ram allocator to allow the physical layout of RAM
   1.500 +		to be tracked.
   1.501 +		@internalTechnology
   1.502 +		*/
   1.503 +		ERamAllocator = 16,
   1.504 +
   1.505 +		/**
   1.506 +		Trace generated by the Fast Mutex in the Nkern.
   1.507 +		*/
   1.508 +		EFastMutex = 17,
   1.509 +
   1.510 +
   1.511 +		/**
   1.512 +		Trace generated by any sampling profiler.
   1.513 +		@see enum TProfiling
   1.514 +		*/
   1.515 +		EProfiling = 18,
   1.516 +
   1.517 +		/**
   1.518 +        Trace generated by Power Resource Manager.
   1.519 +        @prototype 9.5
   1.520 +        */
   1.521 +        EResourceManager = 19,
   1.522 +
   1.523 +
   1.524 +        /**
   1.525 +        Trace generated by Power Resource Manager User-Side API.
   1.526 +        @prototype 9.5
   1.527 +        */
   1.528 +        EResourceManagerUs = 20,
   1.529 +
   1.530 +		/**
   1.531 +		Trace generated by Raw Event subsystem APIs
   1.532 +		@see enum TRawEventTrace
   1.533 +		@prototype 9.5
   1.534 +		*/
   1.535 +		ERawEvent  =21,
   1.536 +
   1.537 +		/**
   1.538 +		Trace generated by USB communications (Client, Host and OTG) where use
   1.539 +		of standard logging (conditional Kern::Printf() calls) is sufficiently
   1.540 +		time-consuming that the required device timings mandated by the core
   1.541 +		USB standards cannot be achieved
   1.542 +        @prototype 9.5
   1.543 +		*/
   1.544 +		EUsb = 22,
   1.545 +
   1.546 +		/**
   1.547 +		Trace generated by Symbian OS kernel synchronization objects.
   1.548 +        @prototype 9.5
   1.549 +		*/
   1.550 +		ESymbianKernelSync = 23,
   1.551 +
   1.552 +		/**
   1.553 +		Trace generated by the flexible memory model.
   1.554 +		*/
   1.555 +		EFlexibleMemModel = 24,
   1.556 +
   1.557 +		/**
   1.558 +        Trace generated by IIC bus.
   1.559 +        @prototype 9.6
   1.560 +        */
   1.561 +        EIic = 25,
   1.562 +
   1.563 +		/**
   1.564 +		First category value in the range reserved for platform specific use;
   1.565 +		the end of this range is #EPlatformSpecificLast.
   1.566 +		Symbian's code will not generate any traces with categories in this range.
   1.567 +
   1.568 +		It is strongly recommended that platforms reserve the first half of this range
   1.569 +		(128..143) for definition and use by base-port (kernel-side) code. Any general
   1.570 +		trace framework built on top of BTrace APIs should use the second half of the range.
   1.571 +		This allows fast (primary filtered only) BTrace categories to be used in device drivers
   1.572 +		and other base-port code, without clashing with more general trace frameworks implemented
   1.573 +		for application layer code.
   1.574 +		*/
   1.575 +		EPlatformSpecificFirst = 128,
   1.576 +
   1.577 +		/**
   1.578 +		Last category value in the range reserved for platform specific use.
   1.579 +		@see EPlatformSpecificFirst
   1.580 +		*/
   1.581 +		EPlatformSpecificLast = 191,
   1.582 +
   1.583 +		/**
   1.584 +		First category value in the range reserved for Symbian tools and future trace framework
   1.585 +		implementations; the end of this range is #ESymbianExtentionsLast.
   1.586 +		*/
   1.587 +		ESymbianExtentionsFirst = 192,
   1.588 +
   1.589 +		/**
   1.590 +		Last category value in the range reserved for Symbian tools and future trace framework
   1.591 +		implementations.
   1.592 +		@see ESymbianExtentionsFirst
   1.593 +		*/
   1.594 +		ESymbianExtentionsLast = 253,
   1.595 +
   1.596 +		/**
   1.597 +		Used for testing purposes.
   1.598 +
   1.599 +		This may be used for ad-hoc testing purposes, e.g. special builds of components
   1.600 +		with tracing enabled for diagnostic purposes.
   1.601 +
   1.602 +		This category is also used by the E32 BTrace unit tests.
   1.603 +		@test
   1.604 +		*/
   1.605 +		ETest1 = 254,
   1.606 +
   1.607 +		/**
   1.608 +		Used for testing purposes.
   1.609 +
   1.610 +		This may be used for ad-hoc testing purposes, e.g. special builds of components
   1.611 +		with tracing enabled for diagnostic purposes.
   1.612 +
   1.613 +		This category is also used by the E32 BTrace unit tests.
   1.614 +		@test
   1.615 +		*/
   1.616 +		ETest2 = 255
   1.617 +		};
   1.618 +
   1.619 +	/**
   1.620 +	Enumeration of sub-category values for trace category EThreadIdentification.
   1.621 +	@see EThreadIdentification
   1.622 +	*/
   1.623 +	enum TThreadIdentification
   1.624 +		{
   1.625 +		/**
   1.626 +		A nano-kernel thread (NThread) has been created.
   1.627 +
   1.628 +		Trace data format:
   1.629 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.630 +		*/
   1.631 +		ENanoThreadCreate,
   1.632 +
   1.633 +		/**
   1.634 +		A nano-kernel thread (NThread) has been destroyed.
   1.635 +
   1.636 +		Trace data format:
   1.637 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.638 +		*/
   1.639 +		ENanoThreadDestroy,
   1.640 +
   1.641 +		/**
   1.642 +		A thread (DThread) has been created.
   1.643 +
   1.644 +		Trace data format:
   1.645 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.646 +		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
   1.647 +		- Remaining data is the ASCII name of the thread.
   1.648 +		*/
   1.649 +		EThreadCreate,
   1.650 +
   1.651 +		/**
   1.652 +		A thread (DThread) has been destroyed.
   1.653 +
   1.654 +		Trace data format:
   1.655 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.656 +		- 4 bytes containing trace id for the process to which this thread belongs.
   1.657 +		- 4 bytes containing thread ID, as returned by RThread::Id().
   1.658 +		*/
   1.659 +		EThreadDestroy,
   1.660 +
   1.661 +		/**
   1.662 +		A thread (DThread) has been renamed.
   1.663 +		This trace may also be output by the tracing system at initialisation
   1.664 +		in order to identify threads already in existence.
   1.665 +
   1.666 +		Trace data format:
   1.667 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.668 +		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
   1.669 +		- Remaining data is the ASCII name of the thread.
   1.670 +		*/
   1.671 +		EThreadName,
   1.672 +
   1.673 +		/**
   1.674 +		A process has been renamed.
   1.675 +		This trace may also be output together with EThreadCreate or EThreadName traces
   1.676 +		to help identify the name of the process to which the thread belongs.
   1.677 +
   1.678 +		Trace data format:
   1.679 +		- 4 bytes containing zero, or if this trace is generated together with EThreadName
   1.680 +		  or EThreadCreate, this contains the context id (an NThread*) for the thread.
   1.681 +		- 4 bytes containing trace id (a DProcess*) for process.
   1.682 +		- Remaining data is the ASCII name of the process.
   1.683 +		*/
   1.684 +		EProcessName,
   1.685 +
   1.686 +		/**
   1.687 +		Informational trace giving a threads ID, as returned by RThread::Id().
   1.688 +		Trace data format:
   1.689 +		- 4 bytes containing the context id (an NThread*) for this thread.
   1.690 +		- 4 bytes containing trace id (a DProcess*) for the process to which this thread belongs.
   1.691 +		- 4 bytes containing thread ID, as returned by RThread::Id().
   1.692 +		*/
   1.693 +		EThreadId,
   1.694 +
   1.695 +		/**
   1.696 +		A process has been created.
   1.697 +
   1.698 +		Trace data format:
   1.699 +		- 4 bytes containing trace id (a DProcess*) for the process.
   1.700 +		*/
   1.701 +		EProcessCreate,
   1.702 +
   1.703 +		/**
   1.704 +		A process has been destroyed.
   1.705 +
   1.706 +		Trace data format:
   1.707 +		- 4 bytes containing trace id (a DProcess*) for the process.
   1.708 +		*/
   1.709 +		EProcessDestroy
   1.710 +
   1.711 +		};
   1.712 +
   1.713 +	/**
   1.714 +	Enumeration of sub-category values for trace category ECpuUsage.
   1.715 +	@see ECpuUsage
   1.716 +	*/
   1.717 +	enum TCpuUsage
   1.718 +		{
   1.719 +		/**
   1.720 +		Trace output at start of Interrupt (IRQ) dispatch.
   1.721 +
   1.722 +		On platforms which support nested interrupts, traces for these will also
   1.723 +		be nested.
   1.724 +		*/
   1.725 +		EIrqStart,
   1.726 +
   1.727 +		/**
   1.728 +		Trace output at end of Interrupt (IRQ) dispatch.
   1.729 +
   1.730 +		Note, this trace isn't generated if an Interrupt Service Routine queues
   1.731 +		a DFC or causes a thread to be scheduled. In these cases, the traces for
   1.732 +		these events (EIDFCStart or ENewThreadContext) should be taken to indicate
   1.733 +		that interrupt servicing has ended.
   1.734 +		*/
   1.735 +		EIrqEnd,
   1.736 +
   1.737 +		/**
   1.738 +		Trace output at start of Fast Interrupt (FIQ) dispatch.
   1.739 +
   1.740 +		On platforms which support nested interrupts, traces for these will also
   1.741 +		be nested.
   1.742 +		*/
   1.743 +		EFiqStart,
   1.744 +
   1.745 +		/**
   1.746 +		Trace output at end of Fast Interrupt (FIQ) dispatch.
   1.747 +
   1.748 +		Note, this trace isn't generated if an Interrupt Service Routine queues
   1.749 +		a DFC or causes a thread to be scheduled. In these cases, the traces for
   1.750 +		these events (EIDFCStart or ENewThreadContext) should be taken to indicate
   1.751 +		that interrupt servicing has ended.
   1.752 +		*/
   1.753 +		EFiqEnd,
   1.754 +
   1.755 +		/**
   1.756 +		Trace output at start of Immediate Delayed Function Call (IDFC) processing.
   1.757 +		This processing also includes moving DFCs to their final queue, so the trace
   1.758 +		does not necessarily indicate that any IDFCs have been executed.
   1.759 +		*/
   1.760 +		EIDFCStart,
   1.761 +
   1.762 +		/**
   1.763 +		Trace output at end of Immediate Delayed Function Call (IDFC) processing.
   1.764 +		*/
   1.765 +		EIDFCEnd,
   1.766 +
   1.767 +		/**
   1.768 +		Trace output when a thread is scheduled to run.
   1.769 +		The context id (NThread*) in this trace is that of the thread being scheduled.
   1.770 +		*/
   1.771 +		ENewThreadContext
   1.772 +		};
   1.773 +
   1.774 +    /**
   1.775 +	@internalTechnology
   1.776 +    @prototype 9.3
   1.777 +    */
   1.778 +	enum TClientServer
   1.779 +		{
   1.780 +		/**
   1.781 +		Trace generated whenever a server is created and during prime.
   1.782 +
   1.783 +		Trace data format:
   1.784 +		- 4 bytes containing the server id (a DServer*).
   1.785 +		- 4 bytes containing the owning thread pointer (a DThread*).
   1.786 +		- Remaining data is the ASCII name of the server.
   1.787 +
   1.788 +		*/
   1.789 +		EServerCreate,
   1.790 +
   1.791 +		/**
   1.792 +		Trace generated whenever a server is destroyed.
   1.793 +
   1.794 +		Trace data format:
   1.795 +		- 4 bytes containing the server id (a DServer*).
   1.796 +
   1.797 +		*/
   1.798 +		EServerDestroy,
   1.799 +
   1.800 +		/**
   1.801 +		Trace generated whenever a new session is attached to a server and during prime.
   1.802 +		I.e. a new session has been created.
   1.803 +
   1.804 +		Trace data format:
   1.805 +		- 4 bytes containing the session id (a DSession*).
   1.806 +		- 4 bytes containing the server id (a DServer*).
   1.807 +		- 4 bytes containing the owner id (a DObject*).
   1.808 +
   1.809 +		The context id (NThread*) in this trace is that of the thread creating the session
   1.810 +		(apart from during prime when it is NULL).
   1.811 +		*/
   1.812 +		ESessionAttach,
   1.813 +
   1.814 +		/**
   1.815 +		Trace generated whenever a server session is detached from a server.
   1.816 +		I.e. a session has been closed.
   1.817 +
   1.818 +		Trace data format:
   1.819 +		- 4 bytes containing the session id (a DSession*).
   1.820 +		- 4 bytes containing the reasons (error code) for the session being closed.
   1.821 +
   1.822 +		*/
   1.823 +		ESessionDetach,
   1.824 +
   1.825 +		/**
   1.826 +		Trace generated whenever a new message is sent to a server.
   1.827 +
   1.828 +		Trace data format:
   1.829 +		- 4 bytes containing the message handle.
   1.830 +		- 4 bytes containing the iFunction value for the message.
   1.831 +		- 4 bytes containing the session id (a DSession*).
   1.832 +
   1.833 +		The context id (NThread*) in this trace is that of the thread which sent the message.
   1.834 +		*/
   1.835 +		EMessageSend,
   1.836 +
   1.837 +		/**
   1.838 +		Trace generated when a server receives a new message.
   1.839 +
   1.840 +		Trace data format:
   1.841 +		- 4 bytes containing the message handle.
   1.842 +		*/
   1.843 +		EMessageReceive,
   1.844 +
   1.845 +		/**
   1.846 +		Trace generated whenever a message is completed using RMessagePtr2::Complete.
   1.847 +
   1.848 +		Trace data format:
   1.849 +		- 4 bytes containing the message handle.
   1.850 +		- 4 bytes containing the completion reason, or object handle, value.
   1.851 +		    (The object handle value is that which is delivered to the sender of the
   1.852 +			message, not that supplied by the server actually completing the request.)
   1.853 +
   1.854 +		The context id (NThread*) in this trace is that of the thread which completed the message.
   1.855 +		*/
   1.856 +		EMessageComplete
   1.857 +		};
   1.858 +
   1.859 +
   1.860 +    /**
   1.861 +	@internalTechnology
   1.862 +    @prototype 9.3
   1.863 +    */
   1.864 +	enum TRequests
   1.865 +		{
   1.866 +		/**
   1.867 +		Trace generated whenever a request status is completed.
   1.868 +
   1.869 +		Trace data format:
   1.870 +		- 4 bytes containing the thread id (NThread*) of the thread being signalled.
   1.871 +		- 4 bytes containing the address of the TRequestStatus object.
   1.872 +		- 4 bytes containing the completion reason.
   1.873 +
   1.874 +		The context id (NThread*) in this trace is that of the thread which completed the request.
   1.875 +		*/
   1.876 +		ERequestComplete
   1.877 +		};
   1.878 +
   1.879 +
   1.880 +	/**
   1.881 +	Enumeration of sub-category values for trace category EChunks.
   1.882 +	@see EChunks
   1.883 +	*/
   1.884 +	enum TChunks
   1.885 +		{
   1.886 +		/**
   1.887 +		Trace output when a chunk is created.
   1.888 +
   1.889 +		Trace data format:
   1.890 +		- 4 bytes containing the chunk id (a DChunk*).
   1.891 +		- 4 bytes containing the maximum size of the chunk.
   1.892 +		- The ASCII name of the chunk.
   1.893 +		*/
   1.894 +		EChunkCreated,
   1.895 +
   1.896 +		/**
   1.897 +		@internalTechnology
   1.898 +
   1.899 +		Trace output when a chunk is created containing extra chunk information.
   1.900 +
   1.901 +		Note that the meaning of the data in this trace is different between
   1.902 +		memory models, and may change without warning.
   1.903 +
   1.904 +		Trace data format:
   1.905 +		- 4 bytes containing the chunk id (a DChunk*).
   1.906 +		- 4 bytes containing the chunk type.
   1.907 +		- 4 bytes containing the chunk's attributes.
   1.908 +		*/
   1.909 +		EChunkInfo,
   1.910 +
   1.911 +		/**
   1.912 +		Trace output when a chunk is destroyed.
   1.913 +
   1.914 +		Trace data format:
   1.915 +		- 4 bytes containing the chunk id (a DChunk*)
   1.916 +		*/
   1.917 +		EChunkDestroyed,
   1.918 +
   1.919 +		/**
   1.920 +		Trace output when memory is allocated and committed to a chunk.
   1.921 +
   1.922 +		Trace data format:
   1.923 +		- 4 bytes containing the chunk id (a DChunk*).
   1.924 +		- 4 bytes containing the offset into the chunk.
   1.925 +		- 4 bytes containing the size of the memory committed.
   1.926 +		*/
   1.927 +		EChunkMemoryAllocated,
   1.928 +
   1.929 +		/**
   1.930 +		Trace output when memory is decommitted from a chunk and deallocated.
   1.931 +
   1.932 +		Trace data format:
   1.933 +		- 4 bytes containing the chunk id (a DChunk*).
   1.934 +		- 4 bytes containing the offset into the chunk.
   1.935 +		- 4 bytes containing the size of the memory decommitted.
   1.936 +		*/
   1.937 +		EChunkMemoryDeallocated,
   1.938 +
   1.939 +		/**
   1.940 +		Trace output when un-owned memory is committed to a chunk.
   1.941 +
   1.942 +		Trace data format:
   1.943 +		- 4 bytes containing the chunk id (a DChunk*).
   1.944 +		- 4 bytes containing the offset into the chunk.
   1.945 +		- 4 bytes containing the size of the memory committed.
   1.946 +		*/
   1.947 +		EChunkMemoryAdded,
   1.948 +
   1.949 +		/**
   1.950 +		Trace output when un-owned memory is decommitted to a chunk.
   1.951 +
   1.952 +		Trace data format:
   1.953 +		- 4 bytes containing the chunk id (a DChunk*).
   1.954 +		- 4 bytes containing the offset into the chunk.
   1.955 +		- 4 bytes containing the size of the memory decommitted.
   1.956 +		*/
   1.957 +		EChunkMemoryRemoved,
   1.958 +
   1.959 +		/**
   1.960 +		Trace to indicate the owning process of a chunk - only for local (private) chunks.
   1.961 +
   1.962 +		Trace data format:
   1.963 +		- 4 bytes containing the chunk id (a DChunk*).
   1.964 +		- 4 bytes containing the process id of the owner (a DProcess*).
   1.965 +		*/
   1.966 +		EChunkOwner
   1.967 +		};
   1.968 +
   1.969 +	/**
   1.970 +	Enumeration of sub-category values for trace category ECodeSegs.
   1.971 +	@see ECodeSegs
   1.972 +	*/
   1.973 +	enum TCodeSegs
   1.974 +		{
   1.975 +		/**
   1.976 +		Trace output when a code segment is created to associate a code segment
   1.977 +		id with a filename.
   1.978 +
   1.979 +		Trace data format:
   1.980 +		- 4 bytes containing the code segment id (a DCodeSeg*).
   1.981 +		- The ASCII filename.
   1.982 +		*/
   1.983 +		ECodeSegCreated,
   1.984 +
   1.985 +		/**
   1.986 +		Trace output when a code segment is created.
   1.987 +
   1.988 +		Trace data format:
   1.989 +		- 4 bytes containing the code segment id (a DCodeSeg*).
   1.990 +		- 4 bytes containing the attributes.
   1.991 +		- 4 bytes containing the code base address (.text).
   1.992 +		- 4 bytes containing the size of the code section (.text).
   1.993 +		- 4 bytes containing the base address of the constant data section (.rodata).
   1.994 +		- 4 bytes containing the size of the constant data section (.rodata).
   1.995 +		- 4 bytes containing the base address of the initialised data section (.data).
   1.996 +		- 4 bytes containing the size of the initialised data section (.data).
   1.997 +		- 4 bytes containing the base address of the uninitialised data section (.bss).
   1.998 +		- 4 bytes containing the size of the uninitialised data section (.bss).
   1.999 +		*/
  1.1000 +		ECodeSegInfo,
  1.1001 +
  1.1002 +		/**
  1.1003 +		Trace output when a code segment is destroyed.
  1.1004 +
  1.1005 +		Trace data format:
  1.1006 +		- 4 bytes containing the code segment id (a DCodeSeg*).
  1.1007 +		*/
  1.1008 +		ECodeSegDestroyed,
  1.1009 +
  1.1010 +		/**
  1.1011 +		Trace output when a code segment is mapped into a process.
  1.1012 +
  1.1013 +		Trace data format:
  1.1014 +		- 4 bytes containing the code segment id (a DCodeSeg*).
  1.1015 +		- 4 bytes containing the process id (a DProcess*).
  1.1016 +		*/
  1.1017 +		ECodeSegMapped,
  1.1018 +
  1.1019 +		/**
  1.1020 +		Trace output when a code segment is unmapped from a process.
  1.1021 +
  1.1022 +		Trace data format:
  1.1023 +		- 4 bytes containing the code segment id (a DCodeSeg*).
  1.1024 +		- 4 bytes containing the process id (a DProcess*).
  1.1025 +		*/
  1.1026 +		ECodeSegUnmapped,
  1.1027 +
  1.1028 +		/**
  1.1029 +		Trace output when memory is allocated to a code segment.
  1.1030 +
  1.1031 +		Under the multiple memory model, code segments for RAM-loaded user code
  1.1032 +		own the RAM pages the code occupies.  The pages are not owned by any
  1.1033 +		chunk, but are mapped into the code chunk of each process that uses the
  1.1034 +		code segment.
  1.1035 +
  1.1036 +		Trace data format:
  1.1037 +		- 4 bytes containing the code segment id (a DCodeSeg*).
  1.1038 +		- 4 bytes containing the size of the memory allocated.
  1.1039 +		*/
  1.1040 +		ECodeSegMemoryAllocated,
  1.1041 +
  1.1042 +		/**
  1.1043 +		Trace output when memory is deallocated from a code segment.
  1.1044 +
  1.1045 +		Under the multiple memory model, code segments for RAM-loaded user code
  1.1046 +		own the RAM pages the code occupies.  The pages are not owned by any
  1.1047 +		chunk, but are mapped into the code chunk of each process that uses the
  1.1048 +		code segment.
  1.1049 +
  1.1050 +		Trace data format:
  1.1051 +		- 4 bytes containing the code segment id (a DCodeSeg*).
  1.1052 +		- 4 bytes containing the size of the memory deallocated.
  1.1053 +		*/
  1.1054 +		ECodeSegMemoryDeallocated
  1.1055 +		};
  1.1056 +
  1.1057 +
  1.1058 +	/**
  1.1059 +	Enumeration of sub-category values for trace category EPaging.
  1.1060 +	@see EPaging
  1.1061 +	*/
  1.1062 +	enum TPaging
  1.1063 +		{
  1.1064 +		/**
  1.1065 +		This event indicates the beginning of the 'page in' activity.
  1.1066 +		The end of this activity is indicated by one of the following events:
  1.1067 +		- EPagingPageInUnneeded
  1.1068 +		- EPagingPageInROM
  1.1069 +		- EPagingPageInCode
  1.1070 +		- EPagingPageIn (flexible memory model)
  1.1071 +
  1.1072 +		Trace data format:
  1.1073 +		- 4 bytes containing the virtual address which was accessed, causing this paging event.
  1.1074 +		- 4 bytes containing the virtual address of the instruction which caused this paging event.
  1.1075 +		  (The PC value.)
  1.1076 +
  1.1077 +		On the flexible memory model, the following addition trace data is also present:
  1.1078 +		- 1 byte containing the required access permissions, as defined by TMappingPermissions.
  1.1079 +		- 3 spare bytes, currently zero
  1.1080 +
  1.1081 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1082 +		*/
  1.1083 +		EPagingPageInBegin,
  1.1084 +
  1.1085 +		/**
  1.1086 +		Event which terminates the 'page in' activity when the required page was found to have been
  1.1087 +		paged in by another thread while the current thread was processing the fault (see
  1.1088 +		EPagingPageInBegin).
  1.1089 +
  1.1090 +		Trace data format:
  1.1091 +		- 0 bytes. (No extra data.)
  1.1092 +
  1.1093 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1094 +		*/
  1.1095 +		EPagingPageInUnneeded,
  1.1096 +
  1.1097 +		/**
  1.1098 +		A ROM page has been paged in.
  1.1099 +		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
  1.1100 +
  1.1101 +		Trace data format:
  1.1102 +		- 4 bytes containing the physical address of the page 'paged in'.
  1.1103 +		- 4 bytes containing the virtual address of the page 'paged in'.
  1.1104 +
  1.1105 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1106 +
  1.1107 +		This trace is not emitted on the flexible memory model - EPagingPageIn is used instead.
  1.1108 +		*/
  1.1109 +		EPagingPageInROM,
  1.1110 +
  1.1111 +		/**
  1.1112 +		A ROM page has been 'paged out'. I.e. removed from the live list to be either
  1.1113 +		reused or returned to free pool.
  1.1114 +
  1.1115 +		Trace data format:
  1.1116 +		- 4 bytes containing the physical address of the page being 'paged out'.
  1.1117 +		- 4 bytes containing the virtual address of the page being 'paged out'.
  1.1118 +
  1.1119 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1120 +
  1.1121 +		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
  1.1122 +		*/
  1.1123 +		EPagingPageOutROM,
  1.1124 +
  1.1125 +		/**
  1.1126 +		A Free page has been 'paged in'. I.e. added to the live list.
  1.1127 +
  1.1128 +		Trace data format:
  1.1129 +		- 4 bytes containing the physical address of the page being 'paged in'.
  1.1130 +
  1.1131 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1132 +		*/
  1.1133 +		EPagingPageInFree,
  1.1134 +
  1.1135 +		/**
  1.1136 +		A Free page has been 'paged out'. I.e. removed from the live list to be either
  1.1137 +		reused or returned to free pool.
  1.1138 +
  1.1139 +		Trace data format:
  1.1140 +		- 4 bytes containing the physical address of the page being 'paged out'.
  1.1141 +
  1.1142 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1143 +
  1.1144 +		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
  1.1145 +		*/
  1.1146 +		EPagingPageOutFree,
  1.1147 +
  1.1148 +		/**
  1.1149 +		A page has been made 'young' again because it was accessed.
  1.1150 +
  1.1151 +		Trace data format:
  1.1152 +		- 4 bytes containing the physical address of the page being rejuvenated, (made young).
  1.1153 +		- 4 bytes containing the virtual address which was accessed, causing this paging event.
  1.1154 +		- 4 bytes containing the virtual address of the instruction which caused this paging event.
  1.1155 +		  (The PC value.)
  1.1156 +
  1.1157 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1158 +		*/
  1.1159 +		EPagingRejuvenate,
  1.1160 +
  1.1161 +		/**
  1.1162 +		A page fault was found to have already been previously serviced.
  1.1163 +
  1.1164 +		Trace data format:
  1.1165 +		- 4 bytes containing the physical address of the page accessed.
  1.1166 +		- 4 bytes containing the virtual address which was accessed, causing this paging event.
  1.1167 +		- 4 bytes containing the virtual address of the instruction which caused this paging event.
  1.1168 +		  (The PC value.)
  1.1169 +
  1.1170 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1171 +
  1.1172 +		This trace is not emitted on the flexible memory model.
  1.1173 +		*/
  1.1174 +		EPagingPageNop,
  1.1175 +
  1.1176 +		/**
  1.1177 +		A page has been locked.
  1.1178 +
  1.1179 +		Trace data format:
  1.1180 +		- 4 bytes containing the physical address of the page being locked.
  1.1181 +		- 4 bytes containing the value of the lock count after the paged was locked.
  1.1182 +
  1.1183 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1184 +		*/
  1.1185 +		EPagingPageLock,
  1.1186 +
  1.1187 +		/**
  1.1188 +		A page has been unlocked.
  1.1189 +
  1.1190 +		Trace data format:
  1.1191 +		- 4 bytes containing the physical address of the page being unlocked.
  1.1192 +		- 4 bytes containing the value of the lock count before the paged was unlocked.
  1.1193 +
  1.1194 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1195 +		*/
  1.1196 +		EPagingPageUnlock,
  1.1197 +
  1.1198 +		/**
  1.1199 +		A page containing RAM cache has been 'paged out'. I.e. removed from the live list to be
  1.1200 +		either reused or returned to free pool.
  1.1201 +
  1.1202 +		Trace data format:
  1.1203 +		- 4 bytes containing the physical address of the page being 'paged out'.
  1.1204 +		- 4 bytes containing the virtual address of the page being 'paged out'.
  1.1205 +
  1.1206 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1207 +
  1.1208 +		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
  1.1209 +		*/
  1.1210 +		EPagingPageOutCache,
  1.1211 +
  1.1212 +		/**
  1.1213 +		A page containing RAM-loaded code has been paged in.
  1.1214 +		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
  1.1215 +
  1.1216 +		Trace data format:
  1.1217 +		- 4 bytes containing the physical address of the page 'paged in'.
  1.1218 +		- 4 bytes containing the virtual address of the page 'paged in'.
  1.1219 +
  1.1220 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1221 +
  1.1222 +		This trace is not emitted on the flexible memory model - EPagingPageIn is used instead.
  1.1223 +		*/
  1.1224 +		EPagingPageInCode,
  1.1225 +
  1.1226 +		/**
  1.1227 +		A page containing RAM-loaded code has been 'paged out'. I.e. removed from the live list to be
  1.1228 +		either reused or returned to free pool.
  1.1229 +
  1.1230 +		Trace data format:
  1.1231 +		- 4 bytes containing the physical address of the page being 'paged out'.
  1.1232 +		- 4 bytes containing the virtual address of the page being 'paged out'.
  1.1233 +
  1.1234 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1235 +
  1.1236 +		This trace is not emitted on the flexible memory model - EPagingPageOut is used instead.
  1.1237 +		*/
  1.1238 +		EPagingPageOutCode,
  1.1239 +
  1.1240 +		/**
  1.1241 +		A page of RAM-loaded code was found to already be 'paged in' but not mapped in
  1.1242 +		the faulting process.
  1.1243 +
  1.1244 +		Trace data format:
  1.1245 +		- 4 bytes containing the physical address of the page 'paged in'.
  1.1246 +		- 4 bytes containing the virtual address which was accessed, causing this paging event.
  1.1247 +
  1.1248 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1249 +
  1.1250 +		This trace is only emitted on the multiple memory model.
  1.1251 +		*/
  1.1252 +		EPagingMapCode,
  1.1253 +
  1.1254 +		/**
  1.1255 +		A page has been made 'old' because it was the last young page to be accessed.
  1.1256 +
  1.1257 +		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
  1.1258 +		macro defined.
  1.1259 +
  1.1260 +		Trace data format:
  1.1261 +		- 4 bytes containing the physical address of the page being aged, (made old).
  1.1262 +
  1.1263 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1264 +		*/
  1.1265 +		EPagingAged,
  1.1266 +
  1.1267 +		/**
  1.1268 +		Trace emitted at the start of decompression of demand paged data.
  1.1269 +
  1.1270 +		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
  1.1271 +		macro defined.
  1.1272 +
  1.1273 +		Trace data format:
  1.1274 +		- 4 bytes containing an integer which indicates the compression type being used:
  1.1275 +			  0, no compression;
  1.1276 +			  1, bytepair compression.
  1.1277 +
  1.1278 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1279 +		*/
  1.1280 +		EPagingDecompressStart,
  1.1281 +
  1.1282 +		/**
  1.1283 +		Trace emitted at the end of decompression of demand paged data.
  1.1284 +
  1.1285 +		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
  1.1286 +		macro defined.
  1.1287 +
  1.1288 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1289 +		*/
  1.1290 +		EPagingDecompressEnd,
  1.1291 +
  1.1292 +		/**
  1.1293 +		Information about the kernel's memory model.
  1.1294 +
  1.1295 +		Trace data format:
  1.1296 +		- 4 bytes containing the memory model as defined by TMemModelAttributes.
  1.1297 +		*/
  1.1298 +		EPagingMemoryModel,
  1.1299 +
  1.1300 +		/**
  1.1301 +		A page has been donated to the paging cache via RChunk::Unlock().
  1.1302 +
  1.1303 +		Trace data format:
  1.1304 +		- 4 bytes containing the chunk id (a DChunk*).
  1.1305 +		- 4 bytes containing the page index of the page within the chunk.
  1.1306 +
  1.1307 +		This trace is not emitted on the flexible memory model.
  1.1308 +		@see EPagingDonatePage
  1.1309 +		*/
  1.1310 +		EPagingChunkDonatePage,
  1.1311 +
  1.1312 +		/**
  1.1313 +		A page has been reclaimed from the paging cache via RChunk::Lock().
  1.1314 +
  1.1315 +		Trace data format:
  1.1316 +		- 4 bytes containing the chunk id (a DChunk*).
  1.1317 +		- 4 bytes containing the page index of the page within the chunk.
  1.1318 +
  1.1319 +		This trace is not emitted on the flexible memory model.
  1.1320 +		@see EPagingReclaimPage.
  1.1321 +		*/
  1.1322 +		EPagingChunkReclaimPage,
  1.1323 +
  1.1324 +		// Traces specific to the flexible memory model
  1.1325 +
  1.1326 +		/**
  1.1327 +		A page has been paged in.
  1.1328 +		This event indicates the end of the 'page in' activity. (See EPagingPageInBegin.)
  1.1329 +
  1.1330 +		Trace data format:
  1.1331 +		- 4 bytes containing the physical address of the page 'paged in'.
  1.1332 +		- 4 bytes containing the memory object id (DMemoryObject*).
  1.1333 +		- 4 bytes containing the page index of the page within the memory object.
  1.1334 +
  1.1335 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1336 +
  1.1337 +		This trace is only emitted on the flexible memory model.
  1.1338 +		*/
  1.1339 +		EPagingPageIn,
  1.1340 +
  1.1341 +		/**
  1.1342 +		A page has been 'paged out'. I.e. removed from the live list to be either
  1.1343 +		reused or returned to free pool.
  1.1344 +
  1.1345 +		Trace data format:
  1.1346 +		- 4 bytes containing the physical address of the page being 'paged out'.
  1.1347 +
  1.1348 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1349 +
  1.1350 +		This trace is only emitted on the flexible memory model.
  1.1351 +		*/
  1.1352 +		EPagingPageOut,
  1.1353 +
  1.1354 +		/**
  1.1355 +		Event which terminates the 'page in' activity when the required page was found to
  1.1356 +		already be paged in but not mapped in the faulting process (see EPagingPageInBegin).
  1.1357 +
  1.1358 +		Trace data format:
  1.1359 +		- 4 bytes containing the physical address of the page 'paged in'.
  1.1360 +
  1.1361 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1362 +
  1.1363 +		This trace is only emitted on the flexible memory model.
  1.1364 +		*/
  1.1365 +		EPagingMapPage,
  1.1366 +
  1.1367 +		/**
  1.1368 +		A page has been donated to the paging cache via RChunk::Unlock().
  1.1369 +
  1.1370 +		Trace data format:
  1.1371 +		- 4 bytes containing the physical address of the page.
  1.1372 +		- 4 bytes containing the memory object id (DMemoryObject*).
  1.1373 +		- 4 bytes containing the page index of the page within the memory object.
  1.1374 +
  1.1375 +		This trace is only emitted on the flexible memory model.
  1.1376 +		@see EPagingChunkDonatePage.
  1.1377 +		*/
  1.1378 +		EPagingDonatePage,
  1.1379 +
  1.1380 +		/**
  1.1381 +		A page has been reclaimed from the paging cache via RChunk::Lock().
  1.1382 +
  1.1383 +		Trace data format:
  1.1384 +		- 4 bytes containing the physical address of the page.
  1.1385 +
  1.1386 +		This trace is only emitted on the flexible memory model.
  1.1387 +		@see EPagingChunkReclaimPage.
  1.1388 +		*/
  1.1389 +		EPagingReclaimPage,
  1.1390 +
  1.1391 +		/**
  1.1392 +		A page has been moved to the oldest clean list because it was the last old page and
  1.1393 +		it was clean.
  1.1394 +
  1.1395 +		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
  1.1396 +		macro defined.
  1.1397 +
  1.1398 +		Trace data format:
  1.1399 +		- 4 bytes containing the physical address of the page being moved to the oldest clean list.
  1.1400 +
  1.1401 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1402 +		*/
  1.1403 +		EPagingAgedClean,
  1.1404 +
  1.1405 +		/**
  1.1406 +		A page has been moved to the oldest dirty list because it was the last old page and
  1.1407 +		it was dirty.
  1.1408 +
  1.1409 +		This trace is only produced when the kernel is compiled with the #BTRACE_PAGING_VERBOSE
  1.1410 +		macro defined.
  1.1411 +
  1.1412 +		Trace data format:
  1.1413 +		- 4 bytes containing the physical address of the page being moved to the oldest dirty list.
  1.1414 +
  1.1415 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1416 +		*/
  1.1417 +		EPagingAgedDirty,
  1.1418 +
  1.1419 +		/**
  1.1420 +		A page has been allocated to hold the MMU page tables required to map demand paged memory.
  1.1421 +
  1.1422 +		Trace data format:
  1.1423 +		- 4 bytes containing the physical address of the page allocated.
  1.1424 +
  1.1425 +		The context id (NThread*) in this trace is that of the thread caused this paging event.
  1.1426 +		
  1.1427 +		This trace is only emitted on the flexible memory model.
  1.1428 +		*/
  1.1429 +		EPagingPageTableAlloc,
  1.1430 +		};
  1.1431 +
  1.1432 +    /**
  1.1433 +	Enumeration of sub-category values for trace category EResourceManager.
  1.1434 +	@see EResourceManager
  1.1435 +    @prototype 9.5
  1.1436 +	*/
  1.1437 +	enum TResourceManager
  1.1438 +		{
  1.1439 +		/**
  1.1440 +		Trace output for resource registration.
  1.1441 +
  1.1442 +		Trace data format:
  1.1443 +		- 4 bytes containing the Resource Id.
  1.1444 +		- 4 bytes containing the Resource address.
  1.1445 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1446 +		- 4 bytes containing the Resource Minimum Level
  1.1447 +		- 4 bytes containing the Resource Maximum Level
  1.1448 +		- 4 bytes containing the Resource Default Level
  1.1449 +		*/
  1.1450 +		ERegisterResource = 0,
  1.1451 +
  1.1452 +		/**
  1.1453 +		Trace output for client registration
  1.1454 +
  1.1455 +		Trace data format:
  1.1456 +		- 4 bytes containing clientId
  1.1457 +		- 4 bytes containing client address
  1.1458 +		- N bytes containing client name, where 0 < N < 32
  1.1459 +		*/
  1.1460 +		ERegisterClient,
  1.1461 +
  1.1462 +		/**
  1.1463 +		Trace output for client deregistration
  1.1464 +
  1.1465 +		Trace data format:
  1.1466 +		- 4 bytes containing clientId
  1.1467 +		- 4 bytes containing client address
  1.1468 +		- N bytes containing client name, where 0 < N < 32
  1.1469 +		*/
  1.1470 +		EDeRegisterClient,
  1.1471 +
  1.1472 +		/**
  1.1473 +		Trace output for resource state change start operation
  1.1474 +
  1.1475 +		Trace data format:
  1.1476 +		- 4 bytes containing clientId
  1.1477 +		- 4 bytes containing the Resource Id.
  1.1478 +		- N bytes containing client name, where 0 < N < 32
  1.1479 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1480 +		- 4 bytes containing the Resource state
  1.1481 +		*/
  1.1482 +		ESetResourceStateStart,
  1.1483 +
  1.1484 +		/**
  1.1485 +		Trace output for resource state change end operation
  1.1486 +
  1.1487 +		Trace data format:
  1.1488 +		- 4 bytes containing clientId
  1.1489 +		- 4 bytes containing the Resource Id.
  1.1490 +		- N bytes containing client name, where 0 < N < 32
  1.1491 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1492 +		- 4 bytes containing return value.
  1.1493 +		- 4 bytes containing the Resource state.
  1.1494 +		*/
  1.1495 +		ESetResourceStateEnd,
  1.1496 +
  1.1497 +		/**
  1.1498 +		Trace output for registration for post notification
  1.1499 +
  1.1500 +		Trace data format:
  1.1501 +		- 4 bytes containing clientId
  1.1502 +		- 4 bytes containing the Resource Id.
  1.1503 +		- 4 bytest containing the callback address
  1.1504 +		- 4 bytes containing return value.
  1.1505 +		*/
  1.1506 +		EPostNotificationRegister,
  1.1507 +
  1.1508 +		/**
  1.1509 +		Trace output for deregistration for post notification
  1.1510 +
  1.1511 +		Trace data format:
  1.1512 +		- 4 bytes containing clientId
  1.1513 +		- 4 bytes containing the Resource Id.
  1.1514 +		- 4 bytes containing the callback address
  1.1515 +		- 4 bytes containing the return value.
  1.1516 +		*/
  1.1517 +		EPostNotificationDeRegister,
  1.1518 +
  1.1519 +		/**
  1.1520 +		Trace output for post notification sent.
  1.1521 +
  1.1522 +		Trace data format:
  1.1523 +		- 4 bytes containing clientId
  1.1524 +		- 4 bytes containing the Resource Id.
  1.1525 +		*/
  1.1526 +		EPostNotificationSent,
  1.1527 +
  1.1528 +		/**
  1.1529 +		Trace output for Callback complete
  1.1530 +
  1.1531 +		Trace data format:
  1.1532 +		- 4 bytes containing clientId
  1.1533 +		- 4 bytes containing the Resource Id.
  1.1534 +		*/
  1.1535 +		ECallbackComplete,
  1.1536 +
  1.1537 +		/**
  1.1538 +		Trace output for resource manager memory usage
  1.1539 +
  1.1540 +		Trace data format:
  1.1541 +		- 4 bytes containing memory allocated in bytes.
  1.1542 +		*/
  1.1543 +		EMemoryUsage,
  1.1544 +
  1.1545 +		/**
  1.1546 +		Trace output for get resource state start operation
  1.1547 +
  1.1548 +		Trace data format:
  1.1549 +		- 4 bytes containing clientId
  1.1550 +		- 4 bytes containing the Resource Id.
  1.1551 +		- N bytes containing client name, where 0 < N < 32
  1.1552 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1553 +		*/
  1.1554 +		EGetResourceStateStart,
  1.1555 +
  1.1556 +		/**
  1.1557 +		Trace output for get resource state end operation
  1.1558 +
  1.1559 +		Trace data format:
  1.1560 +		- 4 bytes containing clientId
  1.1561 +		- 4 bytes containing the Resource Id.
  1.1562 +		- N bytes containing client name, where 0 < N < 32
  1.1563 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1564 +		- 4 bytes containing the Resource state
  1.1565 +		- 4 bytes containing return value.
  1.1566 +		*/
  1.1567 +		EGetResourceStateEnd,
  1.1568 +
  1.1569 +		/**
  1.1570 +		Trace output for cancellation of long latency operation
  1.1571 +
  1.1572 +		Trace data format:
  1.1573 +		- 4 bytes containing clientId
  1.1574 +		- 4 bytes containing the Resource Id.
  1.1575 +		- N bytes containing client name, where 0 < N < 32
  1.1576 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1577 +		- 4 bytes containing return value
  1.1578 +		*/
  1.1579 +		ECancelLongLatencyOperation,
  1.1580 +
  1.1581 +		/**
  1.1582 +		Trace output for booting of resource manager
  1.1583 +
  1.1584 +		Trace data format:
  1.1585 +		- 4 bytes containing entry point
  1.1586 +		*/
  1.1587 +		EBooting,
  1.1588 +
  1.1589 +		/**
  1.1590 +		Trace output for PSL resource state change operation
  1.1591 +
  1.1592 +		Trace data format:
  1.1593 +		- 4 bytes containing clientId
  1.1594 +		- 4 bytes containing the Resource Id.
  1.1595 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1596 +		- 4 bytes containing the Resource current state
  1.1597 +		- 4 bytes containing the resource requested state
  1.1598 +		*/
  1.1599 +		EPslChangeResourceStateStart,
  1.1600 +
  1.1601 +		/**
  1.1602 +		Trace output for PSL resource state change operation
  1.1603 +
  1.1604 +		Trace data format:
  1.1605 +		- 4 bytes containing clientId
  1.1606 +		- 4 bytes containing the Resource Id.
  1.1607 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1608 +		- 4 bytes containing the Resource current state
  1.1609 +		- 4 bytes containing the resource requested state
  1.1610 +		- 4 bytes containing return value
  1.1611 +		*/
  1.1612 +		EPslChangeResourceStateEnd,
  1.1613 +
  1.1614 +		/**
  1.1615 +		Trace output for get resource state start operation in PSL
  1.1616 +
  1.1617 +		Trace data format:
  1.1618 +		- 4 bytes containing clientId
  1.1619 +		- 4 bytes containing the Resource Id.
  1.1620 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1621 +		*/
  1.1622 +		EPslGetResourceStateStart,
  1.1623 +
  1.1624 +		/**
  1.1625 +		Trace output for get resource state end operation in PSL
  1.1626 +
  1.1627 +		Trace data format:
  1.1628 +		- 4 bytes containing clientId
  1.1629 +		- 4 bytes containing the Resource Id.
  1.1630 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1631 +		- 4 bytes containing the Resource state
  1.1632 +		- 4 bytes containing return value.
  1.1633 +		*/
  1.1634 +		EPslGetResourceStateEnd,
  1.1635 +
  1.1636 +		/**
  1.1637 +		Trace output for resource creation
  1.1638 +
  1.1639 +		Trace data format:
  1.1640 +		- 4 bytes containing minimum value of resource
  1.1641 +		- 4 bytes containing maximum value of resource
  1.1642 +		- 4 bytes containing the default value of resource
  1.1643 +		- 4 bytes containing the properties of the resource
  1.1644 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1645 +		*/
  1.1646 +		EPslResourceCreate,
  1.1647 +
  1.1648 +		/**
  1.1649 +		Trace output for static resource with dependency registration
  1.1650 +
  1.1651 +		Trace data format:
  1.1652 +		- 4 bytes containing the Resource Id
  1.1653 +		- 4 bytes containing the Resource address
  1.1654 +		- N bytes containing the Resource name, where 0 < N < 32
  1.1655 +		- 4 bytes containing the minimum value of resource
  1.1656 +		- 4 bytes containing the maximum value of resource
  1.1657 +		- 4 bytes containing the default value of resource
  1.1658 +		*/
  1.1659 +		ERegisterStaticResourceWithDependency,
  1.1660 +
  1.1661 +		/**
  1.1662 +		Trace output for dynamic resource registration
  1.1663 +
  1.1664 +		Trace data format:
  1.1665 +		- 4 bytes containing clientId
  1.1666 +		- 4 bytes containing the Resource Id
  1.1667 +		- N bytes containing the client name, where 0 < N < 32
  1.1668 +		- N bytes containing the resource name, where 0 < N < 32
  1.1669 +		- 4 bytes containing the resouce address
  1.1670 +		*/
  1.1671 +		ERegisterDynamicResource,
  1.1672 +
  1.1673 +		/**
  1.1674 +		Trace output for dynamic resource deregistration
  1.1675 +
  1.1676 +		Trace data format:
  1.1677 +		- 4 bytes containing clientId
  1.1678 +		- 4 bytes containing the Resource Id
  1.1679 +		- N bytes containing the client name, where 0 < N < 32
  1.1680 +		- N bytes containing the resource name, where 0 < N < 32
  1.1681 +		- 4 bytes containing the resource address
  1.1682 +		- 4 bytes containing the resource level.
  1.1683 +		*/
  1.1684 +		EDeRegisterDynamicResource,
  1.1685 +
  1.1686 +		/**
  1.1687 +		Trace output for resource dependency registration
  1.1688 +
  1.1689 +		Trace data format:
  1.1690 +		- 4 bytes containing clientId
  1.1691 +		- 4 bytes containing the Resource Id of first dependent resource
  1.1692 +		- N bytes containing the client name, where 0 < N < 32
  1.1693 +		- N bytes containing the resource name of first dependent resource, where 0 < N < 32
  1.1694 +		- 4 bytes containing the Resource Id of second dependent resource
  1.1695 +		- N bytes containing the resource name of second dependent resource, where 0 < N < 32
  1.1696 +		- 4 bytes containing the address of first dependent resource
  1.1697 +		- 4 bytes containing the address of second dependent resource
  1.1698 +		*/
  1.1699 +		ERegisterResourceDependency,
  1.1700 +
  1.1701 +		/**
  1.1702 +		Trace output for resource dependency deregistration
  1.1703 +
  1.1704 +		Trace data format:
  1.1705 +		- 4 bytes containing clientId
  1.1706 +		- 4 bytes containing the Resource Id of first dependent resource
  1.1707 +		- N bytes containing the client name, where 0 < N < 32
  1.1708 +		- N bytes containing the resource name of first dependent resource, where 0 < N < 32
  1.1709 +		- 4 bytes containing the resource id of second dependent resource
  1.1710 +		- N bytes containing the resource name of second dependent resource, where 0 < N < 32
  1.1711 +		- 4 bytes containing the address of first dependent resource
  1.1712 +		- 4 bytes containing the address of second dependent resource
  1.1713 +		*/
  1.1714 +		EDeRegisterResourceDependency
  1.1715 +		};
  1.1716 +    /**
  1.1717 +	Enumeration of sub-category values for trace category EResourceManagerUs.
  1.1718 +	@see EResourceManagerUs
  1.1719 +    @prototype 9.5
  1.1720 +	*/
  1.1721 +	enum TResourceManagerUs
  1.1722 +		{
  1.1723 +		/**
  1.1724 +		Trace output for the start of opening a channel to the Resource Controller.
  1.1725 +
  1.1726 +		Trace data format:
  1.1727 +		- 4 bytes unused (displays 0)
  1.1728 +		- 4 bytes containing the client thread identifier.
  1.1729 +		- N bytes containing the client name, where 0 < N < 32
  1.1730 +		*/
  1.1731 +		EOpenChannelUsStart = 0,
  1.1732 +		/**
  1.1733 +		Trace output for the end of opening a channel to the Resource Controller.
  1.1734 +
  1.1735 +		Trace data format:
  1.1736 +		- 4 bytes unused (displays 0)
  1.1737 +		- 4 bytes containing the client identifier provided by the Resource Controller
  1.1738 +		- N bytes containing the client name, where 0 < N < 32
  1.1739 +		*/
  1.1740 +		EOpenChannelUsEnd,
  1.1741 +		/**
  1.1742 +		Trace output for the start of registering a client with the Resource Controller.
  1.1743 +
  1.1744 +		Trace data format:
  1.1745 +		- 4 bytes the number of concurrent change resource state operations to be supported
  1.1746 +		- 4 bytes the number of concurrent notification requests to be supported
  1.1747 +		- N bytes containing the client name, where 0 < N < 32
  1.1748 +		- 4 bytes the number of concurrent get resource state operations to be supported
  1.1749 +		*/
  1.1750 +		ERegisterClientUsStart,
  1.1751 +		/**
  1.1752 +		Trace output for the end of registering a client with the Resource Controller.
  1.1753 +
  1.1754 +		Trace data format:
  1.1755 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1756 +		- 4 bytes specifying the value returned from the call to Resource Controller's AllocReserve method
  1.1757 +		*/
  1.1758 +		ERegisterClientUsEnd,
  1.1759 +		/**
  1.1760 +		Trace output for the start of de-registering a client with the Resource Controller.
  1.1761 +
  1.1762 +		Trace data format:
  1.1763 +		- 4 bytes unused (displays 0)
  1.1764 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1765 +		- N bytes containing the client name, where 0 < N < 32
  1.1766 +		*/
  1.1767 +		EDeRegisterClientUsStart,
  1.1768 +		/**
  1.1769 +		Trace output for the end of registering a client with the Resource Controller.
  1.1770 +
  1.1771 +		Trace data format:
  1.1772 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1773 +		*/
  1.1774 +		EDeRegisterClientUsEnd,
  1.1775 +		/**
  1.1776 +		Trace output for the start of a GetResourceState request to the Resource Controller.
  1.1777 +
  1.1778 +		Trace data format:
  1.1779 +		- 4 bytes specifying the resource ID
  1.1780 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1781 +		- N bytes containing the client name, where 0 < N < 32
  1.1782 +		*/
  1.1783 +		EGetResourceStateUsStart,
  1.1784 +		/**
  1.1785 +		Trace output for the end of a GetResourceState request to the Resource Controller.
  1.1786 +
  1.1787 +		Trace data format:
  1.1788 +		- 4 bytes specifying the resource ID
  1.1789 +		- 4 bytes specifying the resource level
  1.1790 +		- 4 bytes containing the client identifier
  1.1791 +		- 4 bytes specifying the success code returned by the Resource Controller.
  1.1792 +		*/
  1.1793 +		EGetResourceStateUsEnd,
  1.1794 +		/**
  1.1795 +		Trace output for the start of a ChangeResourceState request to the Resource Controller.
  1.1796 +
  1.1797 +		Trace data format:
  1.1798 +		- 4 bytes specifying the resource ID
  1.1799 +		- 4 bytes specifying the required state
  1.1800 +		- N bytes containing the client name, where 0 < N < 32
  1.1801 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1802 +		*/
  1.1803 +		ESetResourceStateUsStart,
  1.1804 +		/**
  1.1805 +		Trace output for the end of a ChangeResourceState request to the Resource Controller.
  1.1806 +
  1.1807 +		Trace data format:
  1.1808 +		- 4 bytes specifying the resource ID
  1.1809 +		- 4 bytes specifying the requested state
  1.1810 +		- 4 bytes containing the client identifier
  1.1811 +		- 4 bytes specifying the success code returned by the Resource Controller.
  1.1812 +		*/
  1.1813 +		ESetResourceStateUsEnd,
  1.1814 +		/**
  1.1815 +		Trace output for the start of a cancel GetResourceState request to the Resource Controller.
  1.1816 +
  1.1817 +		Trace data format:
  1.1818 +		- 4 bytes specifying the resource ID
  1.1819 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1820 +		- N bytes containing the client name, where 0 < N < 32
  1.1821 +		*/
  1.1822 +		ECancelGetResourceStateUsStart,
  1.1823 +		/**
  1.1824 +		Trace output for the end of a cancel GetResourceState request to the Resource Controller.
  1.1825 +
  1.1826 +		Trace data format:
  1.1827 +		- 4 bytes specifying the resource ID
  1.1828 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1829 +		- N bytes containing the client name, where 0 < N < 32
  1.1830 +		*/
  1.1831 +		ECancelGetResourceStateUsEnd,
  1.1832 +		/**
  1.1833 +		Trace output for the start of a cancel ChangeResourceState request to the Resource Controller.
  1.1834 +
  1.1835 +		Trace data format:
  1.1836 +		- 4 bytes specifying the resource ID
  1.1837 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1838 +		- N bytes containing the client name, where 0 < N < 32
  1.1839 +		*/
  1.1840 +		ECancelSetResourceStateUsStart,
  1.1841 +		/**
  1.1842 +		Trace output for the end of a cancel ChangeResourceState request to the Resource Controller.
  1.1843 +
  1.1844 +		Trace data format:
  1.1845 +		- 4 bytes specifying the resource ID
  1.1846 +		- 4 bytes containing the client identifier provided by the Resource Controller.
  1.1847 +		- N bytes containing the client name, where 0 < N < 32
  1.1848 +		*/
  1.1849 +		ECancelSetResourceStateUsEnd
  1.1850 +		};
  1.1851 +
  1.1852 +	/**
  1.1853 +	Enumeration of sub-category values for trace category EThreadPriority.
  1.1854 +	@see EThreadPriority
  1.1855 +	@internalTechnology
  1.1856 +    @prototype 9.3
  1.1857 +	*/
  1.1858 +	enum TThreadPriority
  1.1859 +		{
  1.1860 +		/**
  1.1861 +		Trace output when a nanothread priority is changed.
  1.1862 +
  1.1863 +		Trace data format:
  1.1864 +		- 4 bytes containing the context id (an NThread*) for the thread whose priority is changing.
  1.1865 +		- 4 bytes containing the new absolute priority.
  1.1866 +		*/
  1.1867 +		ENThreadPriority=0,
  1.1868 +
  1.1869 +		/**
  1.1870 +		Trace output when a DThread's default priority is set.
  1.1871 +
  1.1872 +		Trace data format:
  1.1873 +		- 4 bytes containing the context id (an NThread*) for the thread whose priority is changing.
  1.1874 +		- 4 bytes containing the iThreadPriority member - a value from enum ::TThrdPriority.
  1.1875 +		- 4 bytes containing the new default absolute priority.
  1.1876 +		*/
  1.1877 +		EDThreadPriority=1,
  1.1878 +
  1.1879 +		/**
  1.1880 +		Trace output when a DProcess priority is changed.
  1.1881 +
  1.1882 +		Trace data format:
  1.1883 +		- 4 bytes containing trace id (a DProcess*) for process.
  1.1884 +		- 4 bytes containing the new process priority, a value from enum ::TProcPriority
  1.1885 +		*/
  1.1886 +		EProcessPriority=2
  1.1887 +		};
  1.1888 +
  1.1889 +	/**
  1.1890 +	Enumeration of sub-category values for trace category EPagingMedia.
  1.1891 +	@see EPagingMedia
  1.1892 +	*/
  1.1893 +	enum TPagingMedia
  1.1894 +		{
  1.1895 +		/**
  1.1896 +		Event generated when a request to 'page in' data is received by the Local Media Subsystem.
  1.1897 +
  1.1898 +		Trace data format:
  1.1899 +		- 4 bytes containing the linear address of the buffer to where the data is to be written.
  1.1900 +		- 4 bytes containing the offset from start of the partition to where the data to be paged in resides.
  1.1901 +		- 4 bytes containing the number of bytes to be read off the media.
  1.1902 +		- 4 bytes containing local drive number for the drive where the data to be paged in resides (-1 if ROM paging).
  1.1903 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1904 +
  1.1905 +		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
  1.1906 +		*/
  1.1907 +		EPagingMediaLocMedPageInBegin,
  1.1908 +
  1.1909 +		/**
  1.1910 +		Event generated by the Local Media Subsystem when a request to page data in or out has completed.
  1.1911 +
  1.1912 +		Trace data format:
  1.1913 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1914 +		- 4 bytes containing the completion code to be returned.
  1.1915 +		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out.
  1.1916 +
  1.1917 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.1918 +		*/
  1.1919 +		EPagingMediaLocMedPageInPagedIn,
  1.1920 +
  1.1921 +		/**
  1.1922 +		Event generated by the Local Media Subsystem when a request to 'page in' data is deferred.
  1.1923 +
  1.1924 +		Trace data format:
  1.1925 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1926 +		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
  1.1927 +
  1.1928 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.1929 +		*/
  1.1930 +		EPagingMediaLocMedPageInDeferred,
  1.1931 +
  1.1932 +		/**
  1.1933 +		Event generated by the Local Media Subsystem when a request to 'page in' data that has been deferred is re-posted.
  1.1934 +
  1.1935 +		Trace data format:
  1.1936 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1937 +		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
  1.1938 +
  1.1939 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.1940 +		*/
  1.1941 +		EPagingMediaLocMedPageInDeferredReposted,
  1.1942 +
  1.1943 +		/**
  1.1944 +		Event generated by the Local Media Subsystem when a request to 'page in' data is re-deferred.
  1.1945 +
  1.1946 +		Trace data format:
  1.1947 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1948 +		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
  1.1949 +
  1.1950 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.1951 +		*/
  1.1952 +		EPagingMediaLocMedPageInReDeferred,
  1.1953 +
  1.1954 +		/**
  1.1955 +		Event generated by the Local Media Subsystem when a request to 'page in' data is issued when the media is not yet open.
  1.1956 +
  1.1957 +		Trace data format:
  1.1958 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1959 +		- 4 bytes containing the state of the media (one of TMediaState).
  1.1960 +		- 4 bytes containing a code qualifying this request as either a ROM or Code 'page in' (see TPagingRequestId) or a data page-in/out..
  1.1961 +
  1.1962 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.1963 +		*/
  1.1964 +		EPagingMediaLocMedPageInQuietlyDeferred,
  1.1965 +
  1.1966 +		/**
  1.1967 +		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
  1.1968 +		Driver thread .
  1.1969 +
  1.1970 +		Trace data format:
  1.1971 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1972 +		- 4 bytes containing the ID of this fragment (middle or last).
  1.1973 +		- 4 bytes containing the length of data in this request fragment.
  1.1974 +		- 4 bytes containing the offset within the original request to the start of data in this fragment.
  1.1975 +		- 4 bytes containing the offset from start of the partition to where the data in this fragment is to be written.
  1.1976 +		- 4 bytes containing the address of the DThread object representing the thread that issued the original Write request.
  1.1977 +
  1.1978 +		The context id (NThread*) in this trace is that of the File Server drive thread that issued the original Write request.
  1.1979 +		*/
  1.1980 +		EPagingMediaLocMedFragmentBegin,
  1.1981 +
  1.1982 +		/**
  1.1983 +		Event generated by the Local Media Subsystem when a Write fragment is completed .
  1.1984 +
  1.1985 +		Trace data format:
  1.1986 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1987 +		- 4 bytes containing the completion code to be returned.
  1.1988 +
  1.1989 +		The context id (NThread*) in this trace is that of the File Server drive thread that issued the original Write request.
  1.1990 +		*/
  1.1991 +		EPagingMediaLocMedFragmentEnd,
  1.1992 +
  1.1993 +		/**
  1.1994 +		Event generated when the Media Driver starts processing a request to 'page in' data in its specific Request(..) function.
  1.1995 +
  1.1996 +		Trace data format:
  1.1997 +		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
  1.1998 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.1999 +
  1.2000 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.2001 +		*/
  1.2002 +		EPagingMediaPagingMedDrvBegin,
  1.2003 +
  1.2004 +		/**
  1.2005 +		Event generated by the Media Driver when the data read by a 'page in' request is written to the paging buffer.
  1.2006 +
  1.2007 +		Trace data format:
  1.2008 +		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
  1.2009 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.2010 +		- 4 bytes containing the linear address of the buffer to where the data is to be written.
  1.2011 +		- 4 bytes containing the offset within the buffer to where the data will be written.
  1.2012 +		- 4 bytes containing the length of data to be written.
  1.2013 +
  1.2014 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.2015 +		*/
  1.2016 +		EPagingMediaMedDrvWriteBack,
  1.2017 +
  1.2018 +		/**
  1.2019 +		Event generated when a request to 'page in' data is put on hold because the Media Driver is performing some background
  1.2020 +		operation (not another request) and cannot service the request.
  1.2021 +
  1.2022 +		Trace data format:
  1.2023 +		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
  1.2024 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.2025 +
  1.2026 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.2027 +		*/
  1.2028 +		EPagingMediaMedDrvOnHold,
  1.2029 +
  1.2030 +		/**
  1.2031 +		Event generated by the Media Driver when the data read by a 'page out' request is read from the paging buffer.
  1.2032 +
  1.2033 +		Trace data format:
  1.2034 +		- 4 bytes containing a code describing the type of the media (one of TMediaDevice).
  1.2035 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.2036 +		- 4 bytes containing the linear address of the buffer to where the data is to be written.
  1.2037 +		- 4 bytes containing the offset within the buffer to where the data will be written.
  1.2038 +		- 4 bytes containing the length of data to be written.
  1.2039 +
  1.2040 +		The context id (NThread*) in this trace is that of the media driver thread that services this 'page in' request.
  1.2041 +		*/
  1.2042 +		EPagingMediaMedDrvRead,
  1.2043 +
  1.2044 +		/**
  1.2045 +		Event generated when a request to 'page out' data is received by the Local Media Subsystem.
  1.2046 +
  1.2047 +		Trace data format:
  1.2048 +		- 4 bytes containing the linear address of the buffer from where the data is to be read.
  1.2049 +		- 4 bytes containing the offset from start of the partition to where the data to be paged out resides.
  1.2050 +		- 4 bytes containing the number of bytes to be written to the media.
  1.2051 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.2052 +
  1.2053 +		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
  1.2054 +		*/
  1.2055 +		EPagingMediaLocMedPageOutBegin,
  1.2056 +
  1.2057 +		/**
  1.2058 +		Event generated when a request to mark an area of the swap file as deleted is received by the Local Media Subsystem.
  1.2059 +
  1.2060 +		Trace data format:
  1.2061 +		- 4 bytes containing NULL
  1.2062 +		- 4 bytes containing the offset from start of the partition to where the data to be paged out resides.
  1.2063 +		- 4 bytes containing the number of bytes to be marked as deleted
  1.2064 +		- 4 bytes containing the linear address in memory where this request object resides.
  1.2065 +
  1.2066 +		The context id (NThread*) in this trace is that of the thread that took the page fault that caused this event.
  1.2067 +		*/
  1.2068 +		EPagingMediaLocMedDeleteNotifyBegin,
  1.2069 +
  1.2070 +		};
  1.2071 +
  1.2072 +	/**
  1.2073 +	Enumeration of sub-category values for trace category EKernelMemory.
  1.2074 +	@see EKernelMemory
  1.2075 +	*/
  1.2076 +	enum TKernelMemory
  1.2077 +		{
  1.2078 +		/**
  1.2079 +		Event recorded during startup and prime which details the initial amount of free RAM.
  1.2080 +
  1.2081 +		Trace data format:
  1.2082 +		- 4 bytes containing the number of bytes of RAM the system started with.
  1.2083 +		*/
  1.2084 +		EKernelMemoryInitialFree,
  1.2085 +
  1.2086 +		/**
  1.2087 +		Event recorded during prime which records the then-current amount of free RAM.
  1.2088 +
  1.2089 +		Trace data format:
  1.2090 +		- 4 bytes containing the number of bytes of free RAM.
  1.2091 +		*/
  1.2092 +		EKernelMemoryCurrentFree,
  1.2093 +
  1.2094 +		/**
  1.2095 +		Event recorded when a miscellaneous kernel allocation is made. These include:
  1.2096 +		- Memory for MMU page table contents
  1.2097 +		- Memory for MMU SPageTableInfos
  1.2098 +		- Memory for shadow pages
  1.2099 +
  1.2100 +		Trace data format:
  1.2101 +		- 4 bytes containing the size, in bytes, of the allocation.
  1.2102 +		*/
  1.2103 +		EKernelMemoryMiscAlloc,
  1.2104 +
  1.2105 +		/**
  1.2106 +		Event recorded when a miscellaneous kernel allocation (see EKernelMemoryMiscAlloc
  1.2107 +		above) is freed.
  1.2108 +
  1.2109 +		Trace data format:
  1.2110 +		- 4 bytes containing the size, in bytes, of the freed allocation.
  1.2111 +		*/
  1.2112 +		EKernelMemoryMiscFree,
  1.2113 +
  1.2114 +		/**
  1.2115 +		The amount of memory reserved for the minimum demand paging cache. The *actual* DP cache
  1.2116 +		also uses free memory, only this minimum amount is permanently reserved for that purpose.
  1.2117 +		This event is recorded during prime and when the amount changes.
  1.2118 +
  1.2119 +		Trace data format:
  1.2120 +		- 4 bytes containing the minimum size, in bytes, of the demand paging cache.
  1.2121 +		*/
  1.2122 +		EKernelMemoryDemandPagingCache,
  1.2123 +
  1.2124 +		/**
  1.2125 +		Physically contiguous memory allocated by device drivers via one of:
  1.2126 +			Epoc::AllocPhysicalRam()
  1.2127 +			Epoc::ZoneAllocPhysicalRam()
  1.2128 +			Epoc::ClaimPhysicalRam()
  1.2129 +			TRamDefragRequest::ClaimRamZone()
  1.2130 +
  1.2131 +		Trace data format:
  1.2132 +		- 4 bytes containing the size of the allocated memory.
  1.2133 +		- 4 bytes containing the physical base address of allocated memory.
  1.2134 +
  1.2135 +		NB: The prime function logs a EKernelMemoryDrvPhysAlloc record where the physical
  1.2136 +		address is -1 and should be ignored.
  1.2137 +		*/
  1.2138 +		EKernelMemoryDrvPhysAlloc,
  1.2139 +
  1.2140 +		/**
  1.2141 +		Memory freed by device drivers via calls to all versions of
  1.2142 +		Epoc::FreePhysicalRam().
  1.2143 +
  1.2144 +		Trace data format:
  1.2145 +		- 4 bytes containing the size of the freed memory.
  1.2146 +		- 4 bytes containing the physical base address of freed memory.
  1.2147 +		*/
  1.2148 +		EKernelMemoryDrvPhysFree,
  1.2149 +		};
  1.2150 +
  1.2151 +	/**
  1.2152 +	Enumeration of sub-category values for trace category EHeap.
  1.2153 +	@see EHeap
  1.2154 +	*/
  1.2155 +	enum THeap
  1.2156 +		{
  1.2157 +		/**
  1.2158 +		Event recorded during process startup which logs the point of heap creation.
  1.2159 +
  1.2160 +		Trace data format:
  1.2161 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2162 +		- 2 bytes containing the size of header overhead, per allocation (0xFFFF indicates a variable size)
  1.2163 +		- 2 bytes containing the size of footer overhead, per allocation (0xFFFF indicates a variable size)
  1.2164 +		*/
  1.2165 +		EHeapCreate,
  1.2166 +
  1.2167 +		/**
  1.2168 +		Event recorded during process startup which details the chunk being used as a heap.
  1.2169 +
  1.2170 +		Trace data format:
  1.2171 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2172 +		- 4 bytes containing the chunk ID (The RHandleBase* of the chunk)
  1.2173 +		*/
  1.2174 +		EHeapChunkCreate,
  1.2175 +
  1.2176 +		/**
  1.2177 +		Event recorded when RHeap::Alloc() is called.
  1.2178 +
  1.2179 +		Trace data format:
  1.2180 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2181 +		- 4 bytes containing the address of the allocation
  1.2182 +		- 4 bytes containing the size of the allocation
  1.2183 +		- 4 bytes containing the requested size of allocation
  1.2184 +		*/
  1.2185 +		EHeapAlloc,
  1.2186 +
  1.2187 +		/**
  1.2188 +		Event recorded when RHeap::ReAlloc() is called.
  1.2189 +
  1.2190 +		Trace data format:
  1.2191 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2192 +		- 4 bytes containing the address of the new allocation
  1.2193 +		- 4 bytes containing the size of the allocation
  1.2194 +		- 4 bytes containing the requested size of allocation
  1.2195 +		- 4 bytes containing the address of the old allocation
  1.2196 +		*/
  1.2197 +		EHeapReAlloc,
  1.2198 +
  1.2199 +		/**
  1.2200 +		Event recorded when RHeap::Free() is called.
  1.2201 +
  1.2202 +		Trace data format:
  1.2203 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2204 +		- 4 bytes containing the address of the free'd allocation
  1.2205 +		*/
  1.2206 +		EHeapFree,
  1.2207 +
  1.2208 +		/**
  1.2209 +		Event recorded when RHeap::Alloc() fails.
  1.2210 +
  1.2211 +		Trace data format:
  1.2212 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2213 +		- 4 bytes containing the requested size of allocation
  1.2214 +		*/
  1.2215 +		EHeapAllocFail,
  1.2216 +
  1.2217 +		/**
  1.2218 +		Event recorded when RHeap::ReAlloc() fails.
  1.2219 +
  1.2220 +		Trace data format:
  1.2221 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2222 +		- 4 bytes containing the address of the old allocation
  1.2223 +		- 4 bytes containing the requested size of allocation
  1.2224 +		 */
  1.2225 +		EHeapReAllocFail,
  1.2226 +
  1.2227 +		/**
  1.2228 +		Event recorded when heap memory corruption occurs.
  1.2229 +
  1.2230 +		Trace data format:
  1.2231 +		- 4 bytes containing the heap ID (The RAllocator*)
  1.2232 +		- 4 bytes containing address of the corrupted memory block
  1.2233 +		- 4 bytes containing length of the corrupted memory block
  1.2234 +		*/
  1.2235 +		EHeapCorruption,
  1.2236 +
  1.2237 +		/**
  1.2238 +		Trace to provide additional heap debugging information.
  1.2239 +
  1.2240 +		This trace (if present) is generated by Symbian OS memory debug tools, and
  1.2241 +		will follow one of the other THeap events (e.g. EHeapAlloc, EHeapFree, etc.).
  1.2242 +		It is intended to provide a stack trace for the preceding heap event,
  1.2243 +		to indicate how the previous heap event was generated.
  1.2244 +
  1.2245 +		On many systems exact stack frames are not available, and the values
  1.2246 +		will be extracted from the stack using heuristics, so there may be some
  1.2247 +		spurious values and some missing values.
  1.2248 +
  1.2249 +		Trace data format:
  1.2250 +		- 4 bytes containing the heap ID (the RAllocator*)
  1.2251 +		- sequence of 4-byte PC values representing the call stack, with the top-most
  1.2252 +		  (most recent call) first.
  1.2253 +		*/
  1.2254 +		EHeapCallStack,
  1.2255 +		};
  1.2256 +
  1.2257 +	/**
  1.2258 +	Enumeration of sub-category values for trace category EMetaTrace.
  1.2259 +	@see EMetaTrace
  1.2260 +	*/
  1.2261 +	enum TMetaTrace
  1.2262 +		{
  1.2263 +		/**
  1.2264 +		Information about timestamps used for tracing.
  1.2265 +
  1.2266 +		Trace data format:
  1.2267 +		- 4 bytes containing the period of the Timestamp value.
  1.2268 +		- 4 bytes containing the period of the Timestamp2 value.
  1.2269 +		- 4 bytes containing a set of bit flags with the following meaning:
  1.2270 +			- Bit 0, if true, indicates that Timestamp and Timestamp2 are two halves
  1.2271 +			  of a single 64bit timestamp value; Timestamp2 is the most significant part.
  1.2272 +			- All other bits are presently undefined.
  1.2273 +
  1.2274 +		The format of the timestamp period data is a period in seconds given using an exponent and mantissa
  1.2275 +		format, where the most significant 8 bits are the signed power-of-two value for the exponent, and
  1.2276 +		the least significant 24 bits are the integer value of the mantissa. The binary point is to the right
  1.2277 +		of the least significant mantissa bit, and the mantissa may not be in normalised form.
  1.2278 +
  1.2279 +		Example code for decoding the period:
  1.2280 +		@code
  1.2281 +			TInt32 period; // value from trace record
  1.2282 +			int exponent = (signed char)(period>>24);
  1.2283 +			int mantissa = period&0xffffff;
  1.2284 +			double periodInSeconds = (double)mantissa*pow(2,exponent);
  1.2285 +		@endcode
  1.2286 +		*/
  1.2287 +		EMetaTraceTimestampsInfo,
  1.2288 +
  1.2289 +		/**
  1.2290 +		Trace indicating the start of a test case being measured.
  1.2291 +
  1.2292 +		Trace data format:
  1.2293 +		- 4 bytes containing measurement specific value.
  1.2294 +		- 4 bytes containing a further measurement specific value.
  1.2295 +		- Remaining data is ASCII text providing human readable information.
  1.2296 +		*/
  1.2297 +		EMetaTraceMeasurementStart,
  1.2298 +
  1.2299 +		/**
  1.2300 +		Trace indicating the end of a test case being measured.
  1.2301 +
  1.2302 +		Trace data format:
  1.2303 +		- 4 bytes containing measurement specific identifying value.
  1.2304 +		- 4 bytes containing a further measurement specific identifying value.
  1.2305 +
  1.2306 +		The values contained in this trace must be identical to those in the corresponding
  1.2307 +		ETraceInfoMeasurementStart trace.
  1.2308 +		*/
  1.2309 +		EMetaTraceMeasurementEnd,
  1.2310 +
  1.2311 +		/**
  1.2312 +		Trace indicating a change in state of the primary filter.
  1.2313 +
  1.2314 +		Trace data format:
  1.2315 +		- 1 byte containing a trace category number.
  1.2316 +		- 1 byte containing the new filter state for the category. (0=off, 1=on).
  1.2317 +		- 2 byte padding. (Should be output as zeros.)
  1.2318 +		*/
  1.2319 +		EMetaTraceFilterChange,
  1.2320 +		};
  1.2321 +
  1.2322 +	/**
  1.2323 +	Enumeration of sub-category values for trace category ERamAllocator.
  1.2324 +	@see BTrace::ERamAllocator
  1.2325 +	*/
  1.2326 +	enum TRamAllocator
  1.2327 +		{
  1.2328 +		/**
  1.2329 +		The number of RAM zones.
  1.2330 +
  1.2331 +		Trace data format:
  1.2332 +		- 4 bytes containing the number of RAM zones.
  1.2333 +		*/
  1.2334 +		ERamAllocZoneCount,
  1.2335 +
  1.2336 +		/**
  1.2337 +		Information on the layout of a RAM zone.
  1.2338 +
  1.2339 +		Trace data format:
  1.2340 +		- 4 bytes containing the number of pages in the zone
  1.2341 +		- 4 bytes containing the physical base address of the zone
  1.2342 +		- 4 bytes containing the ID of the zone
  1.2343 +		- 1 bytes containing the preference of the zone
  1.2344 +		- 1 bytes containing the flags of the zone
  1.2345 +		- 2 bytes reserved for future use
  1.2346 +		*/
  1.2347 +		ERamAllocZoneConfig,
  1.2348 +
  1.2349 +		/**
  1.2350 +		This trace is sent for every contiguous block of RAM that was allocated
  1.2351 +		during the kernel boot process.
  1.2352 +
  1.2353 +		Trace data format:
  1.2354 +		- 4 bytes containing the number of contiguous pages allocated for the block
  1.2355 +		- 4 bytes containing the physical base address of the block
  1.2356 +		*/
  1.2357 +		ERamAllocBootAllocation,
  1.2358 +
  1.2359 +
  1.2360 +		/**
  1.2361 +		This trace marks the end of the boot allocations
  1.2362 +
  1.2363 +		Trace data format:
  1.2364 +		- no extra bytes are sent
  1.2365 +		*/
  1.2366 +		ERamAllocBootAllocationEnd,
  1.2367 +
  1.2368 +		/**
  1.2369 +		Event generated when a RAM zone's flags have been modified
  1.2370 +		This could occur when a RAM zone is blocked/unblocked from further
  1.2371 +		allocations from all/certain page types.
  1.2372 +
  1.2373 +		Trace data format:
  1.2374 +		- 4 bytes containing the ID of the zone
  1.2375 +		- 4 bytes containing the flags of the zone
  1.2376 +		*/
  1.2377 +		ERamAllocZoneFlagsModified,
  1.2378 +
  1.2379 +		/**
  1.2380 +		Event generated when DRamAllocator::ClaimPhysicalRam has successfully
  1.2381 +		claimed the specified RAM pages.
  1.2382 +
  1.2383 +		Trace data format:
  1.2384 +		- 4 bytes containing the number of contiguous pages
  1.2385 +		- 4 bytes containing the base address of the pages
  1.2386 +		*/
  1.2387 +		ERamAllocClaimRam,
  1.2388 +
  1.2389 +		/**
  1.2390 +		Event generated when DRamAllocator::MarkPageAllocated has successfully
  1.2391 +		marked the specified page as allocated.
  1.2392 +
  1.2393 +		Trace data format:
  1.2394 +		- 4 bytes containing the TZonePageType type of the page
  1.2395 +		- 4 bytes containing the address of the page
  1.2396 +		*/
  1.2397 +		ERamAllocMarkAllocated,
  1.2398 +
  1.2399 +		/**
  1.2400 +		Event generated when DRamAllocator::AllocContiguousRam successfully
  1.2401 +		allocates the requested number of pages.
  1.2402 +
  1.2403 +		Trace data format:
  1.2404 +		- 4 bytes containing the TZonePageType type of the pages
  1.2405 +		- 4 bytes containing the number of contiguous pages
  1.2406 +		- 4 bytes containing the base address of the pages
  1.2407 +		*/
  1.2408 +		ERamAllocContiguousRam,
  1.2409 +
  1.2410 +		/**
  1.2411 +		Event generated when DRamAllocator::FreePage has successfully freed
  1.2412 +		the specified RAM page.
  1.2413 +
  1.2414 +		Trace data format:
  1.2415 +		- 4 bytes containing the TZonePageType type of the page
  1.2416 +		- 4 bytes containing the address of the page
  1.2417 +		*/
  1.2418 +		ERamAllocFreePage,
  1.2419 +
  1.2420 +		/**
  1.2421 +		Event generated when DRamAllocator::FreePhysical successfully freed
  1.2422 +		the specified RAM page(s).
  1.2423 +
  1.2424 +		Trace data format:
  1.2425 +		- 4 bytes containing the number of contiguous pages
  1.2426 +		- 4 bytes containing the base address of the pages
  1.2427 +		*/
  1.2428 +		ERamAllocFreePhysical,
  1.2429 +
  1.2430 +		/**
  1.2431 +		Event generated for each contiguous block of pages when
  1.2432 +		DRamAllocator::AllocRamPages or DRamAllocator::ZoneAllocRamPages
  1.2433 +		are attempting to fulfil a request.
  1.2434 +
  1.2435 +		Trace data format:
  1.2436 +		- 4 bytes containing the TZonePageType type of the pages
  1.2437 +		- 4 bytes containing the number of contiguous pages
  1.2438 +		- 4 bytes containing the base address of the pages
  1.2439 +		*/
  1.2440 +		ERamAllocRamPages,
  1.2441 +
  1.2442 +		/**
  1.2443 +		Event generated for contiguous block of pages when
  1.2444 +		DRamAllocator::FreeRamPages is invoked.
  1.2445 +
  1.2446 +		Trace data format:
  1.2447 +		- 4 bytes containing the TZonePageType type of the pages
  1.2448 +		- 4 bytes containing the number of contiguous pages
  1.2449 +		- 4 bytes containing the base address of the pages
  1.2450 +		*/
  1.2451 +		ERamAllocFreePages,
  1.2452 +
  1.2453 +		/**
  1.2454 +		Event generated when DRamAllocator::AllocRamPages has successfully
  1.2455 +		allocated all the requested number of RAM pages.  If DRamAllocator::AllocRamPages
  1.2456 +		couldn't allocate all the requested pages then this event is not generated.
  1.2457 +
  1.2458 +		Trace data format:
  1.2459 +		- no extra bytes sent
  1.2460 +		*/
  1.2461 +		ERamAllocRamPagesEnd,
  1.2462 +
  1.2463 +		/**
  1.2464 +		Event generated when all ERamAllocFreePages events for a particular
  1.2465 +		call of DRamAllocator::FreeRamPages have been generated.
  1.2466 +
  1.2467 +		Trace data format:
  1.2468 +		- no extra bytes sent
  1.2469 +		*/
  1.2470 +		ERamAllocFreePagesEnd,
  1.2471 +
  1.2472 +		/**
  1.2473 +		Event generated when DRamAllocator::ChangePageType is has successfully
  1.2474 +		updated the type of the specified page.
  1.2475 +
  1.2476 +		Trace data format:
  1.2477 +		- 4 bytes containing the new TZonePageType type of the page
  1.2478 +		- 4 bytes containing the physical address of the page
  1.2479 +		*/
  1.2480 +		ERamAllocChangePageType,
  1.2481 +
  1.2482 +		/**
  1.2483 +		Event generated when DRamAllocator::ZoneAllocContiguousRam has
  1.2484 +		successfully allocated the required number of pages.
  1.2485 +
  1.2486 +		Trace data format:
  1.2487 +		- 4 bytes containing the TZonePageType type of the pages
  1.2488 +		- 4 bytes containing the number of contiguous pages
  1.2489 +		- 4 bytes containing the base address of the pages
  1.2490 +		*/
  1.2491 +		ERamAllocZoneContiguousRam,
  1.2492 +
  1.2493 +		/**
  1.2494 +		Event generated when DRamAllocator::ZoneAllocRamPages has successfully
  1.2495 +		allocated all the requested RAM pages.  If DRamAllocator::ZoneAllocRamPages
  1.2496 +		couldn't allocate all the requested pages then this event is not generated.
  1.2497 +
  1.2498 +		Trace data format:
  1.2499 +		- no extra bytes sent
  1.2500 +		*/
  1.2501 +		ERamAllocZoneRamPagesEnd,
  1.2502 +
  1.2503 +		/**
  1.2504 +		Event generated when Epoc::ClaimRamZone has successfully claimed
  1.2505 +		the requested zone.
  1.2506 +
  1.2507 +		Trace data format:
  1.2508 +		- 4 bytes containing the ID of the zone that has been claimed.
  1.2509 +		*/
  1.2510 +		ERamAllocClaimZone,
  1.2511 +		};
  1.2512 +
  1.2513 +	enum TFastMutex
  1.2514 +		{
  1.2515 +		/**
  1.2516 +		Event generated when a thread acquires a fast mutex, (waits on it).
  1.2517 +
  1.2518 +		Trace data format:
  1.2519 +		- 4 bytes containing the fast mutex id, (an NFastMutex*).
  1.2520 +		*/
  1.2521 +		EFastMutexWait,
  1.2522 +
  1.2523 +		/**
  1.2524 +		Event generated when a thread releases a fast mutex, (signals it).
  1.2525 +
  1.2526 +		Trace data format:
  1.2527 +		- 4 bytes containing the fast mutex id, (an NFastMutex*).
  1.2528 +		*/
  1.2529 +		EFastMutexSignal,
  1.2530 +
  1.2531 +		/**
  1.2532 +		Event generated when a fast mutex is 'flashed' (signalled then immediately
  1.2533 +		waited on again). E.g the operation performed by NKern::FlashSystem.
  1.2534 +
  1.2535 +		Trace data format:
  1.2536 +		- 4 bytes containing the fast mutex id, (an NFastMutex*).
  1.2537 +		*/
  1.2538 +		EFastMutexFlash,
  1.2539 +
  1.2540 +		/**
  1.2541 +		Trace to associate a fast mutex with a textual name.
  1.2542 +
  1.2543 +		Trace data format:
  1.2544 +		- 4 bytes containing the fast mutex id, (an NFastMutex*).
  1.2545 +		- 4 bytes containing unspecified data (should be output as zero).
  1.2546 +		- Remaining data is the ASCII name for the fast mutex.
  1.2547 +		*/
  1.2548 +		EFastMutexName,
  1.2549 +
  1.2550 +		/**
  1.2551 +		Event generated when a thread blocks on a fast mutex.
  1.2552 +
  1.2553 +		Trace data format:
  1.2554 +		- 4 bytes containing the fast mutex id, (an NFastMutex*).
  1.2555 +		*/
  1.2556 +		EFastMutexBlock,
  1.2557 +		};
  1.2558 +
  1.2559 +	/**
  1.2560 +	Enumeration of sub-category values for trace category EProfiling.
  1.2561 +	@see BTrace::EProfiling
  1.2562 +	*/
  1.2563 +	enum TProfiling
  1.2564 +		{
  1.2565 +		/**
  1.2566 +		CPU sample including program counter and thread context.
  1.2567 +
  1.2568 +		Trace data format:
  1.2569 +		- 4 bytes containing the program counter.
  1.2570 +		- 4 bytes containing thread context (an NThread*).
  1.2571 +		*/
  1.2572 +		ECpuFullSample = 0,
  1.2573 +
  1.2574 +		/**
  1.2575 +		Optimised CPU sample including program counter.
  1.2576 +		Doesn't include a thread context id as it hasn't changed since
  1.2577 +		the last sample.
  1.2578 +
  1.2579 +		Trace data format:
  1.2580 +		- 4 bytes containing the program counter.
  1.2581 +		*/
  1.2582 +		ECpuOptimisedSample,
  1.2583 +
  1.2584 +		/**
  1.2585 +		CPU sample from iDFC including program counter.
  1.2586 +
  1.2587 +		Trace data format:
  1.2588 +		- 4 bytes containing the program counter.
  1.2589 +		*/
  1.2590 +		ECpuIdfcSample,
  1.2591 +
  1.2592 +		/**
  1.2593 +		CPU sample from non-Symbian thread.
  1.2594 +
  1.2595 +  		Trace data format:
  1.2596 +		- no extra bytes are sent
  1.2597 +		*/
  1.2598 +		ECpuNonSymbianThreadSample
  1.2599 +
  1.2600 +		};
  1.2601 +
  1.2602 +	/**
  1.2603 +	Enumeration of sub-category values for trace category ERawEvent.
  1.2604 +	@see BTrace::ERawEvent
  1.2605 +	*/
  1.2606 +	enum TRawEventTrace
  1.2607 +		{
  1.2608 +
  1.2609 +		/**
  1.2610 +		For all the set Functions in the TRawEvent class.
  1.2611 +		Trace Data Format Varies depends which of the Overloaded Set Method from where its set .
  1.2612 +		Trace data format:
  1.2613 +		if there are only one 4 byte data
  1.2614 +
  1.2615 +		--The Following oder is folloed for data.
  1.2616 +		- 4 bytes containing the event type
  1.2617 +
  1.2618 +		if there are 2*4 byte data
  1.2619 +		- 4 bytes containing the event type
  1.2620 +		- 4 bytes containing the scan code
  1.2621 +
  1.2622 +		if there are  3*4 byte data
  1.2623 +		- 4 bytes containing the event type
  1.2624 +		--4 bytes containining the X co-ordinate
  1.2625 +		--4 bytes containining the Y co-ordinate
  1.2626 +
  1.2627 +		if there are  4*4 byte data
  1.2628 +		- 4 bytes containing the event type
  1.2629 +		--4 bytes containining the X co-ordinate
  1.2630 +		--4 bytes containining the Y co-ordinate
  1.2631 +		--4 bytes containining the Z co-ordinate
  1.2632 +
  1.2633 +		if there are  5*4 byte data
  1.2634 +		- 4 bytes containing the event type
  1.2635 +		--4 bytes containining the X co-ordinate
  1.2636 +		--4 bytes containining the Y co-ordinate
  1.2637 +		--4 bytes containining the Z co-ordinate
  1.2638 +		--4 bytes containining the PointerNumber
  1.2639 +
  1.2640 +  		if there are  7*4 byte data
  1.2641 +		- 4 bytes containing the event type
  1.2642 +		--4 bytes containining the X co-ordinate
  1.2643 +		--4 bytes containining the Y co-ordinate
  1.2644 +		--4 bytes containining the Z co-ordinate
  1.2645 +		--4 bytes containining the Phi polar coordinate.
  1.2646 +		--4 bytes containining the Theta polar coordinate.
  1.2647 +		--4 bytes containining the rotation angle(alpha)
  1.2648 +		*/
  1.2649 +
  1.2650 +		ESetEvent = 1,
  1.2651 +
  1.2652 +		/**
  1.2653 +		For  user side SetTip Events
  1.2654 +		Trace data format:
  1.2655 +		- 4 bytes to state containing Tip Info.
  1.2656 +		*/
  1.2657 +		ESetTipEvent,
  1.2658 +
  1.2659 +		/**
  1.2660 +		For  SetTilt Events
  1.2661 +		Trace data format:
  1.2662 +		- 4 bytes containing the event type
  1.2663 +		--4 bytes containining the Phi polar coordinate.
  1.2664 +		--4 bytes containining the Theta polar coordinate.
  1.2665 +		*/
  1.2666 +		ESetTiltEvent,
  1.2667 +
  1.2668 +		/**
  1.2669 +		For  SetRotation Events
  1.2670 +		Trace data format:
  1.2671 +		- 4 bytes containing the event type
  1.2672 +		--4 bytes containining the rotation angle (alpha)
  1.2673 +		*/
  1.2674 +		ESetRotationtEvent,
  1.2675 +
  1.2676 +		/**
  1.2677 +		For  SetPointerNumber Events
  1.2678 +		Trace data format:
  1.2679 +		- 4 bytes containing the Pointer Number
  1.2680 +		*/
  1.2681 +		ESetPointerNumberEvent,
  1.2682 +
  1.2683 +		/**
  1.2684 +		For  user side addevents (User::AddEvent)
  1.2685 +		Trace data format:
  1.2686 +		- 4 bytes containing the event type
  1.2687 +		*/
  1.2688 +		EUserAddEvent,
  1.2689 +
  1.2690 +		/**
  1.2691 +		For  kernal side addevents (Kern::AddEvent)
  1.2692 +		Trace data format:
  1.2693 +		- 4 bytes containing the event type
  1.2694 +		*/
  1.2695 +		EKernelAddEvent
  1.2696 +		};
  1.2697 +
  1.2698 +	enum TSymbianKernelSync
  1.2699 +		{
  1.2700 +		/**
  1.2701 +		A semaphore (DSemaphore) has been created.
  1.2702 +
  1.2703 +		Trace data format:
  1.2704 +		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
  1.2705 +		- 4 bytes containing the owning DThread* or DProcess*
  1.2706 +		- Remaining data is the ASCII name of the semaphore.
  1.2707 +		*/
  1.2708 +		ESemaphoreCreate=0x00,
  1.2709 +
  1.2710 +		/**
  1.2711 +		A semaphore (DSemaphore) has been destroyed.
  1.2712 +
  1.2713 +		Trace data format:
  1.2714 +		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
  1.2715 +		*/
  1.2716 +		ESemaphoreDestroy=0x01,
  1.2717 +
  1.2718 +		/**
  1.2719 +		A semaphore (DSemaphore) has been acquired.
  1.2720 +
  1.2721 +		Trace data format:
  1.2722 +		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
  1.2723 +		*/
  1.2724 +		ESemaphoreAcquire=0x02,
  1.2725 +
  1.2726 +		/**
  1.2727 +		A semaphore (DSemaphore) has been released.
  1.2728 +
  1.2729 +		Trace data format:
  1.2730 +		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
  1.2731 +		*/
  1.2732 +		ESemaphoreRelease=0x03,
  1.2733 +
  1.2734 +		/**
  1.2735 +		A thread has blocked on a semaphore (DSemaphore)
  1.2736 +
  1.2737 +		Trace data format:
  1.2738 +		- 4 bytes containing trace id (a DSemaphore*) for this semaphore.
  1.2739 +		*/
  1.2740 +		ESemaphoreBlock=0x04,
  1.2741 +
  1.2742 +
  1.2743 +		/**
  1.2744 +		A mutex (DMutex) has been created.
  1.2745 +
  1.2746 +		Trace data format:
  1.2747 +		- 4 bytes containing trace id (a DMutex*) for this mutex.
  1.2748 +		- 4 bytes containing the owning DThread* or DProcess*
  1.2749 +		- Remaining data is the ASCII name of the mutex.
  1.2750 +		*/
  1.2751 +		EMutexCreate=0x10,
  1.2752 +
  1.2753 +		/**
  1.2754 +		A mutex (DMutex) has been destroyed.
  1.2755 +
  1.2756 +		Trace data format:
  1.2757 +		- 4 bytes containing trace id (a DMutex*) for this mutex.
  1.2758 +		*/
  1.2759 +		EMutexDestroy=0x11,
  1.2760 +
  1.2761 +		/**
  1.2762 +		A mutex (DMutex) has been acquired.
  1.2763 +
  1.2764 +		Trace data format:
  1.2765 +		- 4 bytes containing trace id (a DMutex*) for this mutex.
  1.2766 +		*/
  1.2767 +		EMutexAcquire=0x12,
  1.2768 +
  1.2769 +		/**
  1.2770 +		A mutex (DMutex) has been released.
  1.2771 +
  1.2772 +		Trace data format:
  1.2773 +		- 4 bytes containing trace id (a DMutex*) for this mutex.
  1.2774 +		*/
  1.2775 +		EMutexRelease=0x13,
  1.2776 +
  1.2777 +		/**
  1.2778 +		A thread has blocked on a mutex (DMutex)
  1.2779 +
  1.2780 +		Trace data format:
  1.2781 +		- 4 bytes containing trace id (a DMutex*) for this mutex.
  1.2782 +		*/
  1.2783 +		EMutexBlock=0x14,
  1.2784 +
  1.2785 +
  1.2786 +		/**
  1.2787 +		A condition variable (DCondVar) has been created.
  1.2788 +
  1.2789 +		Trace data format:
  1.2790 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2791 +		- 4 bytes containing the owning DThread* or DProcess*
  1.2792 +		- Remaining data is the ASCII name of the condition variable.
  1.2793 +		*/
  1.2794 +		ECondVarCreate=0x20,
  1.2795 +
  1.2796 +		/**
  1.2797 +		A condition variable (DCondVar) has been destroyed.
  1.2798 +
  1.2799 +		Trace data format:
  1.2800 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2801 +		*/
  1.2802 +		ECondVarDestroy=0x21,
  1.2803 +
  1.2804 +		/**
  1.2805 +		A thread has blocked on a condition variable (DCondVar)
  1.2806 +
  1.2807 +		Trace data format:
  1.2808 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2809 +		- 4 bytes containing trace id (DMutex*) for the associated mutex.
  1.2810 +		*/
  1.2811 +		ECondVarBlock=0x22,
  1.2812 +
  1.2813 +		/**
  1.2814 +		A thread has been released from a condition variable (DCondVar) wait
  1.2815 +
  1.2816 +		Trace data format:
  1.2817 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2818 +		- 4 bytes containing trace id (DMutex*) for the associated mutex.
  1.2819 +		*/
  1.2820 +		ECondVarWakeUp=0x23,
  1.2821 +
  1.2822 +		/**
  1.2823 +		A condition variable (DCondVar) has been signalled
  1.2824 +
  1.2825 +		Trace data format:
  1.2826 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2827 +		- 4 bytes containing trace id (DMutex*) for the associated mutex.
  1.2828 +		*/
  1.2829 +		ECondVarSignal=0x24,
  1.2830 +
  1.2831 +		/**
  1.2832 +		A condition variable (DCondVar) has been signalled in broadcast mode.
  1.2833 +
  1.2834 +		Trace data format:
  1.2835 +		- 4 bytes containing trace id (a DCondVar*) for this condition variable.
  1.2836 +		- 4 bytes containing trace id (DMutex*) for the associated mutex.
  1.2837 +		*/
  1.2838 +		ECondVarBroadcast=0x25,
  1.2839 +
  1.2840 +		};
  1.2841 +
  1.2842 +	enum TFlexibleMemModel
  1.2843 +		{
  1.2844 +		/**
  1.2845 +		A memory object has been created.
  1.2846 +
  1.2847 +		Trace data format:
  1.2848 +		- 4 bytes containing the memory object id (DMemoryObject*).
  1.2849 +		- 4 bytes containing the size of the memory in pages.
  1.2850 +		*/
  1.2851 +		EMemoryObjectCreate,
  1.2852 +
  1.2853 +		/**
  1.2854 +		A memory object has been destroyed.
  1.2855 +
  1.2856 +		Trace data format:
  1.2857 +		- 4 bytes containing the memory object id (DMemoryObject*).
  1.2858 +		*/
  1.2859 +		EMemoryObjectDestroy,
  1.2860 +
  1.2861 +		/**
  1.2862 +		A memory mapping has been created.
  1.2863 +
  1.2864 +		Trace data format:
  1.2865 +		- 4 bytes containing the memory mapping id (DMemoryMapping*).
  1.2866 +		- 4 bytes containing the memory object id (DMemoryObject*).
  1.2867 +		- 4 bytes containing the offset of the mapping into the memory object, in pages
  1.2868 +		- 4 bytes containing the size of the mapping in pages
  1.2869 +		- 2 bytes containing the ASID
  1.2870 +		- 2 spare bytes, currently zero
  1.2871 +		- 4 bytes containing the virtual address the mapping
  1.2872 +		*/
  1.2873 +		EMemoryMappingCreate,
  1.2874 +
  1.2875 +		/**
  1.2876 +		A memory mapping has been destroyed.
  1.2877 +
  1.2878 +		Trace data format:
  1.2879 +		- 4 bytes containing the memory mapping id (DMemoryMapping*).
  1.2880 +		*/
  1.2881 +		EMemoryMappingDestroy,
  1.2882 +
  1.2883 +		// The following traces associate memory model objects with the kernel objects that use them
  1.2884 +
  1.2885 +		/**
  1.2886 +	    A memory object is being used for the contents of a chunk.
  1.2887 +
  1.2888 +		Trace data format:
  1.2889 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2890 +		- 4 bytes containing the chunk id (a DChunk*)
  1.2891 +		*/
  1.2892 +		EMemoryObjectIsChunk,
  1.2893 +
  1.2894 +		/**
  1.2895 +	    A memory object is being used for the contents of a code segment.
  1.2896 +
  1.2897 +		Trace data format:
  1.2898 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2899 +		- 4 bytes containing the code segment id (a DCodeSeg*)
  1.2900 +		*/
  1.2901 +		EMemoryObjectIsCodeSeg,
  1.2902 +
  1.2903 +		/**
  1.2904 +	    A memory object is being used for process static data.
  1.2905 +
  1.2906 +		Trace data format:
  1.2907 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2908 +		- 4 bytes containing the process id (a DProcess*)
  1.2909 +		*/
  1.2910 +		EMemoryObjectIsProcessStaticData,
  1.2911 +
  1.2912 +		/**
  1.2913 +	    A memory object is being used for DLL static data.
  1.2914 +
  1.2915 +		Trace data format:
  1.2916 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2917 +		- 4 bytes containing the code segment id (a DCodeSeg*)
  1.2918 +		- 4 bytes containing the process id (a DProcess*)
  1.2919 +		*/
  1.2920 +		EMemoryObjectIsDllStaticData,
  1.2921 +
  1.2922 +		/**
  1.2923 +	    A memory object is being used for a thread's supervisor stack.
  1.2924 +
  1.2925 +		Trace data format:
  1.2926 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2927 +		- 4 bytes containing the thread id (a DThread*)
  1.2928 +		*/
  1.2929 +		EMemoryObjectIsSupervisorStack,
  1.2930 +
  1.2931 +		/**
  1.2932 +	    A memory object is being used for a thread's user stack.
  1.2933 +
  1.2934 +		Trace data format:
  1.2935 +		- 4 bytes containing the memory object id (a DMemoryObject*).
  1.2936 +		- 4 bytes containing the thread id (a DThread*)
  1.2937 +		*/
  1.2938 +		EMemoryObjectIsUserStack,
  1.2939 +
  1.2940 +		/**
  1.2941 +		Identifies the Address Space ID (ASID) used for a process.
  1.2942 +
  1.2943 +		Trace data format:
  1.2944 +		- 4 bytes containing the process id (a DProcess*)
  1.2945 +		- 2 bytes containing the ASID
  1.2946 +		- 2 spare bytes, currently zero
  1.2947 +		*/
  1.2948 +		EAddressSpaceId
  1.2949 +		};
  1.2950 +
  1.2951 +    /**
  1.2952 +	Enumeration of sub-category values for trace category EIic.
  1.2953 +	@see EIic
  1.2954 +    @prototype 9.6
  1.2955 +	*/
  1.2956 +	enum TIic
  1.2957 +		{
  1.2958 +		/**
  1.2959 +		Trace output for the invocation by the PSL of registering an array of pointers to channels with the IIC bus controller.
  1.2960 +
  1.2961 +		Trace data format:
  1.2962 +		- 4 bytes containing the address of the array
  1.2963 +		- 4 bytes containing the number of channels in the array
  1.2964 +		*/
  1.2965 +		ERegisterChansStartPsl = 0,
  1.2966 +
  1.2967 +		/**
  1.2968 +		Trace output for the start of the PIL registering an array of pointers to channels with the IIC bus controller.
  1.2969 +
  1.2970 +		Trace data format:
  1.2971 +		- 4 bytes containing the address of the array
  1.2972 +		- 4 bytes containing the number of channels in the array
  1.2973 +		- 4 bytes containing the number of channels registered with the controller prior to this point
  1.2974 +		*/
  1.2975 +		ERegisterChansStartPil = 1,
  1.2976 +
  1.2977 +		/**
  1.2978 +		Trace output for the end of the PIL registering an array of pointers to channels with the IIC bus controller.
  1.2979 +
  1.2980 +		Trace data format:
  1.2981 +		- 4 bytes containing the address of the array
  1.2982 +		- 4 bytes containing the number of channels now registered with the controller
  1.2983 +		*/
  1.2984 +		ERegisterChansEndPil = 2,
  1.2985 +
  1.2986 +		/**
  1.2987 +		Trace output for the end of the PSL registering an array of pointers to channels with the IIC bus controller.
  1.2988 +
  1.2989 +		Trace data format:
  1.2990 +		- 4 bytes containing the address of the array
  1.2991 +		- 4 bytes containing the number of channels in the array
  1.2992 +		- 4 bytes containing the error code returned by the IIC bus controller
  1.2993 +		*/
  1.2994 +		ERegisterChansEndPsl = 3,
  1.2995 +
  1.2996 +		/**
  1.2997 +		Trace output for the start of the PSL de-registering a channel with the IIC bus controller.
  1.2998 +
  1.2999 +		Trace data format:
  1.3000 +		- 4 bytes containing the address of the channel
  1.3001 +		*/
  1.3002 +		EDeRegisterChanStartPsl = 4,
  1.3003 +
  1.3004 +		/**
  1.3005 +		Trace output for the start of the PIL de-registering a channel with the IIC bus controller.
  1.3006 +
  1.3007 +		Trace data format:
  1.3008 +		- 4 bytes containing the address of the channel
  1.3009 +		- 4 bytes containing the number of channels registered with the controller prior to this point
  1.3010 +		*/
  1.3011 +		EDeRegisterChanStartPil = 5,
  1.3012 +
  1.3013 +		/**
  1.3014 +		Trace output for the end of the PSL de-registering a channel with the IIC bus controller.
  1.3015 +
  1.3016 +		Trace data format:
  1.3017 +		- 4 bytes containing the address of the channel
  1.3018 +		- 4 bytes containing the number of channels now registered with the controller
  1.3019 +		*/
  1.3020 +		EDeRegisterChanEndPil = 6,
  1.3021 +
  1.3022 +		/**
  1.3023 +		Trace output for the end of the PSL de-registering a channel with the IIC bus controller.
  1.3024 +
  1.3025 +		Trace data format:
  1.3026 +		- 4 bytes containing the address of the channel
  1.3027 +		- 4 bytes containing the error code returned by the IIC bus controller
  1.3028 +		*/
  1.3029 +		EDeRegisterChanEndPsl = 7,
  1.3030 +
  1.3031 +		/**
  1.3032 +		Trace output for the start of a synchronous queue transaction request in the PIL.
  1.3033 +
  1.3034 +		Trace data format:
  1.3035 +		- 4 bytes containing the bus realisation variability token
  1.3036 +		- 4 bytes containing the pointer to the transaction object
  1.3037 +		*/
  1.3038 +		EMQTransSyncStartPil = 8,
  1.3039 +
  1.3040 +		/**
  1.3041 +		Trace output for the end of a synchronous queue transaction request in the PIL.
  1.3042 +
  1.3043 +		Trace data format:
  1.3044 +		- 4 bytes containing the bus realisation variability token
  1.3045 +		- 4 bytes containing the error code returned by the controller
  1.3046 +		*/
  1.3047 +		EMQTransSyncEndPil = 9,
  1.3048 +
  1.3049 +		/**
  1.3050 +		Trace output for the start of a synchronous queue transaction request in the PIL.
  1.3051 +
  1.3052 +		Trace data format:
  1.3053 +		- 4 bytes containing the bus realisation variability token
  1.3054 +		- 4 bytes containing the pointer to the transaction object
  1.3055 +		- 4 bytes containing the pointer to the callback object
  1.3056 +		*/
  1.3057 +		EMQTransAsyncStartPil = 10,
  1.3058 +
  1.3059 +		/**
  1.3060 +		Trace output for the end of a synchronous queue transaction request in the PIL.
  1.3061 +
  1.3062 +		Trace data format:
  1.3063 +		- 4 bytes containing the bus realisation variability token
  1.3064 +		- 4 bytes containing the error code returned by the controller
  1.3065 +		*/
  1.3066 +		EMQTransAsyncEndPil = 11,
  1.3067 +
  1.3068 +		/**
  1.3069 +		Trace output for the start of cancelling an asynchronous queue transaction request in the PIL.
  1.3070 +
  1.3071 +		Trace data format:
  1.3072 +		- 4 bytes containing the bus realisation variability token
  1.3073 +		- 4 bytes containing the pointer to the transaction object
  1.3074 +		*/
  1.3075 +		EMCancelTransStartPil = 12,
  1.3076 +
  1.3077 +		/**
  1.3078 +		Trace output for the end of cancelling an asynchronous queue transaction request in the PIL.
  1.3079 +
  1.3080 +		Trace data format:
  1.3081 +		- 4 bytes containing the pointer to the transaction object
  1.3082 +		- 4 bytes containing the error code returned by the controller
  1.3083 +		*/
  1.3084 +		EMCancelTransEndPil = 13,
  1.3085 +
  1.3086 +		/**
  1.3087 +		Trace output for the start of processing a transaction request in the PIL.
  1.3088 +
  1.3089 +		Trace data format:
  1.3090 +		- 4 bytes containing the address of the channel
  1.3091 +		- 4 bytes containing the pointer to the transaction object
  1.3092 +		*/
  1.3093 +		EMProcessTransStartPil = 14,
  1.3094 +
  1.3095 +		/**
  1.3096 +		Trace output for the start of processing a transaction request in the PSL.
  1.3097 +
  1.3098 +		Trace data format:
  1.3099 +		- 4 bytes containing the pointer to the transaction object
  1.3100 +		*/
  1.3101 +		EMProcessTransStartPsl = 15,
  1.3102 +
  1.3103 +		/**
  1.3104 +		Trace output for the end of processing a transaction request in the PSL.
  1.3105 +
  1.3106 +		Trace data format:
  1.3107 +		- 4 bytes containing the result code
  1.3108 +		*/
  1.3109 +		EMProcessTransEndPsl = 16,
  1.3110 +
  1.3111 +		/**
  1.3112 +		Trace output for the end of processing a transaction request in the PIL.
  1.3113 +
  1.3114 +		Trace data format:
  1.3115 +		- 4 bytes containing the address of the channel
  1.3116 +		- 4 bytes containing the pointer to the transaction object
  1.3117 +		- 4 bytes containing the result code
  1.3118 +		- 4 bytes containing the pointer to the client callback object
  1.3119 +		*/
  1.3120 +		EMProcessTransEndPil = 17,
  1.3121 +
  1.3122 +		/**
  1.3123 +		Trace output for the start of synchronously capturing a Slave channel in the PIL.
  1.3124 +
  1.3125 +		Trace data format:
  1.3126 +		- 4 bytes containing the bus realisation variability
  1.3127 +		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
  1.3128 +		*/
  1.3129 +		ESCaptChanSyncStartPil = 18,
  1.3130 +
  1.3131 +		/**
  1.3132 +		Trace output for the start of synchronously capturing a Slave channel in the PSL.
  1.3133 +
  1.3134 +		Trace data format:
  1.3135 +		- 4 bytes containing the address of the channel
  1.3136 +		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
  1.3137 +		*/
  1.3138 +		ESCaptChanSyncStartPsl = 19,
  1.3139 +
  1.3140 +		/**
  1.3141 +		Trace output for the end of synchronously capturing a Slave channel in the PSL.
  1.3142 +
  1.3143 +		Trace data format:
  1.3144 +		- 4 bytes containing the address of the channel
  1.3145 +		- 4 bytes containing the result code
  1.3146 +		*/
  1.3147 +		ESCaptChanSyncEndPsl = 20,
  1.3148 +
  1.3149 +		/**
  1.3150 +		Trace output for the end of synchronously capturing a Slave channel in the PIL.
  1.3151 +
  1.3152 +		Trace data format:
  1.3153 +		- 4 bytes containing the bus realisation variability
  1.3154 +		- 4 bytes containing the platform-specific cookie that uniquely identifies the channel
  1.3155 +		- 4 bytes containing the result code
  1.3156 +		*/
  1.3157 +		ESCaptChanSyncEndPil = 21,
  1.3158 +
  1.3159 +		/**
  1.3160 +		Trace output for the start of asynchronously capturing a Slave channel in the PIL.
  1.3161 +
  1.3162 +		Trace data format:
  1.3163 +		- 4 bytes containing the bus realisation variability
  1.3164 +		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
  1.3165 +		- 4 bytes containing the pointer to the client callback object
  1.3166 +		*/
  1.3167 +		ESCaptChanASyncStartPil = 22,
  1.3168 +
  1.3169 +		/**
  1.3170 +		Trace output for the start of asynchronously capturing a Slave channel in the PSL.
  1.3171 +
  1.3172 +		Trace data format:
  1.3173 +		- 4 bytes containing a pointer to the channel object
  1.3174 +		- 4 bytes containing a pointer to device specific configuration option applicable to all transactions
  1.3175 +		*/
  1.3176 +		ESCaptChanASyncStartPsl = 23,
  1.3177 +
  1.3178 +		/**
  1.3179 +		Trace output for the end of asynchronously capturing a Slave channel in the PSL.
  1.3180 +
  1.3181 +		Trace data format:
  1.3182 +		- 4 bytes containing a pointer to the channel object
  1.3183 +		- 4 bytes containing the result code
  1.3184 +		*/
  1.3185 +		ESCaptChanASyncEndPsl = 24,
  1.3186 +
  1.3187 +		/**
  1.3188 +		Trace output for the end of asynchronously capturing a Slave channel in the PIL.
  1.3189 +
  1.3190 +		Trace data format:
  1.3191 +		- 4 bytes containing a pointer to the channel object
  1.3192 +		- 4 bytes containing the result code
  1.3193 +		*/
  1.3194 +		ESCaptChanASyncEndPil = 25,
  1.3195 +
  1.3196 +		/**
  1.3197 +		Trace output for the start of releasing a Slave channel in the PIL.
  1.3198 +
  1.3199 +		Trace data format:
  1.3200 +		- 4 bytes containing the channel identifier cookie
  1.3201 +		*/
  1.3202 +		ESRelChanStartPil = 26,
  1.3203 +
  1.3204 +		/**
  1.3205 +		Trace output for the start of releasing a Slave channel in the PSL.
  1.3206 +
  1.3207 +		Trace data format:
  1.3208 +		- 4 bytes containing a pointer to the channel object
  1.3209 +		*/
  1.3210 +		ESRelChanStartPsl = 27,
  1.3211 +
  1.3212 +		/**
  1.3213 +		Trace output for the end of releasing a Slave channel in the PSL.
  1.3214 +
  1.3215 +		Trace data format:
  1.3216 +		- 4 bytes containing a pointer to the channel object
  1.3217 +		- 4 bytes containing the result code
  1.3218 +		*/
  1.3219 +		ESRelChanEndPsl = 28,
  1.3220 +
  1.3221 +		/**
  1.3222 +		Trace output for the end of releasing a Slave channel in the PIL.
  1.3223 +
  1.3224 +		Trace data format:
  1.3225 +		- 4 bytes containing the channel identifier cookie
  1.3226 +		- 4 bytes containing the result code
  1.3227 +		*/
  1.3228 +		ESRelChanEndPil = 29,
  1.3229 +
  1.3230 +		/**
  1.3231 +		Trace output for the start of registering an Rx buffer for a Slave channel in the PIL.
  1.3232 +
  1.3233 +		Trace data format:
  1.3234 +		- 4 bytes containing a pointer to the receive buffer
  1.3235 +		- 4 bytes containing the number of buffer bytes used to store a word.
  1.3236 +		- 4 bytes containing the number of words expected to be received.
  1.3237 +		- 4 bytes containing offset from the start of the buffer where to store the received data.
  1.3238 +		*/
  1.3239 +		ESRegRxBufStartPil = 30,
  1.3240 +
  1.3241 +		/**
  1.3242 +		Trace output for the start of registering an Rx buffer for a Slave channel in the PSL.
  1.3243 +
  1.3244 +		Trace data format:
  1.3245 +		- 4 bytes containing a pointer to the channel object
  1.3246 +		- 4 bytes containing a pointer to the receive buffer
  1.3247 +		- 4 bytes containing the number of buffer bytes used to store a word.
  1.3248 +		- 4 bytes containing the number of words expected to be received.
  1.3249 +		- 4 bytes containing offset from the start of the buffer where to store the received data.
  1.3250 +		*/
  1.3251 +		ESRegRxBufStartPsl = 31,
  1.3252 +
  1.3253 +		/**
  1.3254 +		Trace output for the end of registering an Rx buffer for a Slave channel in the PSL.
  1.3255 +
  1.3256 +		Trace data format:
  1.3257 +		- 4 bytes containing a pointer to the channel object
  1.3258 +		- 4 bytes containing the result code
  1.3259 +		*/
  1.3260 +		ESRegRxBufEndPsl = 32,
  1.3261 +
  1.3262 +		/**
  1.3263 +		Trace output for the end of registering an Rx buffer for a Slave channel in the PIL.
  1.3264 +
  1.3265 +		Trace data format:
  1.3266 +		- 4 bytes containing the result code
  1.3267 +		*/
  1.3268 +		ESRegRxBufEndPil = 33,
  1.3269 +
  1.3270 +		/**
  1.3271 +		Trace output for the start of registering an Tx buffer for a Slave channel in the PIL.
  1.3272 +
  1.3273 +		Trace data format:
  1.3274 +		- 4 bytes containing a pointer to the transmit buffer
  1.3275 +		- 4 bytes containing the number of buffer bytes used to store a word.
  1.3276 +		- 4 bytes containing the number of words expected to be transmitted.
  1.3277 +		- 4 bytes containing offset from the start of the buffer from where to transmit data.
  1.3278 +		*/
  1.3279 +		ESRegTxBufStartPil = 34,
  1.3280 +
  1.3281 +		/**
  1.3282 +		Trace output for the start of registering an Tx buffer for a Slave channel in the PSL.
  1.3283 +
  1.3284 +		Trace data format:
  1.3285 +		- 4 bytes containing a pointer to the channel object
  1.3286 +		- 4 bytes containing a pointer to the transmit buffer
  1.3287 +		- 4 bytes containing the number of buffer bytes used to store a word.
  1.3288 +		- 4 bytes containing the number of words expected to be transmitted.
  1.3289 +		- 4 bytes containing offset from the start of the buffer from where to transmit data.
  1.3290 +		*/
  1.3291 +		ESRegTxBufStartPsl = 35,
  1.3292 +
  1.3293 +		/**
  1.3294 +		Trace output for the end of registering an Tx buffer for a Slave channel in the PSL.
  1.3295 +
  1.3296 +		Trace data format:
  1.3297 +		- 4 bytes containing a pointer to the channel object
  1.3298 +		- 4 bytes containing the result code
  1.3299 +		*/
  1.3300 +		ESRegTxBufEndPsl = 36,
  1.3301 +
  1.3302 +		/**
  1.3303 +		Trace output for the start of setting a notification for a Slave channel in the PIL.
  1.3304 +
  1.3305 +		Trace data format:
  1.3306 +		- 4 bytes containing the result code
  1.3307 +		*/
  1.3308 +		ESRegTxBufEndPil = 37,
  1.3309 +
  1.3310 +		/**
  1.3311 +		Trace output for the start of setting a notification for a Slave channel in the PIL.
  1.3312 +
  1.3313 +		Trace data format:
  1.3314 +		- 4 bytes containing the channel identifier cookie
  1.3315 +		- 4 bytes containing the trigger value
  1.3316 +		*/
  1.3317 +		ESNotifTrigStartPil = 38,
  1.3318 +
  1.3319 +		/**
  1.3320 +		Trace output for the start of setting a notification for a Slave channel in the PSL.
  1.3321 +		
  1.3322 +		Trace data format:
  1.3323 +		- 4 bytes containing the trigger value
  1.3324 +		*/
  1.3325 +		ESNotifTrigStartPsl = 39,
  1.3326 +
  1.3327 +		/**
  1.3328 +		Trace output for the end of setting a notification for a Slave channel in the PSL.
  1.3329 +		
  1.3330 +		Trace data format:
  1.3331 +		- 4 bytes containing the result code
  1.3332 +		*/
  1.3333 +		ESNotifTrigEndPsl = 40,
  1.3334 +
  1.3335 +		/**
  1.3336 +		Trace output for the end of setting a notification for a Slave channel in the PIL.
  1.3337 +
  1.3338 +		Trace data format:
  1.3339 +		- 4 bytes containing the channel identifier cookie
  1.3340 +		- 4 bytes containing the result code
  1.3341 +		*/
  1.3342 +		ESNotifTrigEndPil = 41,
  1.3343 +
  1.3344 +		/**
  1.3345 +		Trace output for the start of a StaticExtension operaton for a MasterSlave channel in the PIL.
  1.3346 +
  1.3347 +		Trace data format:
  1.3348 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3349 +		- 4 bytes containing a function identifier
  1.3350 +		- 4 bytes containing an argument to be passed to the function
  1.3351 +		- 4 bytes containing an argument to be passed to the function
  1.3352 +		*/
  1.3353 +		EMSStatExtStartPil = 42,
  1.3354 +
  1.3355 +		/**
  1.3356 +		Trace output for the end of a StaticExtension operation for a MasterSlave channel in the PIL.
  1.3357 +
  1.3358 +		Trace data format:
  1.3359 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3360 +		- 4 bytes containing a function identifier
  1.3361 +		- 4 bytes containing the result code
  1.3362 +		*/
  1.3363 +		EMSStatExtEndPil = 43,
  1.3364 +
  1.3365 +		/**
  1.3366 +		Trace output for the start of a StaticExtension operation for a Master channel in the PIL.
  1.3367 +
  1.3368 +		Trace data format:
  1.3369 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3370 +		- 4 bytes containing a function identifier
  1.3371 +		- 4 bytes containing an argument to be passed to the function
  1.3372 +		- 4 bytes containing an argument to be passed to the function
  1.3373 +		*/
  1.3374 +		EMStatExtStartPil = 44,
  1.3375 +
  1.3376 +		/**
  1.3377 +		Trace output for the start of a StaticExtension operation for a Master channel in the PSL.
  1.3378 +
  1.3379 +		Trace data format:
  1.3380 +		- 4 bytes containing a pointer to the channel object
  1.3381 +		- 4 bytes containing a function identifier
  1.3382 +		- 4 bytes containing an argument to be passed to the function
  1.3383 +		- 4 bytes containing an argument to be passed to the function
  1.3384 +		*/
  1.3385 +		EMStatExtStartPsl = 45,
  1.3386 +
  1.3387 +		/**
  1.3388 +		Trace output for the end of a StaticExtension operation for a Master channel in the PSL.
  1.3389 +
  1.3390 +		Trace data format:
  1.3391 +		- 4 bytes containing a pointer to the channel object
  1.3392 +		- 4 bytes containing a function identifier
  1.3393 +		- 4 bytes containing the result code
  1.3394 +		*/
  1.3395 +		EMStatExtEndPsl = 46,
  1.3396 +
  1.3397 +		/**
  1.3398 +		Trace output for the end of a StaticExtension operation for a Master channel in the PIL.
  1.3399 +
  1.3400 +		Trace data format:
  1.3401 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3402 +		- 4 bytes containing a function identifier
  1.3403 +		- 4 bytes containing the result code
  1.3404 +		*/
  1.3405 +		EMStatExtEndPil = 47,
  1.3406 +
  1.3407 +		/**
  1.3408 +		Trace output for the start of a StaticExtension operation for a Slave channel in the PIL.
  1.3409 +
  1.3410 +		Trace data format:
  1.3411 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3412 +		- 4 bytes containing a function identifier
  1.3413 +		- 4 bytes containing an argument to be passed to the function
  1.3414 +		- 4 bytes containing an argument to be passed to the function
  1.3415 +		*/
  1.3416 +		ESStatExtStartPil = 48,
  1.3417 +
  1.3418 +		/**
  1.3419 +		Trace output for the start of a StaticExtension operation for a Slave channel in the PSL.
  1.3420 +
  1.3421 +		Trace data format:
  1.3422 +		- 4 bytes containing a pointer to the channel object
  1.3423 +		- 4 bytes containing a function identifier
  1.3424 +		- 4 bytes containing an argument to be passed to the function
  1.3425 +		- 4 bytes containing an argument to be passed to the function
  1.3426 +		*/
  1.3427 +		ESStatExtStartPsl = 49,
  1.3428 +
  1.3429 +		/**
  1.3430 +		Trace output for the end of a StaticExtension operation for a Slave channel in the PSL.
  1.3431 +
  1.3432 +		Trace data format:
  1.3433 +		- 4 bytes containing a pointer to the channel object
  1.3434 +		- 4 bytes containing a function identifier
  1.3435 +		- 4 bytes containing the result code
  1.3436 +		*/
  1.3437 +		ESStatExtEndPsl = 50,
  1.3438 +		/**
  1.3439 +		Trace output for the end of a StaticExtension operation for a Slave channel in the PIL.
  1.3440 +
  1.3441 +		Trace data format:
  1.3442 +		- 4 bytes containing a token containing the bus realisation variability or the channel identifier cookie for this client.
  1.3443 +		- 4 bytes containing a function identifier
  1.3444 +		- 4 bytes containing the result code
  1.3445 +		*/
  1.3446 +		ESStatExtEndPil = 51
  1.3447 +		};
  1.3448 +
  1.3449 +	/**
  1.3450 +	Calculate the address of the next trace record.
  1.3451 +	@param aCurrentRecord A pointer to a trace record.
  1.3452 +	@return The address of the trace record which follows aCurrentRecord.
  1.3453 +	*/
  1.3454 +	inline static TUint8* NextRecord(TAny* aCurrentRecord);
  1.3455 +
  1.3456 +#ifdef __KERNEL_MODE__
  1.3457 +
  1.3458 +	/**
  1.3459 +	Create initial trace output required for the specified trace category.
  1.3460 +	E.g. For the EThreadIdentification category, this will cause traces which identify
  1.3461 +	all threads already in existence at this point.
  1.3462 +
  1.3463 +	@aCategory The trace category, or -1 to indicate all trace categories.
  1.3464 +
  1.3465 +	@publishedPartner
  1.3466 +	@released
  1.3467 +	*/
  1.3468 +	IMPORT_C static void Prime(TInt aCategory=-1);
  1.3469 +
  1.3470 +	/**
  1.3471 +	Prototype for function which is called to output trace records.
  1.3472 +	I.e. as set by SetHandler().
  1.3473 +
  1.3474 +	The handler function should output all values which are appropriate for the
  1.3475 +	trace as specified in aHeader.
  1.3476 +
  1.3477 +	@param aHeader	The 4 bytes for the trace header.
  1.3478 +	@param aHeader2	The second header word.
  1.3479 +					(If EHeader2Present is set in the header flags.)
  1.3480 +	@param aContext	The context id.
  1.3481 +					(If EContextIdPresent is set in the header flags.)
  1.3482 +	@param a1		The first four bytes of trace data.
  1.3483 +					(Only if the header size indicates that this is present.)
  1.3484 +	@param a2		The second four bytes of trace data.
  1.3485 +					(Only if the header size indicates that this is present.)
  1.3486 +	@param a3		This is either the third four bytes of trace data, if
  1.3487 +					the header size indicates there is between 9 and 12 bytes
  1.3488 +					of trace data. If more than 12 of trace data are indicated, then
  1.3489 +					a3 contains a pointer to the remaining trace data, bytes 8 trough to N.
  1.3490 +					This trace data is word aligned.
  1.3491 +	@param aExtra	The 'extra' value.
  1.3492 +					(If EExtraPresent is set in the header flags.)
  1.3493 +	@param aPc		The Program Counter value.
  1.3494 +					(If EPcPresent is set in the header flags.)
  1.3495 +
  1.3496 +	@return			True, if the trace handler is enabled and outputting trace.
  1.3497 +					False otherwise.
  1.3498 +
  1.3499 +	Here is an example implementation of a trace handler:
  1.3500 +
  1.3501 +	@code
  1.3502 +	TInt size = (aHeader>>BTrace::ESizeIndex*8)&0xff;
  1.3503 +	TInt flags = (aHeader>>BTrace::EFlagsIndex*8)&0xff;
  1.3504 +	Output(aHeader), size -= 4;
  1.3505 +	if(flags&BTrace::EHeader2Present)
  1.3506 +		Output(aHeader2), size -= 4;
  1.3507 +	if(flags&BTrace::EContextIdPresent)
  1.3508 +		Output(aContext), size -= 4;
  1.3509 +	if(flags&BTrace::EPcPresent)
  1.3510 +		Output(aPc), size -= 4;
  1.3511 +	if(flags&BTrace::EExtraPresent)
  1.3512 +		Output(aExtra), size -= 4;
  1.3513 +	if(size<=0)
  1.3514 +		return ETrue;
  1.3515 +	Output(a1), size -= 4;
  1.3516 +	if(size<=0)
  1.3517 +		return ETrue;
  1.3518 +	Output(a2), size -= 4;
  1.3519 +	if(size<=0)
  1.3520 +		return ETrue;
  1.3521 +	if(size<=4)
  1.3522 +		Output(a3);
  1.3523 +	else
  1.3524 +		{
  1.3525 +		TUint32* data = (TUint32*)a3;
  1.3526 +		TUint32* end = (TUint32*)(a3+size);
  1.3527 +		do Output(*data++); while(data<end);
  1.3528 +		}
  1.3529 +	return ETrue;
  1.3530 +	@endcode
  1.3531 +
  1.3532 +	The trace handler may add timestamp values to the trace it outputs, in which case
  1.3533 +	it should modify the flags and size in aHeader accordingly, before outputting this value.
  1.3534 +	The Timestamp and/or Timestamp2 should be output, in that order, between the Header2 and
  1.3535 +	Context ID values.
  1.3536 +
  1.3537 +	IMPORTANT NOTES.
  1.3538 +	-	The handler must not make use of any kernel APIs, apart from TDfc::RawAdd(). (This is
  1.3539 +		because kernel APIs may contain tracing and this would result in deadlock of the system.)
  1.3540 +	-	The trace handler must not access or modify arguments which are not indicated as
  1.3541 +		being present by their flag in aHeader or aHeader2.
  1.3542 +		In particular, on ARM CPUs, the values a2, a3, aExtra and aPc are stored on the stack
  1.3543 +		and the caller of this function may not have created these arguments before calling the
  1.3544 +		trace handler.
  1.3545 +	-	The handler may be called in any context and in a re-entrant manner. Implementations must
  1.3546 +		be designed to cope with this.
  1.3547 +	-	The interrupt disable status must not be reduced by the trace handler during its operation.
  1.3548 +		E.g. if IRQs are disabled on entry, the handler must not cause them to become enabled
  1.3549 +		at any point.
  1.3550 +
  1.3551 +	@pre Call in any context.
  1.3552 +	@post Interrupt enable status unchanged.
  1.3553 +
  1.3554 +	@publishedPartner
  1.3555 +	@released
  1.3556 +	*/
  1.3557 +	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);
  1.3558 +
  1.3559 +
  1.3560 +	/**
  1.3561 +	Set the function which will receive all trace records.
  1.3562 +	@return The handler function which existed before this function was called.
  1.3563 +	@publishedPartner
  1.3564 +	@released
  1.3565 +	*/
  1.3566 +	IMPORT_C static BTrace::THandler SetHandler(BTrace::THandler aHandler);
  1.3567 +
  1.3568 +
  1.3569 +	/**
  1.3570 +	Set the trace filter bit for the specified category.
  1.3571 +
  1.3572 +	@param aCategory A category value from enum BTrace::TCategory.
  1.3573 +	@param aValue The new filter value for the category.
  1.3574 +				  1 means traces of this category are output, 0 means they are suppressed.
  1.3575 +				  Other values must not be used.
  1.3576 +
  1.3577 +	@return The previous value of the filter for the category, 0 or 1.
  1.3578 +			Or KErrNotSupported if this category is not supported by this build of the kernel.
  1.3579 +	@publishedPartner
  1.3580 +	@released
  1.3581 +	*/
  1.3582 +	IMPORT_C static TInt SetFilter(TUint aCategory, TBool aValue);
  1.3583 +
  1.3584 +
  1.3585 +	/**
  1.3586 +	Modify the secondary trace filter to add or remove the specified UID.
  1.3587 +
  1.3588 +	This method can not be used to disable a UID key if SetFilter2(TInt aGlobalFilter)
  1.3589 +	has been used to set the filter to pass all traces. Such attempts result in a return
  1.3590 +	code of KErrNotSupported.
  1.3591 +
  1.3592 +	@param aUid   The UID to filter.
  1.3593 +	@param aValue The new filter value for the UID.
  1.3594 +				  1 means traces with this UID are output, 0 means they are suppressed.
  1.3595 +				  Other values must not be used.
  1.3596 +
  1.3597 +	@return The previous value of the filter for the UID, 0 or 1, if operation is successful.
  1.3598 +			Otherwise, a negative number representing a system wide error code.
  1.3599 +			(E.g. KErrNoMemory.)
  1.3600 +
  1.3601 +	@pre Call in a thread context.
  1.3602 +
  1.3603 +	@publishedPartner
  1.3604 +	@released
  1.3605 +	*/
  1.3606 +	IMPORT_C static TInt SetFilter2(TUint32 aUid, TBool aValue);
  1.3607 +
  1.3608 +
  1.3609 +	/**
  1.3610 +	Set the secondary trace filter to include only the specified UIDs.
  1.3611 +
  1.3612 +	@param aUids    Pointer to array of UIDs.
  1.3613 +	@param aNumUids Number of UID values pointer to by \a aUid.
  1.3614 +
  1.3615 +	@return KErrNone on success.
  1.3616 +			Otherwise, a negative number representing a system wide error code.
  1.3617 +			(E.g. KErrNoMemory.)
  1.3618 +
  1.3619 +	@pre Call in a thread context.
  1.3620 +
  1.3621 +	@publishedPartner
  1.3622 +	@released
  1.3623 +	*/
  1.3624 +	IMPORT_C static TInt SetFilter2(const TUint32* aUids, TInt aNumUids);
  1.3625 +
  1.3626 +
  1.3627 +	/**
  1.3628 +	Set the secondary trace filter to pass or reject every trace.
  1.3629 +
  1.3630 +	@param aGlobalFilter If 0, the secondary filter will reject
  1.3631 +						 all traces; if 1, all traces are passed
  1.3632 +						 by the filter.
  1.3633 +						 Other values have no effect.
  1.3634 +
  1.3635 +	@return The previous value of the global filter, or -1 if the global filter
  1.3636 +			was not previously set.
  1.3637 +
  1.3638 +	@pre Call in a thread context.
  1.3639 +
  1.3640 +	@publishedPartner
  1.3641 +	@released
  1.3642 +	*/
  1.3643 +	IMPORT_C static TInt SetFilter2(TInt aGlobalFilter);
  1.3644 +
  1.3645 +
  1.3646 +	/**
  1.3647 +	Get the contents of the secondary trace filter.
  1.3648 +
  1.3649 +	@param[out] aUids   Pointer to array of UIDs contained in the secondary filter.
  1.3650 +						Ownership of this array is passed to the caller of this
  1.3651 +						function, which is then responsible for deleting it.
  1.3652 +						If filter is empty, \a aUid equals zero.
  1.3653 +	@param[out] aGlobalFilter	Set to 1 if the secondary filter passes all traces.
  1.3654 +								Set to 0 if the secondary filter rejects all traces.
  1.3655 +								Set to -1 if the secondary filter operates by UIDs contained in traces.
  1.3656 +
  1.3657 +	@return Number of UIDs in returned array, if operation is successful.
  1.3658 +			Otherwise, a negative number representing a system wide error code.
  1.3659 +
  1.3660 +
  1.3661 +	@pre Call in a thread context.
  1.3662 +    @pre Calling thread must be in a critical section.
  1.3663 +
  1.3664 +	@publishedPartner
  1.3665 +	@released
  1.3666 +	*/
  1.3667 +	IMPORT_C static TInt Filter2(TUint32*& aUids, TInt& aGlobalFilter);
  1.3668 +
  1.3669 +
  1.3670 +	/**
  1.3671 +	Get the trace filter bit for the specified category.
  1.3672 +
  1.3673 +	@param aCategory A category value from enum BTrace::TCategory,
  1.3674 +	@return The value of the filter for the category, 0 or 1.
  1.3675 +			Or KErrNotSupported if this category is not supported by this build of the kernel.
  1.3676 +
  1.3677 +	@publishedPartner
  1.3678 +	@released
  1.3679 +	*/
  1.3680 +	inline static TInt Filter(TUint aCategory);
  1.3681 +
  1.3682 +	/**
  1.3683 +	Get a pointer to the spinlock used to serialise BTrace output on SMP systems.
  1.3684 +
  1.3685 +	@internalComponent
  1.3686 +	*/
  1.3687 +	IMPORT_C static TSpinLock* LockPtr();
  1.3688 +
  1.3689 +
  1.3690 +	/**
  1.3691 +	Enumeration of control functions which can be implemented by the BTrace handler.
  1.3692 +
  1.3693 +	These values are passed to #Control to indicate the requested operation and are
  1.3694 +	passed unaltered to the BTrace implementation's control function as specified by
  1.3695 +	SetHandlers().
  1.3696 +
  1.3697 +	@see #Control
  1.3698 +	@see #TControlFunction
  1.3699 +	*/
  1.3700 +	enum TControl
  1.3701 +		{
  1.3702 +		/**
  1.3703 +		Called to indicate that the system has crashed. Typical response to this call
  1.3704 +		is to disable tracing so that debug monitor activity doesn't generate any additional
  1.3705 +		trace.
  1.3706 +
  1.3707 +		As this function is called after the system is crashed its implementation must not
  1.3708 +		make use of any APIs which require a running system, it must also not re-enable
  1.3709 +		interrupts.
  1.3710 +
  1.3711 +		ControlFunction argument meaning: None, ignore.
  1.3712 +
  1.3713 +		ControlFunction returns nothing, ignore.
  1.3714 +		*/
  1.3715 +		ECtrlSystemCrashed,
  1.3716 +
  1.3717 +		/**
  1.3718 +		Called by crash monitor to request first block of data from any memory resident
  1.3719 +		trace buffer. A size of zero should be returned if the buffer is empty.
  1.3720 +
  1.3721 +		This should be a non-destructive operation if possible. I.e. the contents of the
  1.3722 +		buffer should be capable of being read multiple times by issuing repeated
  1.3723 +		ECtrlCrashReadFirst/ECtrlCrashReadNext sequences.
  1.3724 +
  1.3725 +		As this function is called after the system is crashed its implementation must not
  1.3726 +		make use of any APIs which require a running system, it must also not re-enable
  1.3727 +		interrupts.
  1.3728 +
  1.3729 +		ControlFunction argument meaning:
  1.3730 +		- aArg1 should be treated as a TUint8*& and set to the start address of the trace data.
  1.3731 +		- aArg2 should be treated as a TUint& and set to the length of the trace data.
  1.3732 +
  1.3733 +		ControlFunction returns KErrNone if successful, otherwise one of the other system wide
  1.3734 +		error codes.
  1.3735 +		*/
  1.3736 +		ECtrlCrashReadFirst,
  1.3737 +
  1.3738 +		/**
  1.3739 +		Called by crash monitor after using ECrashReadFirst, to request subsequent
  1.3740 +		blocks of data from the trace buffer. A size of zero should be returned if
  1.3741 +		the end of the buffer has been reached.
  1.3742 +
  1.3743 +		As this function is called after the system is crashed its implementation must not
  1.3744 +		make use of any APIs which require a running system, it must also not re-enable
  1.3745 +		interrupts.
  1.3746 +
  1.3747 +		ControlFunction argument meaning:
  1.3748 +		aArg1 should be treated as a TUint8** and set to the start address of the trace data.
  1.3749 +		aArg2 should be treated as a TUint* and set to the length of the trace data.
  1.3750 +
  1.3751 +		ControlFunction returns KErrNone if successful, otherwise one of the other system wide
  1.3752 +		error codes.
  1.3753 +		*/
  1.3754 +		ECtrlCrashReadNext
  1.3755 +		};
  1.3756 +
  1.3757 +	/**
  1.3758 +	Prototype for function callback called by #Control.
  1.3759 +	I.e. as set by SetHandlers().
  1.3760 +	*/
  1.3761 +	typedef TInt(*TControlFunction)(TControl aFunction, TAny* aArg1, TAny* aArg2);
  1.3762 +
  1.3763 +	/**
  1.3764 +	Call the BTrace handlers control function to perform the function.
  1.3765 +
  1.3766 +	@param aFunction	A value from TControl specifying the requested operation.
  1.3767 +	@param aArg1		First argument for the operation. See enum TControl.
  1.3768 +	@param aArg1		Second argument for the operation. See enum TControl.
  1.3769 +
  1.3770 +	@return KErrNone if successful,
  1.3771 +			KErrNotSupported if the function isn't supported.
  1.3772 +			otherwise one of the other system wide error codes.
  1.3773 +
  1.3774 +	@see TControl.
  1.3775 +	*/
  1.3776 +	IMPORT_C static TInt Control(TControl aFunction, TAny* aArg1=0, TAny* aArg2=0);
  1.3777 +
  1.3778 +	/**
  1.3779 +	Set both the function which will receive all trace records, and the
  1.3780 +	control function which will be called by each use of #Control.
  1.3781 +
  1.3782 +	@param aNewHandler The new handler to receive trace.
  1.3783 +	@param aNewControl The new handler for control functions.
  1.3784 +	@param aOldHandler The trace handler which existed prior to this function being called.
  1.3785 +	@param aOldControl The control handler which existed prior to this function being called.
  1.3786 +	*/
  1.3787 +	IMPORT_C static void SetHandlers(BTrace::THandler aNewHandler, BTrace::TControlFunction aNewControl, BTrace::THandler& aOldHandler, BTrace::TControlFunction& aOldControl);
  1.3788 +
  1.3789 +#endif //  __KERNEL_MODE__
  1.3790 +
  1.3791 +	/**
  1.3792 +	Check the trace filters to see if a trace with a given category
  1.3793 +	would be output.
  1.3794 +
  1.3795 +	@param aCategory  A category value from enum BTrace::TCategory.
  1.3796 +					  Only the 8 least significant bits in this value are used;
  1.3797 +					  other bits are ignored.
  1.3798 +
  1.3799 +	@return True if a trace with this specification would be passed by the filters.
  1.3800 +			False if a trace with this specification would be dropped by the filters.
  1.3801 +
  1.3802 +	@publishedPartner
  1.3803 +	@released
  1.3804 +	*/
  1.3805 +	IMPORT_C static TBool CheckFilter(TUint32 aCategory);
  1.3806 +
  1.3807 +	/**
  1.3808 +	Check the trace filters to see if a trace with a given category
  1.3809 +	and filter UID would be output.
  1.3810 +
  1.3811 +	@param aCategory  A category value from enum BTrace::TCategory.
  1.3812 +					  Only the 8 least significant bits in this value are used;
  1.3813 +					  other bits are ignored.
  1.3814 +	@param aUid       A UID to filter on.
  1.3815 +
  1.3816 +	@return True if a trace with this specification would be passed by the filters.
  1.3817 +			False if a trace with this specification would be dropped by the filters.
  1.3818 +
  1.3819 +	@publishedPartner
  1.3820 +	@released
  1.3821 +	*/
  1.3822 +	IMPORT_C static TBool CheckFilter2(TUint32 aCategory,TUint32 aUid);
  1.3823 +
  1.3824 +	/**
  1.3825 +	Common function for BTrace macros.
  1.3826 +	@internalComponent
  1.3827 +	*/
  1.3828 +	IMPORT_C static TBool Out(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
  1.3829 +
  1.3830 +	/**
  1.3831 +	Common function for BTrace macros.
  1.3832 +	@internalComponent
  1.3833 +	*/
  1.3834 +	IMPORT_C static TBool OutX(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
  1.3835 +
  1.3836 +	/**
  1.3837 +	Common function for BTrace macros.
  1.3838 +	@internalComponent
  1.3839 +	*/
  1.3840 +	IMPORT_C static TBool OutN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
  1.3841 +
  1.3842 +	/**
  1.3843 +	Common function for BTrace macros.
  1.3844 +	@internalComponent
  1.3845 +	*/
  1.3846 +	IMPORT_C static TBool OutNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
  1.3847 +
  1.3848 +	/**
  1.3849 +	Common function for BTrace macros.
  1.3850 +	@internalComponent
  1.3851 +	*/
  1.3852 +	IMPORT_C static TBool OutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize);
  1.3853 +
  1.3854 +	/**
  1.3855 +	Common function for BTrace macros.
  1.3856 +	@internalComponent
  1.3857 +	*/
  1.3858 +	IMPORT_C static TBool OutFiltered(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
  1.3859 +
  1.3860 +	/**
  1.3861 +	Common function for BTrace macros.
  1.3862 +	@internalComponent
  1.3863 +	*/
  1.3864 +	IMPORT_C static TBool OutFilteredX(TUint32 a0,TUint32 a1,TUint32 a2,TUint32 a3);
  1.3865 +
  1.3866 +	/**
  1.3867 +	Common function for BTrace macros.
  1.3868 +	@internalComponent
  1.3869 +	*/
  1.3870 +	IMPORT_C static TBool OutFilteredN(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
  1.3871 +
  1.3872 +	/**
  1.3873 +	Common function for BTrace macros.
  1.3874 +	@internalComponent
  1.3875 +	*/
  1.3876 +	IMPORT_C static TBool OutFilteredNX(TUint32 a0, TUint32 a1, TUint32 a2, const TAny* aData, TInt aDataSize);
  1.3877 +
  1.3878 +	/**
  1.3879 +	Common function for BTrace macros.
  1.3880 +	@internalComponent
  1.3881 +	*/
  1.3882 +	IMPORT_C static TBool OutFilteredBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize);
  1.3883 +
  1.3884 +	/**
  1.3885 +	@internalComponent
  1.3886 +	*/
  1.3887 +	static void Init0();
  1.3888 +
  1.3889 +	/**
  1.3890 +	@internalComponent
  1.3891 +	*/
  1.3892 +	typedef TBool(*TBTrace1)(TUint32);
  1.3893 +
  1.3894 +	/**
  1.3895 +	@internalComponent
  1.3896 +	*/
  1.3897 +	typedef TBool(*TBTrace2)(TUint32,TUint32);
  1.3898 +
  1.3899 +	/**
  1.3900 +	@internalComponent
  1.3901 +	*/
  1.3902 +	typedef TBool(*TBTrace3)(TUint32,TUint32,TUint32);
  1.3903 +
  1.3904 +	/**
  1.3905 +	@internalComponent
  1.3906 +	*/
  1.3907 +	struct SExecExtension
  1.3908 +		{
  1.3909 +		TUint32	iA2;
  1.3910 +		TUint32	iA3;
  1.3911 +		TUint32	iPc;
  1.3912 +		};
  1.3913 +
  1.3914 +	/**
  1.3915 +	@internalComponent
  1.3916 +	*/
  1.3917 +	static TBool DoOutBig(TUint32 a0, TUint32 a1, const TAny* aData, TInt aDataSize, TUint32 aContext, TUint32 aPc);
  1.3918 +
  1.3919 +	/**
  1.3920 +	@internalComponent
  1.3921 +	*/
  1.3922 +	static TUint32 BigTraceId;
  1.3923 +
  1.3924 +	/**
  1.3925 +	@internalComponent
  1.3926 +	*/
  1.3927 +	static TBool IsSupported(TUint aCategory);
  1.3928 +
  1.3929 +	/**
  1.3930 +	Common function for UTrace calls, that need to set both program counter and format id as well as the normal parameters.
  1.3931 +
  1.3932 +	@param aHeader			The header (a0) of the trace record.
  1.3933 +	@param aModuleUid		A uid (a1) to filter on
  1.3934 +	@param aPc				A program counter
  1.3935 +	@param aFormatId		A format id
  1.3936 +	@param aData			The data to output
  1.3937 +	@param aDataSize		The size of the data
  1.3938 +
  1.3939 +	@return ETrue if a trace was successfully sent and dealt with by the handler.
  1.3940 +
  1.3941 +	@internalComponent
  1.3942 +	@prototype
  1.3943 +	*/
  1.3944 +	IMPORT_C static TBool OutFilteredPcFormatBig(TUint32 aHeader, TUint32 aModuleUid, TUint32 aPc, TUint16 aFormatId, const TAny* aData, TInt aDataSize);
  1.3945 +
  1.3946 +	};
  1.3947 +
  1.3948 +
  1.3949 +/**
  1.3950 +@internalComponent
  1.3951 +*/
  1.3952 +class DBTraceFilter2
  1.3953 +	{
  1.3954 +public:
  1.3955 +	TUint iNumUids;
  1.3956 +	TInt iAccessCount;
  1.3957 +	TUint32 iUids[1];
  1.3958 +
  1.3959 +	TBool Check(TUint32 aUid);
  1.3960 +
  1.3961 +	static DBTraceFilter2* New(TInt aNumUids);
  1.3962 +	static DBTraceFilter2* Open(DBTraceFilter2*volatile& aFilter2);
  1.3963 +	void Close();
  1.3964 +
  1.3965 +	DBTraceFilter2* iCleanupLink;
  1.3966 +	static DBTraceFilter2* iCleanupHead;
  1.3967 +	static void Cleanup();
  1.3968 +	};
  1.3969 +
  1.3970 +
  1.3971 +
  1.3972 +
  1.3973 +//
  1.3974 +// BTraceX macros
  1.3975 +//
  1.3976 +
  1.3977 +/**
  1.3978 +@internalComponent
  1.3979 +*/
  1.3980 +#define BTRACE_HEADER(aSize,aCategory,aSubCategory)			\
  1.3981 +	(((aSize)<<BTrace::ESizeIndex*8)							\
  1.3982 +	+((aCategory)<<BTrace::ECategoryIndex*8)					\
  1.3983 +	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
  1.3984 +
  1.3985 +/**
  1.3986 +@internalComponent
  1.3987 +*/
  1.3988 +#define BTRACE_HEADER_C(aSize,aCategory,aSubCategory)		\
  1.3989 +	((((aSize)+4)<<BTrace::ESizeIndex*8)						\
  1.3990 +	+((BTrace::EContextIdPresent)<<BTrace::EFlagsIndex*8)	\
  1.3991 +	+((aCategory)<<BTrace::ECategoryIndex*8)					\
  1.3992 +	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
  1.3993 +
  1.3994 +/**
  1.3995 +@internalComponent
  1.3996 +*/
  1.3997 +#define BTRACE_HEADER_P(aSize,aCategory,aSubCategory)		\
  1.3998 +	((((aSize)+4)<<BTrace::ESizeIndex*8)						\
  1.3999 +	+((BTrace::EPcPresent)<<BTrace::EFlagsIndex*8)		\
  1.4000 +	+((aCategory)<<BTrace::ECategoryIndex*8)					\
  1.4001 +	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
  1.4002 +
  1.4003 +/**
  1.4004 +@internalComponent
  1.4005 +*/
  1.4006 +#define BTRACE_HEADER_CP(aSize,aCategory,aSubCategory)								\
  1.4007 +	((((aSize)+8)<<BTrace::ESizeIndex*8)												\
  1.4008 +	+((BTrace::EContextIdPresent|BTrace::EPcPresent)<<BTrace::EFlagsIndex*8)	\
  1.4009 +	+((aCategory)<<BTrace::ECategoryIndex*8)											\
  1.4010 +	+((aSubCategory)<<BTrace::ESubCategoryIndex*8))
  1.4011 +
  1.4012 +
  1.4013 +
  1.4014 +/**
  1.4015 +Output a trace record of the specified category.
  1.4016 +
  1.4017 +The trace record data is 0 bytes in size.
  1.4018 +
  1.4019 +@param aCategory	A value from enum BTrace::TCategory,
  1.4020 +@param aSubCategory Sub-category value between 0 and 255.
  1.4021 +					The meaning of this is dependent on the Category.
  1.4022 +
  1.4023 +@return True if trace is enabled for aCategory, false otherwise.
  1.4024 +@publishedPartner
  1.4025 +@released
  1.4026 +*/
  1.4027 +#define BTrace0(aCategory,aSubCategory) \
  1.4028 +	((BTrace::TBTrace1)BTrace::Out) \
  1.4029 +		(BTRACE_HEADER(4,(aCategory),(aSubCategory)))
  1.4030 +
  1.4031 +/**
  1.4032 +Output a trace record of the specified category.
  1.4033 +
  1.4034 +The trace record data is 4 bytes in size.
  1.4035 +
  1.4036 +@param aCategory	A value from enum BTrace::TCategory,
  1.4037 +@param aSubCategory Sub-category value between 0 and 255.
  1.4038 +					The meaning of this is dependent on the Category.
  1.4039 +@param a1			The 32bit quantity which forms the data of this trace record.
  1.4040 +
  1.4041 +@return True if trace is enabled for aCategory, false otherwise.
  1.4042 +@publishedPartner
  1.4043 +@released
  1.4044 +*/
  1.4045 +#define BTrace4(aCategory,aSubCategory,a1) \
  1.4046 +	((BTrace::TBTrace2)BTrace::Out) \
  1.4047 +		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(a1))
  1.4048 +
  1.4049 +/**
  1.4050 +Output a trace record of the specified category.
  1.4051 +
  1.4052 +The trace record data is 8 bytes in size.
  1.4053 +
  1.4054 +@param aCategory	A value from enum BTrace::TCategory,
  1.4055 +@param aSubCategory Sub-category value between 0 and 255.
  1.4056 +					The meaning of this is dependent on the Category.
  1.4057 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4058 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4059 +
  1.4060 +@return True if trace is enabled for aCategory, false otherwise.
  1.4061 +@publishedPartner
  1.4062 +@released
  1.4063 +*/
  1.4064 +#define BTrace8(aCategory,aSubCategory,a1,a2) \
  1.4065 +	((BTrace::TBTrace3)BTrace::Out) \
  1.4066 +		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
  1.4067 +
  1.4068 +/**
  1.4069 +Output a trace record of the specified category.
  1.4070 +
  1.4071 +The trace record data is 12 bytes in size.
  1.4072 +
  1.4073 +@param aCategory	A value from enum BTrace::TCategory,
  1.4074 +@param aSubCategory Sub-category value between 0 and 255.
  1.4075 +					The meaning of this is dependent on the Category.
  1.4076 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4077 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4078 +@param a3			The third 32bit quantity which forms the data of this trace record.
  1.4079 +
  1.4080 +@return True if trace is enabled for aCategory, false otherwise.
  1.4081 +@publishedPartner
  1.4082 +@released
  1.4083 +*/
  1.4084 +#define BTrace12(aCategory,aSubCategory,a1,a2,a3) \
  1.4085 +	BTrace::Out \
  1.4086 +		(BTRACE_HEADER(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
  1.4087 +
  1.4088 +/**
  1.4089 +Output a trace record of the specified category.
  1.4090 +
  1.4091 +@param aCategory	A value from enum BTrace::TCategory,
  1.4092 +@param aSubCategory Sub-category value between 0 and 255.
  1.4093 +					The meaning of this is dependent on the Category.
  1.4094 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4095 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4096 +@param aData		Address of addition data to add to trace.
  1.4097 +					Must be word aligned, i.e. a multiple of 4.
  1.4098 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4099 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4100 +					flag ERecordTruncated is set in the record.
  1.4101 +
  1.4102 +@return True if trace is enabled for aCategory, false otherwise.
  1.4103 +@publishedPartner
  1.4104 +@released
  1.4105 +*/
  1.4106 +#define BTraceN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
  1.4107 +	BTrace::OutN \
  1.4108 +		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
  1.4109 +
  1.4110 +/**
  1.4111 +Output a trace record of the specified category.
  1.4112 +
  1.4113 +If the specified data is too big to find into a single trace record, then a
  1.4114 +multipart trace is generated. See TMultiPart.
  1.4115 +
  1.4116 +@param aCategory	A value from enum BTrace::TCategory,
  1.4117 +@param aSubCategory Sub-category value between 0 and 255.
  1.4118 +					The meaning of this is dependent on the Category.
  1.4119 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4120 +@param aData		Address of addition data to add to trace.
  1.4121 +					Must be word aligned, i.e. a multiple of 4.
  1.4122 +@param aDataSize	Number of bytes of additional data.
  1.4123 +
  1.4124 +@return True if trace is enabled for aCategory, false otherwise.
  1.4125 +@publishedPartner
  1.4126 +@released
  1.4127 +*/
  1.4128 +#define BTraceBig(aCategory,aSubCategory,a1,aData,aDataSize) \
  1.4129 +	BTrace::OutBig \
  1.4130 +		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
  1.4131 +
  1.4132 +
  1.4133 +
  1.4134 +/**
  1.4135 +Output a trace record of the specified category.
  1.4136 +
  1.4137 +The trace record data is 0 bytes in size.
  1.4138 +
  1.4139 +@param aCategory	A value from enum BTrace::TCategory,
  1.4140 +@param aSubCategory Sub-category value between 0 and 255.
  1.4141 +					The meaning of this is dependent on the Category.
  1.4142 +
  1.4143 +@return True if trace is enabled for aCategory, false otherwise.
  1.4144 +@publishedPartner
  1.4145 +@released
  1.4146 +*/
  1.4147 +#define BTraceContext0(aCategory,aSubCategory) \
  1.4148 +	((BTrace::TBTrace1)BTrace::OutX) \
  1.4149 +		(BTRACE_HEADER_C(4,(aCategory),(aSubCategory)))
  1.4150 +
  1.4151 +/**
  1.4152 +Output a trace record of the specified category which also includes a Context ID.
  1.4153 +
  1.4154 +The trace record data is 4 bytes in size.
  1.4155 +
  1.4156 +@param aCategory	A value from enum BTrace::TCategory,
  1.4157 +@param aSubCategory Sub-category value between 0 and 255.
  1.4158 +					The meaning of this is dependent on the Category.
  1.4159 +@param a1			The 32bit quantity which forms the data of this trace record.
  1.4160 +
  1.4161 +@return True if trace is enabled for aCategory, false otherwise.
  1.4162 +@publishedPartner
  1.4163 +@released
  1.4164 +*/
  1.4165 +#define BTraceContext4(aCategory,aSubCategory,a1) \
  1.4166 +	((BTrace::TBTrace2)BTrace::OutX) \
  1.4167 +		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(a1))
  1.4168 +
  1.4169 +/**
  1.4170 +Output a trace record of the specified category which also includes a Context ID.
  1.4171 +
  1.4172 +The trace record data is 8 bytes in size.
  1.4173 +
  1.4174 +@param aCategory	A value from enum BTrace::TCategory,
  1.4175 +@param aSubCategory Sub-category value between 0 and 255.
  1.4176 +					The meaning of this is dependent on the Category.
  1.4177 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4178 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4179 +
  1.4180 +@return True if trace is enabled for aCategory, false otherwise.
  1.4181 +@publishedPartner
  1.4182 +@released
  1.4183 +*/
  1.4184 +#define BTraceContext8(aCategory,aSubCategory,a1,a2) \
  1.4185 +	((BTrace::TBTrace3)BTrace::OutX) \
  1.4186 +		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
  1.4187 +
  1.4188 +/**
  1.4189 +Output a trace record of the specified category which also includes a Context ID.
  1.4190 +
  1.4191 +The trace record data is 12 bytes in size.
  1.4192 +
  1.4193 +@param aCategory	A value from enum BTrace::TCategory,
  1.4194 +@param aSubCategory Sub-category value between 0 and 255.
  1.4195 +					The meaning of this is dependent on the Category.
  1.4196 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4197 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4198 +@param a3			The third 32bit quantity which forms the data of this trace record.
  1.4199 +
  1.4200 +@return True if trace is enabled for aCategory, false otherwise.
  1.4201 +@publishedPartner
  1.4202 +@released
  1.4203 +*/
  1.4204 +#define BTraceContext12(aCategory,aSubCategory,a1,a2,a3) \
  1.4205 +	BTrace::OutX \
  1.4206 +		(BTRACE_HEADER_C(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
  1.4207 +
  1.4208 +/**
  1.4209 +Output a trace record of the specified category which also includes a Context ID.
  1.4210 +
  1.4211 +@param aCategory	A value from enum BTrace::TCategory,
  1.4212 +@param aSubCategory Sub-category value between 0 and 255.
  1.4213 +					The meaning of this is dependent on the Category.
  1.4214 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4215 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4216 +@param aData		Address of addition data to add to trace.
  1.4217 +					Must be word aligned, i.e. a multiple of 4.
  1.4218 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4219 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4220 +					flag ERecordTruncated is set in the record.
  1.4221 +
  1.4222 +@return True if trace is enabled for aCategory, false otherwise.
  1.4223 +@publishedPartner
  1.4224 +@released
  1.4225 +*/
  1.4226 +#define BTraceContextN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
  1.4227 +	BTrace::OutNX \
  1.4228 +		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
  1.4229 +
  1.4230 +/**
  1.4231 +Output a trace record of the specified category which also includes a Context ID.
  1.4232 +
  1.4233 +If the specified data is too big to find into a single trace record, then a
  1.4234 +multipart trace is generated. See TMultiPart.
  1.4235 +
  1.4236 +@param aCategory	A value from enum BTrace::TCategory,
  1.4237 +@param aSubCategory Sub-category value between 0 and 255.
  1.4238 +					The meaning of this is dependent on the Category.
  1.4239 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4240 +@param aData		Address of addition data to add to trace.
  1.4241 +					Must be word aligned, i.e. a multiple of 4.
  1.4242 +@param aDataSize	Number of bytes of additional data.
  1.4243 +
  1.4244 +@return True if trace is enabled for aCategory, false otherwise.
  1.4245 +@publishedPartner
  1.4246 +@released
  1.4247 +*/
  1.4248 +#define BTraceContextBig(aCategory,aSubCategory,a1,aData,aDataSize) \
  1.4249 +	BTrace::OutBig \
  1.4250 +		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
  1.4251 +
  1.4252 +
  1.4253 +
  1.4254 +/**
  1.4255 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4256 +
  1.4257 +The trace record data is 0 bytes in size.
  1.4258 +
  1.4259 +@param aCategory	A value from enum BTrace::TCategory,
  1.4260 +@param aSubCategory Sub-category value between 0 and 255.
  1.4261 +					The meaning of this is dependent on the Category.
  1.4262 +
  1.4263 +@return True if trace is enabled for aCategory, false otherwise.
  1.4264 +@publishedPartner
  1.4265 +@released
  1.4266 +*/
  1.4267 +#define BTracePc0(aCategory,aSubCategory) \
  1.4268 +	((BTrace::TBTrace1)BTrace::Out) \
  1.4269 +		(BTRACE_HEADER_P(4,(aCategory),(aSubCategory)))
  1.4270 +
  1.4271 +/**
  1.4272 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4273 +
  1.4274 +The trace record data is 4 bytes in size.
  1.4275 +
  1.4276 +@param aCategory	A value from enum BTrace::TCategory,
  1.4277 +@param aSubCategory Sub-category value between 0 and 255.
  1.4278 +					The meaning of this is dependent on the Category.
  1.4279 +@param a1			The 32bit quantity which forms the data of this trace record.
  1.4280 +
  1.4281 +@return True if trace is enabled for aCategory, false otherwise.
  1.4282 +@publishedPartner
  1.4283 +@released
  1.4284 +*/
  1.4285 +#define BTracePc4(aCategory,aSubCategory,a1)	\
  1.4286 +	((BTrace::TBTrace2)BTrace::Out) \
  1.4287 +		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(a1))
  1.4288 +
  1.4289 +/**
  1.4290 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4291 +
  1.4292 +The trace record data is 8 bytes in size.
  1.4293 +
  1.4294 +@param aCategory	A value from enum BTrace::TCategory,
  1.4295 +@param aSubCategory Sub-category value between 0 and 255.
  1.4296 +					The meaning of this is dependent on the Category.
  1.4297 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4298 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4299 +
  1.4300 +@return True if trace is enabled for aCategory, false otherwise.
  1.4301 +@publishedPartner
  1.4302 +@released
  1.4303 +*/
  1.4304 +#define BTracePc8(aCategory,aSubCategory,a1,a2) \
  1.4305 +	((BTrace::TBTrace3)BTrace::Out) \
  1.4306 +		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
  1.4307 +
  1.4308 +/**
  1.4309 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4310 +
  1.4311 +The trace record data is 12 bytes in size.
  1.4312 +
  1.4313 +@param aCategory	A value from enum BTrace::TCategory,
  1.4314 +@param aSubCategory Sub-category value between 0 and 255.
  1.4315 +					The meaning of this is dependent on the Category.
  1.4316 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4317 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4318 +@param a3			The third 32bit quantity which forms the data of this trace record.
  1.4319 +
  1.4320 +@return True if trace is enabled for aCategory, false otherwise.
  1.4321 +@publishedPartner
  1.4322 +@released
  1.4323 +*/
  1.4324 +#define BTracePc12(aCategory,aSubCategory,a1,a2,a3) \
  1.4325 +	BTrace::Out \
  1.4326 +		(BTRACE_HEADER_P(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
  1.4327 +
  1.4328 +/**
  1.4329 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4330 +
  1.4331 +@param aCategory	A value from enum BTrace::TCategory,
  1.4332 +@param aSubCategory Sub-category value between 0 and 255.
  1.4333 +					The meaning of this is dependent on the Category.
  1.4334 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4335 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4336 +@param aData		Address of addition data to add to trace.
  1.4337 +					Must be word aligned, i.e. a multiple of 4.
  1.4338 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4339 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4340 +					flag ERecordTruncated is set in the record.
  1.4341 +
  1.4342 +@return True if trace is enabled for aCategory, false otherwise.
  1.4343 +@publishedPartner
  1.4344 +@released
  1.4345 +*/
  1.4346 +#define BTracePcN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
  1.4347 +	BTrace::OutN \
  1.4348 +		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
  1.4349 +
  1.4350 +/**
  1.4351 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4352 +
  1.4353 +If the specified data is too big to find into a single trace record, then a
  1.4354 +multipart trace is generated. See TMultiPart.
  1.4355 +
  1.4356 +@param aCategory	A value from enum BTrace::TCategory,
  1.4357 +@param aSubCategory Sub-category value between 0 and 255.
  1.4358 +					The meaning of this is dependent on the Category.
  1.4359 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4360 +@param aData		Address of addition data to add to trace.
  1.4361 +					Must be word aligned, i.e. a multiple of 4.
  1.4362 +@param aDataSize	Number of bytes of additional data.
  1.4363 +
  1.4364 +@return True if trace is enabled for aCategory, false otherwise.
  1.4365 +@publishedPartner
  1.4366 +@released
  1.4367 +*/
  1.4368 +#define BTracePcBig(aCategory,aSubCategory,a1,aData,aDataSize) \
  1.4369 +	BTrace::OutBig \
  1.4370 +		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
  1.4371 +
  1.4372 +
  1.4373 +
  1.4374 +
  1.4375 +/**
  1.4376 +Output a trace record of the specified category which also includes
  1.4377 +Context ID and Program Counter values.
  1.4378 +
  1.4379 +The trace record data is 0 bytes in size.
  1.4380 +
  1.4381 +@param aCategory	A value from enum BTrace::TCategory,
  1.4382 +@param aSubCategory Sub-category value between 0 and 255.
  1.4383 +					The meaning of this is dependent on the Category.
  1.4384 +
  1.4385 +@return True if trace is enabled for aCategory, false otherwise.
  1.4386 +@publishedPartner
  1.4387 +@released
  1.4388 +*/
  1.4389 +#define BTraceContextPc0(aCategory,aSubCategory)	\
  1.4390 +	((BTrace::TBTrace1)BTrace::OutX) \
  1.4391 +		(BTRACE_HEADER_CP(4,(aCategory),(aSubCategory)))
  1.4392 +
  1.4393 +/**
  1.4394 +Output a trace record of the specified category which also includes
  1.4395 +Context ID and Program Counter values.
  1.4396 +
  1.4397 +The trace record data is 4 bytes in size.
  1.4398 +
  1.4399 +@param aCategory	A value from enum BTrace::TCategory,
  1.4400 +@param aSubCategory Sub-category value between 0 and 255.
  1.4401 +					The meaning of this is dependent on the Category.
  1.4402 +@param a1			The 32bit quantity which forms the data of this trace record.
  1.4403 +
  1.4404 +@return True if trace is enabled for aCategory, false otherwise.
  1.4405 +@publishedPartner
  1.4406 +@released
  1.4407 +*/
  1.4408 +#define BTraceContextPc4(aCategory,aSubCategory,a1)	\
  1.4409 +	((BTrace::TBTrace2)BTrace::OutX) \
  1.4410 +		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(a1))
  1.4411 +
  1.4412 +/**
  1.4413 +Output a trace record of the specified category which also includes
  1.4414 +Context ID and Program Counter values.
  1.4415 +
  1.4416 +The trace record data is 8 bytes in size.
  1.4417 +
  1.4418 +@param aCategory	A value from enum BTrace::TCategory,
  1.4419 +@param aSubCategory Sub-category value between 0 and 255.
  1.4420 +					The meaning of this is dependent on the Category.
  1.4421 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4422 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4423 +
  1.4424 +@return True if trace is enabled for aCategory, false otherwise.
  1.4425 +@publishedPartner
  1.4426 +@released
  1.4427 +*/
  1.4428 +#define BTraceContextPc8(aCategory,aSubCategory,a1,a2) \
  1.4429 +	((BTrace::TBTrace3)BTrace::OutX) \
  1.4430 +		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2))
  1.4431 +
  1.4432 +/**
  1.4433 +Output a trace record of the specified category which also includes
  1.4434 +Context ID and Program Counter values.
  1.4435 +
  1.4436 +The trace record data is 12 bytes in size.
  1.4437 +
  1.4438 +@param aCategory	A value from enum BTrace::TCategory,
  1.4439 +@param aSubCategory Sub-category value between 0 and 255.
  1.4440 +					The meaning of this is dependent on the Category.
  1.4441 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4442 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4443 +@param a3			The third 32bit quantity which forms the data of this trace record.
  1.4444 +
  1.4445 +@return True if trace is enabled for aCategory, false otherwise.
  1.4446 +@publishedPartner
  1.4447 +@released
  1.4448 +*/
  1.4449 +#define BTraceContextPc12(aCategory,aSubCategory,a1,a2,a3) \
  1.4450 +	BTrace::OutX \
  1.4451 +		(BTRACE_HEADER_CP(16,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),(TUint32)(a3))
  1.4452 +
  1.4453 +/**
  1.4454 +Output a trace record of the specified category which also includes
  1.4455 +Context ID and Program Counter values.
  1.4456 +
  1.4457 +@param aCategory	A value from enum BTrace::TCategory,
  1.4458 +@param aSubCategory Sub-category value between 0 and 255.
  1.4459 +					The meaning of this is dependent on the Category.
  1.4460 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4461 +@param a2			The second 32bit quantity which forms the data of this trace record.
  1.4462 +@param aData		Address of addition data to add to trace.
  1.4463 +					Must be word aligned, i.e. a multiple of 4.
  1.4464 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4465 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4466 +					flag ERecordTruncated is set in the record.
  1.4467 +
  1.4468 +@return True if trace is enabled for aCategory, false otherwise.
  1.4469 +@publishedPartner
  1.4470 +@released
  1.4471 +*/
  1.4472 +#define BTraceContextPcN(aCategory,aSubCategory,a1,a2,aData,aDataSize) \
  1.4473 +	BTrace::OutNX \
  1.4474 +		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(a1),(TUint32)(a2),aData,aDataSize)
  1.4475 +
  1.4476 +/**
  1.4477 +Output a trace record of the specified category which also includes
  1.4478 +Context ID and Program Counter values.
  1.4479 +
  1.4480 +If the specified data is too big to find into a single trace record, then a
  1.4481 +multipart trace is generated. See TMultiPart.
  1.4482 +
  1.4483 +@param aCategory	A value from enum BTrace::TCategory,
  1.4484 +@param aSubCategory Sub-category value between 0 and 255.
  1.4485 +					The meaning of this is dependent on the Category.
  1.4486 +@param a1			The first 32bit quantity which forms the data of this trace record.
  1.4487 +@param aData		Address of addition data to add to trace.
  1.4488 +					Must be word aligned, i.e. a multiple of 4.
  1.4489 +@param aDataSize	Number of bytes of additional data.
  1.4490 +
  1.4491 +@return True if trace is enabled for aCategory, false otherwise.
  1.4492 +@publishedPartner
  1.4493 +@released
  1.4494 +*/
  1.4495 +#define BTraceContextPcBig(aCategory,aSubCategory,a1,aData,aDataSize) \
  1.4496 +	BTrace::OutBig \
  1.4497 +		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(a1),aData,(TInt)(aDataSize))
  1.4498 +
  1.4499 +
  1.4500 +
  1.4501 +/**
  1.4502 +Output a trace record of the specified category.
  1.4503 +
  1.4504 +The trace record data is 4 bytes in size.
  1.4505 +
  1.4506 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4507 +
  1.4508 +@param aCategory	A value from enum BTrace::TCategory,
  1.4509 +@param aSubCategory Sub-category value between 0 and 255.
  1.4510 +					The meaning of this is dependent on the Category.
  1.4511 +@param aUid			The 32bit quantity which forms the data of this trace record.
  1.4512 +
  1.4513 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4514 +@publishedPartner
  1.4515 +@released
  1.4516 +*/
  1.4517 +#define BTraceFiltered4(aCategory,aSubCategory,aUid) \
  1.4518 +	((BTrace::TBTrace2)BTrace::OutFiltered) \
  1.4519 +		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
  1.4520 +
  1.4521 +/**
  1.4522 +Output a trace record of the specified category.
  1.4523 +
  1.4524 +The trace record data is 8 bytes in size.
  1.4525 +
  1.4526 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4527 +
  1.4528 +@param aCategory	A value from enum BTrace::TCategory,
  1.4529 +@param aSubCategory Sub-category value between 0 and 255.
  1.4530 +					The meaning of this is dependent on the Category.
  1.4531 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4532 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4533 +
  1.4534 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4535 +@publishedPartner
  1.4536 +@released
  1.4537 +*/
  1.4538 +#define BTraceFiltered8(aCategory,aSubCategory,aUid,a1) \
  1.4539 +	((BTrace::TBTrace3)BTrace::OutFiltered) \
  1.4540 +		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
  1.4541 +
  1.4542 +/**
  1.4543 +Output a trace record of the specified category.
  1.4544 +
  1.4545 +The trace record data is 12 bytes in size.
  1.4546 +
  1.4547 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4548 +
  1.4549 +@param aCategory	A value from enum BTrace::TCategory,
  1.4550 +@param aSubCategory Sub-category value between 0 and 255.
  1.4551 +					The meaning of this is dependent on the Category.
  1.4552 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4553 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4554 +@param a2			The third 32bit quantity which forms the data of this trace record.
  1.4555 +
  1.4556 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4557 +@publishedPartner
  1.4558 +@released
  1.4559 +*/
  1.4560 +#define BTraceFiltered12(aCategory,aSubCategory,aUid,a1,a2) \
  1.4561 +	BTrace::OutFiltered \
  1.4562 +		(BTRACE_HEADER(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
  1.4563 +
  1.4564 +/**
  1.4565 +Output a trace record of the specified category.
  1.4566 +
  1.4567 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4568 +
  1.4569 +@param aCategory	A value from enum BTrace::TCategory,
  1.4570 +@param aSubCategory Sub-category value between 0 and 255.
  1.4571 +					The meaning of this is dependent on the Category.
  1.4572 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4573 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4574 +@param aData		Address of addition data to add to trace.
  1.4575 +					Must be word aligned, i.e. a multiple of 4.
  1.4576 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4577 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4578 +					flag ERecordTruncated is set in the record.
  1.4579 +
  1.4580 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4581 +@publishedPartner
  1.4582 +@released
  1.4583 +*/
  1.4584 +#define BTraceFilteredN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
  1.4585 +	BTrace::OutFilteredN \
  1.4586 +		(BTRACE_HEADER(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
  1.4587 +
  1.4588 +/**
  1.4589 +Output a trace record of the specified category.
  1.4590 +
  1.4591 +If the specified data is too big to find into a single trace record, then a
  1.4592 +multipart trace is generated. See TMultiPart.
  1.4593 +
  1.4594 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4595 +
  1.4596 +@param aCategory	A value from enum BTrace::TCategory,
  1.4597 +@param aSubCategory Sub-category value between 0 and 255.
  1.4598 +					The meaning of this is dependent on the Category.
  1.4599 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4600 +@param aData		Address of addition data to add to trace.
  1.4601 +					Must be word aligned, i.e. a multiple of 4.
  1.4602 +@param aDataSize	Number of bytes of additional data.
  1.4603 +
  1.4604 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4605 +@publishedPartner
  1.4606 +@released
  1.4607 +*/
  1.4608 +#define BTraceFilteredBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
  1.4609 +	BTrace::OutFilteredBig \
  1.4610 +		(BTRACE_HEADER(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
  1.4611 +
  1.4612 +
  1.4613 +
  1.4614 +/**
  1.4615 +Output a trace record of the specified category which also includes a Context ID.
  1.4616 +
  1.4617 +The trace record data is 4 bytes in size.
  1.4618 +
  1.4619 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4620 +
  1.4621 +@param aCategory	A value from enum BTrace::TCategory,
  1.4622 +@param aSubCategory Sub-category value between 0 and 255.
  1.4623 +					The meaning of this is dependent on the Category.
  1.4624 +@param aUid			The 32bit quantity which forms the data of this trace record.
  1.4625 +
  1.4626 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4627 +@publishedPartner
  1.4628 +@released
  1.4629 +*/
  1.4630 +#define BTraceFilteredContext4(aCategory,aSubCategory,aUid) \
  1.4631 +	((BTrace::TBTrace2)BTrace::OutFilteredX) \
  1.4632 +		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
  1.4633 +
  1.4634 +/**
  1.4635 +Output a trace record of the specified category which also includes a Context ID.
  1.4636 +
  1.4637 +The trace record data is 8 bytes in size.
  1.4638 +
  1.4639 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4640 +
  1.4641 +@param aCategory	A value from enum BTrace::TCategory,
  1.4642 +@param aSubCategory Sub-category value between 0 and 255.
  1.4643 +					The meaning of this is dependent on the Category.
  1.4644 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4645 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4646 +
  1.4647 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4648 +@publishedPartner
  1.4649 +@released
  1.4650 +*/
  1.4651 +#define BTraceFilteredContext8(aCategory,aSubCategory,aUid,a1) \
  1.4652 +	((BTrace::TBTrace3)BTrace::OutFilteredX) \
  1.4653 +		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
  1.4654 +
  1.4655 +/**
  1.4656 +Output a trace record of the specified category which also includes a Context ID.
  1.4657 +
  1.4658 +The trace record data is 12 bytes in size.
  1.4659 +
  1.4660 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4661 +
  1.4662 +@param aCategory	A value from enum BTrace::TCategory,
  1.4663 +@param aSubCategory Sub-category value between 0 and 255.
  1.4664 +					The meaning of this is dependent on the Category.
  1.4665 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4666 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4667 +@param a2			The third 32bit quantity which forms the data of this trace record.
  1.4668 +
  1.4669 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4670 +@publishedPartner
  1.4671 +@released
  1.4672 +*/
  1.4673 +#define BTraceFilteredContext12(aCategory,aSubCategory,aUid,a1,a2) \
  1.4674 +	BTrace::OutFilteredX \
  1.4675 +		(BTRACE_HEADER_C(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
  1.4676 +
  1.4677 +/**
  1.4678 +Output a trace record of the specified category which also includes a Context ID.
  1.4679 +
  1.4680 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4681 +
  1.4682 +@param aCategory	A value from enum BTrace::TCategory,
  1.4683 +@param aSubCategory Sub-category value between 0 and 255.
  1.4684 +					The meaning of this is dependent on the Category.
  1.4685 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4686 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4687 +@param aData		Address of addition data to add to trace.
  1.4688 +					Must be word aligned, i.e. a multiple of 4.
  1.4689 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4690 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4691 +					flag ERecordTruncated is set in the record.
  1.4692 +
  1.4693 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4694 +@publishedPartner
  1.4695 +@released
  1.4696 +*/
  1.4697 +#define BTraceFilteredContextN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
  1.4698 +	BTrace::OutFilteredNX \
  1.4699 +		(BTRACE_HEADER_C(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
  1.4700 +
  1.4701 +/**
  1.4702 +Output a trace record of the specified category which also includes a Context ID.
  1.4703 +
  1.4704 +If the specified data is too big to find into a single trace record, then a
  1.4705 +multipart trace is generated. See TMultiPart.
  1.4706 +
  1.4707 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4708 +
  1.4709 +@param aCategory	A value from enum BTrace::TCategory,
  1.4710 +@param aSubCategory Sub-category value between 0 and 255.
  1.4711 +					The meaning of this is dependent on the Category.
  1.4712 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4713 +@param aData		Address of addition data to add to trace.
  1.4714 +					Must be word aligned, i.e. a multiple of 4.
  1.4715 +@param aDataSize	Number of bytes of additional data.
  1.4716 +
  1.4717 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4718 +@publishedPartner
  1.4719 +@released
  1.4720 +*/
  1.4721 +#define BTraceFilteredContextBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
  1.4722 +	BTrace::OutFilteredBig \
  1.4723 +		(BTRACE_HEADER_C(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
  1.4724 +
  1.4725 +
  1.4726 +
  1.4727 +/**
  1.4728 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4729 +
  1.4730 +The trace record data is 4 bytes in size.
  1.4731 +
  1.4732 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4733 +
  1.4734 +@param aCategory	A value from enum BTrace::TCategory,
  1.4735 +@param aSubCategory Sub-category value between 0 and 255.
  1.4736 +					The meaning of this is dependent on the Category.
  1.4737 +@param aUid			The 32bit quantity which forms the data of this trace record.
  1.4738 +
  1.4739 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4740 +@publishedPartner
  1.4741 +@released
  1.4742 +*/
  1.4743 +#define BTraceFilteredPc4(aCategory,aSubCategory,aUid)	\
  1.4744 +	((BTrace::TBTrace2)BTrace::OutFiltered) \
  1.4745 +		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
  1.4746 +
  1.4747 +/**
  1.4748 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4749 +
  1.4750 +The trace record data is 8 bytes in size.
  1.4751 +
  1.4752 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4753 +
  1.4754 +@param aCategory	A value from enum BTrace::TCategory,
  1.4755 +@param aSubCategory Sub-category value between 0 and 255.
  1.4756 +					The meaning of this is dependent on the Category.
  1.4757 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4758 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4759 +
  1.4760 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4761 +@publishedPartner
  1.4762 +@released
  1.4763 +*/
  1.4764 +#define BTraceFilteredPc8(aCategory,aSubCategory,aUid,a1) \
  1.4765 +	((BTrace::TBTrace3)BTrace::OutFiltered) \
  1.4766 +		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
  1.4767 +
  1.4768 +/**
  1.4769 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4770 +
  1.4771 +The trace record data is 12 bytes in size.
  1.4772 +
  1.4773 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4774 +
  1.4775 +@param aCategory	A value from enum BTrace::TCategory,
  1.4776 +@param aSubCategory Sub-category value between 0 and 255.
  1.4777 +					The meaning of this is dependent on the Category.
  1.4778 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4779 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4780 +@param a2			The third 32bit quantity which forms the data of this trace record.
  1.4781 +
  1.4782 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4783 +@publishedPartner
  1.4784 +@released
  1.4785 +*/
  1.4786 +#define BTraceFilteredPc12(aCategory,aSubCategory,aUid,a1,a2) \
  1.4787 +	BTrace::OutFiltered \
  1.4788 +		(BTRACE_HEADER_P(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
  1.4789 +
  1.4790 +/**
  1.4791 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4792 +
  1.4793 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4794 +
  1.4795 +@param aCategory	A value from enum BTrace::TCategory,
  1.4796 +@param aSubCategory Sub-category value between 0 and 255.
  1.4797 +					The meaning of this is dependent on the Category.
  1.4798 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4799 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4800 +@param aData		Address of addition data to add to trace.
  1.4801 +					Must be word aligned, i.e. a multiple of 4.
  1.4802 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4803 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4804 +					flag ERecordTruncated is set in the record.
  1.4805 +
  1.4806 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4807 +@publishedPartner
  1.4808 +@released
  1.4809 +*/
  1.4810 +#define BTraceFilteredPcN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
  1.4811 +	BTrace::OutFilteredN \
  1.4812 +		(BTRACE_HEADER_P(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
  1.4813 +
  1.4814 +/**
  1.4815 +Output a trace record of the specified category which also includes a Program Counter value.
  1.4816 +
  1.4817 +If the specified data is too big to find into a single trace record, then a
  1.4818 +multipart trace is generated. See TMultiPart.
  1.4819 +
  1.4820 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4821 +
  1.4822 +@param aCategory	A value from enum BTrace::TCategory,
  1.4823 +@param aSubCategory Sub-category value between 0 and 255.
  1.4824 +					The meaning of this is dependent on the Category.
  1.4825 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4826 +@param aData		Address of addition data to add to trace.
  1.4827 +					Must be word aligned, i.e. a multiple of 4.
  1.4828 +@param aDataSize	Number of bytes of additional data.
  1.4829 +
  1.4830 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4831 +@publishedPartner
  1.4832 +@released
  1.4833 +*/
  1.4834 +#define BTraceFilteredPcBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
  1.4835 +	BTrace::OutFilteredBig \
  1.4836 +		(BTRACE_HEADER_P(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
  1.4837 +
  1.4838 +
  1.4839 +
  1.4840 +
  1.4841 +/**
  1.4842 +Output a trace record of the specified category which also includes
  1.4843 +Context ID and Program Counter values.
  1.4844 +
  1.4845 +The trace record data is 4 bytes in size.
  1.4846 +
  1.4847 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4848 +
  1.4849 +@param aCategory	A value from enum BTrace::TCategory,
  1.4850 +@param aSubCategory Sub-category value between 0 and 255.
  1.4851 +					The meaning of this is dependent on the Category.
  1.4852 +@param aUid			The 32bit quantity which forms the data of this trace record.
  1.4853 +
  1.4854 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4855 +@publishedPartner
  1.4856 +@released
  1.4857 +*/
  1.4858 +#define BTraceFilteredContextPc4(aCategory,aSubCategory,aUid)	\
  1.4859 +	((BTrace::TBTrace2)BTrace::OutFilteredX) \
  1.4860 +		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(aUid))
  1.4861 +
  1.4862 +/**
  1.4863 +Output a trace record of the specified category which also includes
  1.4864 +Context ID and Program Counter values.
  1.4865 +
  1.4866 +The trace record data is 8 bytes in size.
  1.4867 +
  1.4868 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4869 +
  1.4870 +@param aCategory	A value from enum BTrace::TCategory,
  1.4871 +@param aSubCategory Sub-category value between 0 and 255.
  1.4872 +					The meaning of this is dependent on the Category.
  1.4873 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4874 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4875 +
  1.4876 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4877 +@publishedPartner
  1.4878 +@released
  1.4879 +*/
  1.4880 +#define BTraceFilteredContextPc8(aCategory,aSubCategory,aUid,a1) \
  1.4881 +	((BTrace::TBTrace3)BTrace::OutFilteredX) \
  1.4882 +		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1))
  1.4883 +
  1.4884 +/**
  1.4885 +Output a trace record of the specified category which also includes
  1.4886 +Context ID and Program Counter values.
  1.4887 +
  1.4888 +The trace record data is 12 bytes in size.
  1.4889 +
  1.4890 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4891 +
  1.4892 +@param aCategory	A value from enum BTrace::TCategory,
  1.4893 +@param aSubCategory Sub-category value between 0 and 255.
  1.4894 +					The meaning of this is dependent on the Category.
  1.4895 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4896 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4897 +@param a2			The third 32bit quantity which forms the data of this trace record.
  1.4898 +
  1.4899 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4900 +@publishedPartner
  1.4901 +@released
  1.4902 +*/
  1.4903 +#define BTraceFilteredContextPc12(aCategory,aSubCategory,aUid,a1,a2) \
  1.4904 +	BTrace::OutFilteredX \
  1.4905 +		(BTRACE_HEADER_CP(16,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),(TUint32)(a2))
  1.4906 +
  1.4907 +/**
  1.4908 +Output a trace record of the specified category which also includes
  1.4909 +Context ID and Program Counter values.
  1.4910 +
  1.4911 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4912 +
  1.4913 +@param aCategory	A value from enum BTrace::TCategory,
  1.4914 +@param aSubCategory Sub-category value between 0 and 255.
  1.4915 +					The meaning of this is dependent on the Category.
  1.4916 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4917 +@param a1			The second 32bit quantity which forms the data of this trace record.
  1.4918 +@param aData		Address of addition data to add to trace.
  1.4919 +					Must be word aligned, i.e. a multiple of 4.
  1.4920 +@param aDataSize	Number of bytes of additional data. If this value is greater than
  1.4921 +					KMaxBTraceDataArray then data is truncated to this size and the
  1.4922 +					flag ERecordTruncated is set in the record.
  1.4923 +
  1.4924 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4925 +@publishedPartner
  1.4926 +@released
  1.4927 +*/
  1.4928 +#define BTraceFilteredContextPcN(aCategory,aSubCategory,aUid,a1,aData,aDataSize) \
  1.4929 +	BTrace::OutFilteredNX \
  1.4930 +		(BTRACE_HEADER_CP(12,(aCategory),(aSubCategory)),(TUint32)(aUid),(TUint32)(a1),aData,aDataSize)
  1.4931 +
  1.4932 +/**
  1.4933 +Output a trace record of the specified category which also includes
  1.4934 +Context ID and Program Counter values.
  1.4935 +
  1.4936 +If the specified data is too big to find into a single trace record, then a
  1.4937 +multipart trace is generated. See TMultiPart.
  1.4938 +
  1.4939 +If the value of \a aUid is not contained in the secondary filter then the trace is discarded.
  1.4940 +
  1.4941 +@param aCategory	A value from enum BTrace::TCategory,
  1.4942 +@param aSubCategory Sub-category value between 0 and 255.
  1.4943 +					The meaning of this is dependent on the Category.
  1.4944 +@param aUid			The first 32bit quantity which forms the data of this trace record.
  1.4945 +@param aData		Address of addition data to add to trace.
  1.4946 +					Must be word aligned, i.e. a multiple of 4.
  1.4947 +@param aDataSize	Number of bytes of additional data.
  1.4948 +
  1.4949 +@return True if trace is enabled for aCategory and aUid, false otherwise.
  1.4950 +@publishedPartner
  1.4951 +@released
  1.4952 +*/
  1.4953 +#define BTraceFilteredContextPcBig(aCategory,aSubCategory,aUid,aData,aDataSize) \
  1.4954 +	BTrace::OutFilteredBig \
  1.4955 +		(BTRACE_HEADER_CP(8,(aCategory),(aSubCategory)),(TUint32)(aUid),aData,(TInt)(aDataSize))
  1.4956 +
  1.4957 +
  1.4958 +
  1.4959 +//
  1.4960 +// Inline methods
  1.4961 +//
  1.4962 +
  1.4963 +inline TUint8* BTrace::NextRecord(TAny* aCurrentRecord)
  1.4964 +	{
  1.4965 +	TUint size = ((TUint8*)aCurrentRecord)[ESizeIndex];
  1.4966 +	*(TUint*)&aCurrentRecord += 3;
  1.4967 +	*(TUint*)&aCurrentRecord += size;
  1.4968 +	*(TUint*)&aCurrentRecord &= ~3;
  1.4969 +	return (TUint8*)aCurrentRecord;
  1.4970 +	}
  1.4971 +
  1.4972 +#ifdef __KERNEL_MODE__
  1.4973 +
  1.4974 +inline TInt BTrace::Filter(TUint aCategory)
  1.4975 +	{
  1.4976 +	return SetFilter(aCategory,-1);
  1.4977 +	}
  1.4978 +
  1.4979 +#endif
  1.4980 +
  1.4981 +/**
  1.4982 +The maximum permissible value for aDataSize in trace outputs.
  1.4983 +@see BTraceN BTracePcN BTraceContextN BTraceContextPcN
  1.4984 +@publishedPartner
  1.4985 +@released
  1.4986 +*/
  1.4987 +const TUint KMaxBTraceDataArray = 80;
  1.4988 +
  1.4989 +
  1.4990 +
  1.4991 +/**
  1.4992 +The maximum total number of bytes in a trace record.
  1.4993 +@publishedPartner
  1.4994 +@released
  1.4995 +*/
  1.4996 +const TInt KMaxBTraceRecordSize = 7*4+8+KMaxBTraceDataArray;
  1.4997 +
  1.4998 +
  1.4999 +#ifdef __MARM__
  1.5000 +#define BTRACE_MACHINE_CODED
  1.5001 +#endif
  1.5002 +
  1.5003 +#endif