os/kernelhwsrv/kernel/eka/include/nkern/nk_trace.h
changeset 0 bde4ae8d615e
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/os/kernelhwsrv/kernel/eka/include/nkern/nk_trace.h	Fri Jun 15 03:10:57 2012 +0200
     1.3 @@ -0,0 +1,676 @@
     1.4 +// Copyright (c) 1998-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\nkern\nk_trace.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 NK_TRACE_H
    1.25 +#define NK_TRACE_H
    1.26 +
    1.27 +/**
    1.28 +@internalComponent
    1.29 +*/
    1.30 +#define DEBUGPRINT	KPrintf
    1.31 +
    1.32 +/**
    1.33 +@publishedPartner
    1.34 +@released
    1.35 +*/
    1.36 +#define DEBUGMASK (KDebugMask())
    1.37 +#define DEBUGNUM(x) (KDebugNum(x))
    1.38 +
    1.39 +GLREF_C void KPrintf(const char*,...);
    1.40 +
    1.41 +/**
    1.42 +@publishedPartner
    1.43 +@released
    1.44 +*/
    1.45 +IMPORT_C TInt  KDebugMask();
    1.46 +IMPORT_C TBool KDebugNum(TInt aBitNum);
    1.47 +
    1.48 +#if defined(_DEBUG)
    1.49 +//#if (1)
    1.50 +/**
    1.51 +@publishedPartner
    1.52 +@released
    1.53 +*/
    1.54 +// __KTRACE_MASK only supports the first 32 debug trace bits
    1.55 +#define __KTRACE_MASK(a,p) {if((DEBUGMASK&(a)))p;}
    1.56 +#define __KTRACE_OPT(a,p) {if((DEBUGNUM(a)))p;}
    1.57 +#define __KTRACE_OPT2(a,b,p) {if( (DEBUGNUM(a)) || (DEBUGNUM(b)) )p;}
    1.58 +
    1.59 +/**
    1.60 +@publishedPartner
    1.61 +@released
    1.62 +*/
    1.63 +// __KTRACE_ALL only supports the first 32 debug trace bits
    1.64 +#define __KTRACE_ALL(a,p) {if((DEBUGMASK&(a))==(a))p;}
    1.65 +
    1.66 +/**
    1.67 +@publishedPartner
    1.68 +@released
    1.69 +*/
    1.70 +#define KHARDWARE	0 //0x00000001
    1.71 +
    1.72 +/**
    1.73 +@publishedPartner
    1.74 +@released
    1.75 +*/
    1.76 +#define KBOOT		1 //0x00000002
    1.77 +
    1.78 +/**
    1.79 +@publishedPartner
    1.80 +@released
    1.81 +*/
    1.82 +#define KSERVER		2 //0x00000004
    1.83 +
    1.84 +/**
    1.85 +@publishedPartner
    1.86 +@released
    1.87 +*/
    1.88 +#define KMMU		3 //0x00000008
    1.89 +
    1.90 +/**
    1.91 +@publishedPartner
    1.92 +@released
    1.93 +*/
    1.94 +#define KSEMAPHORE	4 //0x00000010
    1.95 +
    1.96 +/**
    1.97 +@publishedPartner
    1.98 +@released
    1.99 +*/
   1.100 +#define KSCHED		5 //0x00000020
   1.101 +
   1.102 +/**
   1.103 +@publishedPartner
   1.104 +@released
   1.105 +*/
   1.106 +#define KPROC		6 //0x00000040
   1.107 +
   1.108 +/**
   1.109 +@publishedPartner
   1.110 +@released
   1.111 +*/
   1.112 +#define KEXEC		7 //0x00000080
   1.113 +
   1.114 +/**
   1.115 +@publishedPartner
   1.116 +@released
   1.117 +*/
   1.118 +#define KDEBUGGER	8 //0x00000100  // for kernel-side debug agents
   1.119 +
   1.120 +/**
   1.121 +@publishedPartner
   1.122 +@released
   1.123 +*/
   1.124 +#define KTHREAD		9 //0x00000200
   1.125 +
   1.126 +/**
   1.127 +@publishedPartner
   1.128 +@released
   1.129 +*/
   1.130 +#define KDLL		10 //0x00000400
   1.131 +
   1.132 +/**
   1.133 +@publishedPartner
   1.134 +@released
   1.135 +*/
   1.136 +#define KIPC		11 //0x00000800
   1.137 +
   1.138 +/**
   1.139 +@publishedPartner
   1.140 +@released
   1.141 +*/
   1.142 +#define KPBUS1		12 //0x00001000
   1.143 +
   1.144 +/**
   1.145 +@publishedPartner
   1.146 +@released
   1.147 +*/
   1.148 +#define KPBUS2		13 //0x00002000
   1.149 +
   1.150 +/**
   1.151 +@publishedPartner
   1.152 +@released
   1.153 +*/
   1.154 +#define KPBUSDRV	14 //0x00004000
   1.155 +
   1.156 +/**
   1.157 +@publishedPartner
   1.158 +@released
   1.159 +*/
   1.160 +#define KPOWER      15 //0x00008000
   1.161 +
   1.162 +/**
   1.163 +@publishedPartner
   1.164 +@released
   1.165 +*/
   1.166 +#define KTIMING     16 //0x00010000
   1.167 +
   1.168 +/**
   1.169 +@publishedPartner
   1.170 +@released
   1.171 +*/
   1.172 +#define KEVENT      17 //0x00020000
   1.173 +
   1.174 +/**
   1.175 +@publishedPartner
   1.176 +@released
   1.177 +*/
   1.178 +#define KOBJECT		18 //0x00040000
   1.179 +
   1.180 +/**
   1.181 +@publishedPartner
   1.182 +@released
   1.183 +*/
   1.184 +#define KDFC		19 //0x00080000
   1.185 +
   1.186 +/**
   1.187 +@publishedPartner
   1.188 +@released
   1.189 +*/
   1.190 +#define KEXTENSION	20 //0x00100000
   1.191 +
   1.192 +/**
   1.193 +@publishedPartner
   1.194 +@released
   1.195 +*/
   1.196 +#define KSCHED2		21 //0x00200000
   1.197 +
   1.198 +/**
   1.199 +@publishedPartner
   1.200 +@released
   1.201 +*/
   1.202 +#define KLOCDRV		22 //0x00400000
   1.203 +
   1.204 +/**
   1.205 +@publishedPartner
   1.206 +@released
   1.207 +*/
   1.208 +#define KFAIL		23 //0x00800000
   1.209 +
   1.210 +/**
   1.211 +@publishedPartner
   1.212 +@released
   1.213 +*/
   1.214 +#define KTHREAD2	24 //0x01000000
   1.215 +
   1.216 +/**
   1.217 +@publishedPartner
   1.218 +@released
   1.219 +*/
   1.220 +#define KDEVICE		25 //0x02000000
   1.221 +
   1.222 +/**
   1.223 +@publishedPartner
   1.224 +@released
   1.225 +*/
   1.226 +#define KMEMTRACE	26 //0x04000000
   1.227 +
   1.228 +/**
   1.229 +@publishedPartner
   1.230 +@released
   1.231 +*/
   1.232 +#define KDMA        27 //0x08000000
   1.233 +
   1.234 +/**
   1.235 +@publishedPartner
   1.236 +@released
   1.237 +*/
   1.238 +#define KMMU2		28 //0x10000000
   1.239 +
   1.240 +/**
   1.241 +@publishedPartner
   1.242 +@released
   1.243 +*/
   1.244 +#define KNKERN		29 //0x20000000
   1.245 +
   1.246 +/**
   1.247 +@publishedPartner
   1.248 +@released
   1.249 +*/
   1.250 +#define KSCRATCH	30 //0x40000000	// reserved for temporary debugging
   1.251 +
   1.252 +/**
   1.253 +@publishedPartner
   1.254 +@released
   1.255 +*/
   1.256 +#define KPANIC		31 //0x80000000
   1.257 +
   1.258 +/**
   1.259 +@publishedPartner
   1.260 +@released
   1.261 +*/
   1.262 +#define KUSB		32 //0x00000001, index 1
   1.263 +
   1.264 +/**
   1.265 +@publishedPartner
   1.266 +@released
   1.267 +*/
   1.268 +#define KUSBPSL		33 //0x00000002, index 1
   1.269 + 
   1.270 +/**
   1.271 +@internalComponent
   1.272 +@released	
   1.273 +*/
   1.274 +#define KNETWORK1	34 //0x00000004, index 1
   1.275 + 
   1.276 +/**
   1.277 +@internalComponent
   1.278 +@released
   1.279 +*/
   1.280 +#define KNETWORK2   35 //0x00000008, index 1
   1.281 +
   1.282 +/**
   1.283 +@publishedPartner
   1.284 +@released
   1.285 +*/
   1.286 +#define KSOUND1		36 //0x00000010, index 1
   1.287 + 
   1.288 +/**
   1.289 +@publishedPartner
   1.290 +@released
   1.291 +*/
   1.292 +#define KUSBHOST	37 //0x00000020, index 1
   1.293 +
   1.294 +/**
   1.295 +@publishedPartner
   1.296 +@released
   1.297 +*/
   1.298 +#define KUSBOTG		38 //0x00000040, index 1
   1.299 +
   1.300 +/**
   1.301 +@publishedPartner
   1.302 +@released
   1.303 +*/
   1.304 +#define KUSBJOURNAL	39 //0x00000080, index 1
   1.305 +
   1.306 +/**
   1.307 +@publishedPartner
   1.308 +@released
   1.309 +*/
   1.310 +#define KUSBHO		40 //0x00000100, index 1
   1.311 +
   1.312 +/**
   1.313 +@publishedPartner
   1.314 +@released
   1.315 +*/
   1.316 +#define KRESMANAGER 41 //0x00000200, index 1
   1.317 +
   1.318 +/**
   1.319 +@publishedPartner
   1.320 +@prototype
   1.321 +*/
   1.322 +#define KIIC 42 //0x00000400, index 1
   1.323 +
   1.324 +/**
   1.325 +@publishedPartner
   1.326 +@prototype
   1.327 +*/
   1.328 +#define KHCR 43 //0x00000800, index 1
   1.329 +
   1.330 +/**
   1.331 +@internalComponent
   1.332 +@released
   1.333 +*/
   1.334 +#define KREALTIME	63 //0x80000000, index 1
   1.335 +
   1.336 +/**
   1.337 +@internalComponent
   1.338 +@released
   1.339 +*/
   1.340 +#define KPAGING		62 //0x40000000, index 1
   1.341 +
   1.342 +/**
   1.343 +@internalComponent
   1.344 +@released
   1.345 +*/
   1.346 +#define KLOCDPAGING		61 //0x20000000, index 1
   1.347 +
   1.348 +/**
   1.349 +@internalComponent
   1.350 +@released
   1.351 +*/
   1.352 +#define KDATAPAGEWARN	60 //0x10000000, index 1
   1.353 +
   1.354 +/**
   1.355 +@internalComponent
   1.356 +@prototype
   1.357 +*/
   1.358 +#define KPCI	59 //0x08000000, index 1
   1.359 +
   1.360 +/**
   1.361 +@internalComponent
   1.362 +@prototype
   1.363 +*/
   1.364 +#define KPIPE	58 //0x04000000, index 1
   1.365 +
   1.366 +// RESERVED: Trace bits 192 - 255 are reserved for licensee partners
   1.367 +
   1.368 +
   1.369 +/**
   1.370 +@publishedPartner
   1.371 +@released
   1.372 +*/
   1.373 +#define KALWAYS		-1     //0xffffffff
   1.374 +#define KMAXTRACE   (KNumTraceMaskWords*32-1)    // the maximum debug trace bit
   1.375 +#else
   1.376 +#define __KTRACE_OPT(a,p)
   1.377 +#define __KTRACE_ALL(a,p)
   1.378 +#define __KTRACE_OPT2(a,b,p)
   1.379 +#define KALWAYS		-1
   1.380 +#define KMAXTRACE   (KNumTraceMaskWords*32-1)
   1.381 +#endif
   1.382 +
   1.383 +
   1.384 +/**
   1.385 +@publishedPartner
   1.386 +@released
   1.387 +*/
   1.388 +#define DEBUGMASKWORD2	2
   1.389 +
   1.390 +/*
   1.391 +words 0 & 1 of debug mask should be used for kernel debugging
   1.392 +word  2     of debug mask should be used to configure the ways the kernel behaves
   1.393 +word  3     of debug mask should be used to configure the ways the user library behaves
   1.394 +words 4 & 5 of debug mask should be used for file system debugging
   1.395 +words 6 & 7 of debug mask are reserved for licensees
   1.396 +*/
   1.397 +
   1.398 +/**
   1.399 +@publishedPartner
   1.400 +@released
   1.401 +*/
   1.402 +#define KALLTHREADSSYSTEM	64 //0x00000001, index 2
   1.403 +
   1.404 +/**
   1.405 +Suppresses console output (in EWSRV) for faster automated tests.
   1.406 +@publishedPartner
   1.407 +@released
   1.408 +*/
   1.409 +#define KTESTFAST			65 //0x00000002, index 2
   1.410 +
   1.411 +/**
   1.412 +Suppresses anything which might disturb latency testing,
   1.413 +for example platsec diagnostics emitted with the system lock held.
   1.414 +@publishedPartner
   1.415 +@released
   1.416 +*/
   1.417 +#define KTESTLATENCY		66 //0x00000004, index 2
   1.418 +
   1.419 +/**
   1.420 +When a crash occurs this flag determines whether the debugger executes.
   1.421 +If set the crash debugger will NOT operate (even if it's in rom).
   1.422 +If clear the crash debugger will run.
   1.423 +@publishedPartner
   1.424 +@released
   1.425 + */
   1.426 +#define KDEBUGMONITORDISABLE	67 //0x00000008, index 2
   1.427 +
   1.428 +/**
   1.429 +When a crash occurs this flag determines whether the logger executes.
   1.430 +If set the crash logger will NOT operate (even if it's in rom).
   1.431 +If clear the crash logger will run.
   1.432 +@publishedPartner
   1.433 +@released
   1.434 + */
   1.435 +#define KCRASHLOGGERDISABLE	68 //0x00000010, index 2
   1.436 +
   1.437 +/**
   1.438 +Delay scheduling of newly unblocked threads until the next timer tick
   1.439 +occurs, to check for thread priority dependencies. Part of the crazy
   1.440 +scheduler functionality.
   1.441 +@publishedPartner
   1.442 +@released
   1.443 + */
   1.444 +#define KCRAZYSCHEDDELAY 69 //0x00000020, index 2
   1.445 +
   1.446 +
   1.447 +
   1.448 +/* Word 3 of debug mask : configures user library behaviour */
   1.449 +
   1.450 +/**
   1.451 +@publishedPartner
   1.452 +@released
   1.453 +*/
   1.454 +#define KUSERHEAPTRACE		96 //0x00000001, index 3
   1.455 +
   1.456 +
   1.457 +
   1.458 +#ifdef KFAIL
   1.459 +
   1.460 +/**
   1.461 +@publishedPartner
   1.462 +@released
   1.463 +*/
   1.464 +#define __KTRACE_FAIL(r,p) {if ((r)!=KErrNone && (DEBUGNUM(KFAIL))) p;}
   1.465 +
   1.466 +#else
   1.467 +#define __KTRACE_FAIL(r,p)
   1.468 +#endif
   1.469 +
   1.470 +#include <e32btrace.h>
   1.471 +
   1.472 +#ifdef __KERNEL_MODE__
   1.473 +
   1.474 +
   1.475 +class DBTraceFilter2;
   1.476 +
   1.477 +/**
   1.478 +@internalComponent
   1.479 +*/
   1.480 +struct SBTraceData
   1.481 +	{
   1.482 +	TUint8 iFilter[256];
   1.483 +	BTrace::THandler iHandler;
   1.484 +	BTrace::TControlFunction iControl;
   1.485 +	DBTraceFilter2*volatile iFilter2;
   1.486 +
   1.487 +	TBool CheckFilter2(TUint32 aUid);
   1.488 +	};
   1.489 +
   1.490 +/**
   1.491 +@internalComponent
   1.492 +*/
   1.493 +extern SBTraceData BTraceData;
   1.494 +
   1.495 +#if defined(_DEBUG) || defined(BTRACE_KERNEL_ALL)
   1.496 +
   1.497 +#undef BTRACE_THREAD_IDENTIFICATION
   1.498 +#undef BTRACE_CPU_USAGE
   1.499 +#undef BTRACE_CHUNKS
   1.500 +#undef BTRACE_CODESEGS
   1.501 +#undef BTRACE_PAGING
   1.502 +#undef BTRACE_PAGING_MEDIA
   1.503 +#undef BTRACE_KERNEL_MEMORY
   1.504 +#undef BTRACE_RAM_ALLOCATOR
   1.505 +#undef BTRACE_FAST_MUTEX
   1.506 +#undef BTRACE_RESOURCE_MANAGER
   1.507 +#undef BTRACE_RESMANUS
   1.508 +#undef BTRACE_TRAWEVENT
   1.509 +#undef BTRACE_SYMBIAN_KERNEL_SYNC
   1.510 +#undef BTRACE_FLEXIBLE_MEM_MODEL
   1.511 +#undef BTRACE_CLIENT_SERVER
   1.512 +#undef BTRACE_REQUESTS
   1.513 +
   1.514 +
   1.515 +/**
   1.516 +If defined, code for BTrace category BTrace::EThreadIdentification
   1.517 +is compiled into the kernel.
   1.518 +@publishedPartner
   1.519 +@released
   1.520 +*/
   1.521 +#define BTRACE_THREAD_IDENTIFICATION
   1.522 +
   1.523 +/**
   1.524 +If defined, code for BTrace category BTrace::ECpuUsage
   1.525 +is compiled into the kernel.
   1.526 +@publishedPartner
   1.527 +@released
   1.528 +*/
   1.529 +#define BTRACE_CPU_USAGE
   1.530 +
   1.531 +/**
   1.532 +If defined, code for BTrace category BTrace::EChunks is compiled into the
   1.533 +kernel.
   1.534 +@publishedPartner
   1.535 +@released
   1.536 +*/
   1.537 +#define BTRACE_CHUNKS
   1.538 +
   1.539 +/**
   1.540 +If defined, code for BTrace category BTrace::ECodeSegs is compiled into the
   1.541 +kernel.
   1.542 +@publishedPartner
   1.543 +@released
   1.544 +*/
   1.545 +#define BTRACE_CODESEGS
   1.546 +
   1.547 +/**
   1.548 +If defined, code for BTrace category BTrace::EPaging is compiled into the
   1.549 +kernel.
   1.550 +@publishedPartner
   1.551 +@released 9.3
   1.552 +*/
   1.553 +#define BTRACE_PAGING
   1.554 +
   1.555 +/**
   1.556 +If defined, code for BTrace category BTrace::EPagingMedia is compiled into the
   1.557 +Local Media Subsystem and relevant paging media drivers.
   1.558 +@publishedPartner
   1.559 +@released 9.3
   1.560 +*/
   1.561 +#define BTRACE_PAGING_MEDIA
   1.562 +
   1.563 +/**
   1.564 +If defined, code for BTrace category BTrace::EKernelMemory is compiled into the
   1.565 +kernel.
   1.566 +@publishedPartner
   1.567 +@released 9.4
   1.568 +*/
   1.569 +#define BTRACE_KERNEL_MEMORY
   1.570 +
   1.571 +/**
   1.572 +If defined, code for BTrace category BTrace::ERamAllocator is compiled into the
   1.573 +kernel.
   1.574 +
   1.575 +This BTrace category is only supported on the multiple and moving memory models.
   1.576 +
   1.577 +@publishedPartner
   1.578 +@released 9.4
   1.579 +*/
   1.580 +#if defined(__MEMMODEL_MOVING__) || defined (__MEMMODEL_MULTIPLE__)
   1.581 +#define BTRACE_RAM_ALLOCATOR
   1.582 +#endif
   1.583 +
   1.584 +/**
   1.585 +If defined, code for BTrace category BTrace::EFastMutex is compiled into the
   1.586 +kernel.
   1.587 +*/
   1.588 +#define BTRACE_FAST_MUTEX
   1.589 +
   1.590 +/**
   1.591 +If defined, code for BTrace category BTrace::EResourceManager is compiled into the
   1.592 +Resource Manager Subsystem.
   1.593 +@publishedPartner
   1.594 +@released 9.5
   1.595 +*/
   1.596 +#define BTRACE_RESOURCE_MANAGER
   1.597 +
   1.598 +/**
   1.599 +If defined, code for BTrace category BTrace::EResourceManagerUs is compiled into the
   1.600 +Resource Manager Subsystem's User-Side API.
   1.601 +@publishedPartner
   1.602 +@released 9.5
   1.603 +*/
   1.604 +#define BTRACE_RESMANUS
   1.605 +
   1.606 +/**
   1.607 +If defined, code for BTrace category BTrace::ERawEvent is compiled into the
   1.608 +kernel.
   1.609 +@publishedPartner
   1.610 +@released 9.5
   1.611 +*/
   1.612 +#define BTRACE_TRAWEVENT
   1.613 +
   1.614 +/**
   1.615 +If defined, code for BTrace category BTrace::ESymbianKernelSync is compiled into
   1.616 +the kernel.
   1.617 +*/
   1.618 +#define BTRACE_SYMBIAN_KERNEL_SYNC
   1.619 +
   1.620 +/**
   1.621 +If defined, code for BTrace category BTrace::EFlexibleMemModel is compiled into
   1.622 +the kernel.
   1.623 +
   1.624 +This BTrace category is only supported on the flexible memory model.
   1.625 +*/
   1.626 +#define BTRACE_FLEXIBLE_MEM_MODEL
   1.627 +
   1.628 +/**
   1.629 +If defined, code for BTrace category BTrace::EIic is compiled into the
   1.630 +IIC Subsystem.
   1.631 +*/
   1.632 +#define BTRACE_IIC
   1.633 +
   1.634 +/**
   1.635 +If defined, code for BTrace category BTrace::EClientServer is compiled into the
   1.636 +kernel.
   1.637 +*/
   1.638 +#define BTRACE_CLIENT_SERVER
   1.639 +
   1.640 +/**
   1.641 +If defined, code for BTrace category BTrace::ERequest is compiled into the
   1.642 +kernel.
   1.643 +*/
   1.644 +#define BTRACE_REQUESTS
   1.645 +
   1.646 +#endif // _DEBUG
   1.647 +
   1.648 +#endif // __KERNEL_MODE__
   1.649 +
   1.650 +
   1.651 +#if defined(BTRACE_KERNEL_PROTOTYPE)
   1.652 +// Prototype trace categories...
   1.653 +#undef BTRACE_THREAD_PRIORITY
   1.654 +#define BTRACE_THREAD_PRIORITY
   1.655 +#endif
   1.656 +
   1.657 +#if defined(BTRACE_KERNEL_VERBOSE)
   1.658 +// Verbose trace options
   1.659 +
   1.660 +#ifdef BTRACE_PAGING
   1.661 +/**
   1.662 +If defined, verbose code for BTrace category BTrace::EPaging is compiled into the
   1.663 +kernel.
   1.664 +@publishedPartner
   1.665 +@released 9.3
   1.666 +*/
   1.667 +#define BTRACE_PAGING_VERBOSE
   1.668 +#endif
   1.669 +
   1.670 +#endif //BTRACE_KERNEL_VERBOSE
   1.671 +
   1.672 +#if defined(_DEBUG) && !defined(__SMP__)
   1.673 +/**
   1.674 +@internalComponent
   1.675 +*/
   1.676 +TInt KCrazySchedulerEnabled();
   1.677 +#endif
   1.678 +
   1.679 +#endif // NK_TRACE_H