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