diff -r 000000000000 -r a41df078684a kernel/eka/include/nkern/nk_trace.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kernel/eka/include/nkern/nk_trace.h Mon Oct 19 15:55:17 2009 +0100 @@ -0,0 +1,660 @@ +// Copyright (c) 1998-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// e32\include\nkern\nk_trace.h +// +// WARNING: This file contains some APIs which are internal and are subject +// to change without notice. Such APIs should therefore not be used +// outside the Kernel and Hardware Services package. +// + +#ifndef NK_TRACE_H +#define NK_TRACE_H + +/** +@internalComponent +*/ +#define DEBUGPRINT KPrintf + +/** +@publishedPartner +@released +*/ +#define DEBUGMASK (KDebugMask()) +#define DEBUGNUM(x) (KDebugNum(x)) + +GLREF_C void KPrintf(const char*,...); + +/** +@publishedPartner +@released +*/ +IMPORT_C TInt KDebugMask(); +IMPORT_C TBool KDebugNum(TInt aBitNum); + +#if defined(_DEBUG) +//#if (1) +/** +@publishedPartner +@released +*/ +// __KTRACE_MASK only supports the first 32 debug trace bits +#define __KTRACE_MASK(a,p) {if((DEBUGMASK&(a)))p;} +#define __KTRACE_OPT(a,p) {if((DEBUGNUM(a)))p;} +#define __KTRACE_OPT2(a,b,p) {if( (DEBUGNUM(a)) || (DEBUGNUM(b)) )p;} + +/** +@publishedPartner +@released +*/ +// __KTRACE_ALL only supports the first 32 debug trace bits +#define __KTRACE_ALL(a,p) {if((DEBUGMASK&(a))==(a))p;} + +/** +@publishedPartner +@released +*/ +#define KHARDWARE 0 //0x00000001 + +/** +@publishedPartner +@released +*/ +#define KBOOT 1 //0x00000002 + +/** +@publishedPartner +@released +*/ +#define KSERVER 2 //0x00000004 + +/** +@publishedPartner +@released +*/ +#define KMMU 3 //0x00000008 + +/** +@publishedPartner +@released +*/ +#define KSEMAPHORE 4 //0x00000010 + +/** +@publishedPartner +@released +*/ +#define KSCHED 5 //0x00000020 + +/** +@publishedPartner +@released +*/ +#define KPROC 6 //0x00000040 + +/** +@publishedPartner +@released +*/ +#define KEXEC 7 //0x00000080 + +/** +@publishedPartner +@released +*/ +#define KDEBUGGER 8 //0x00000100 // for kernel-side debug agents + +/** +@publishedPartner +@released +*/ +#define KTHREAD 9 //0x00000200 + +/** +@publishedPartner +@released +*/ +#define KDLL 10 //0x00000400 + +/** +@publishedPartner +@released +*/ +#define KIPC 11 //0x00000800 + +/** +@publishedPartner +@released +*/ +#define KPBUS1 12 //0x00001000 + +/** +@publishedPartner +@released +*/ +#define KPBUS2 13 //0x00002000 + +/** +@publishedPartner +@released +*/ +#define KPBUSDRV 14 //0x00004000 + +/** +@publishedPartner +@released +*/ +#define KPOWER 15 //0x00008000 + +/** +@publishedPartner +@released +*/ +#define KTIMING 16 //0x00010000 + +/** +@publishedPartner +@released +*/ +#define KEVENT 17 //0x00020000 + +/** +@publishedPartner +@released +*/ +#define KOBJECT 18 //0x00040000 + +/** +@publishedPartner +@released +*/ +#define KDFC 19 //0x00080000 + +/** +@publishedPartner +@released +*/ +#define KEXTENSION 20 //0x00100000 + +/** +@publishedPartner +@released +*/ +#define KSCHED2 21 //0x00200000 + +/** +@publishedPartner +@released +*/ +#define KLOCDRV 22 //0x00400000 + +/** +@publishedPartner +@released +*/ +#define KFAIL 23 //0x00800000 + +/** +@publishedPartner +@released +*/ +#define KTHREAD2 24 //0x01000000 + +/** +@publishedPartner +@released +*/ +#define KDEVICE 25 //0x02000000 + +/** +@publishedPartner +@released +*/ +#define KMEMTRACE 26 //0x04000000 + +/** +@publishedPartner +@released +*/ +#define KDMA 27 //0x08000000 + +/** +@publishedPartner +@released +*/ +#define KMMU2 28 //0x10000000 + +/** +@publishedPartner +@released +*/ +#define KNKERN 29 //0x20000000 + +/** +@publishedPartner +@released +*/ +#define KSCRATCH 30 //0x40000000 // reserved for temporary debugging + +/** +@publishedPartner +@released +*/ +#define KPANIC 31 //0x80000000 + +/** +@publishedPartner +@released +*/ +#define KUSB 32 //0x00000001, index 1 + +/** +@publishedPartner +@released +*/ +#define KUSBPSL 33 //0x00000002, index 1 + +/** +@internalComponent +@released +*/ +#define KNETWORK1 34 //0x00000004, index 1 + +/** +@internalComponent +@released +*/ +#define KNETWORK2 35 //0x00000008, index 1 + +/** +@publishedPartner +@released +*/ +#define KSOUND1 36 //0x00000010, index 1 + +/** +@publishedPartner +@released +*/ +#define KUSBHOST 37 //0x00000020, index 1 + +/** +@publishedPartner +@released +*/ +#define KUSBOTG 38 //0x00000040, index 1 + +/** +@publishedPartner +@released +*/ +#define KUSBJOURNAL 39 //0x00000080, index 1 + +/** +@publishedPartner +@released +*/ +#define KUSBHO 40 //0x00000100, index 1 + +/** +@publishedPartner +@released +*/ +#define KRESMANAGER 41 //0x00000200, index 1 + +/** +@publishedPartner +@prototype +*/ +#define KIIC 42 //0x00000400, index 1 + +/** +@internalComponent +@released +*/ +#define KREALTIME 63 //0x80000000, index 1 + +/** +@internalComponent +@released +*/ +#define KPAGING 62 //0x40000000, index 1 + +/** +@internalComponent +@released +*/ +#define KLOCDPAGING 61 //0x20000000, index 1 + +/** +@internalComponent +@released +*/ +#define KDATAPAGEWARN 60 //0x10000000, index 1 + +/** +@internalComponent +@prototype +*/ +#define KPCI 59 //0x08000000, index 1 + +/** +@internalComponent +@prototype +*/ +#define KPIPE 58 //0x04000000, index 1 + +// RESERVED: Trace bits 192 - 255 are reserved for licensee partners + + +/** +@publishedPartner +@released +*/ +#define KALWAYS -1 //0xffffffff +#define KMAXTRACE (KNumTraceMaskWords*32-1) // the maximum debug trace bit +#else +#define __KTRACE_OPT(a,p) +#define __KTRACE_ALL(a,p) +#define __KTRACE_OPT2(a,b,p) +#define KALWAYS -1 +#define KMAXTRACE (KNumTraceMaskWords*32-1) +#endif + + +/** +@publishedPartner +@released +*/ +#define DEBUGMASKWORD2 2 + +/* +words 0 & 1 of debug mask should be used for kernel debugging +word 2 of debug mask should be used to configure the ways the kernel behaves +word 3 of debug mask should be used to configure the ways the user library behaves +words 4 & 5 of debug mask should be used for file system debugging +words 6 & 7 of debug mask are reserved for licensees +*/ + +/** +@publishedPartner +@released +*/ +#define KALLTHREADSSYSTEM 64 //0x00000001, index 2 + +/** +Suppresses console output (in EWSRV) for faster automated tests. +@publishedPartner +@released +*/ +#define KTESTFAST 65 //0x00000002, index 2 + +/** +Suppresses anything which might disturb latency testing, +for example platsec diagnostics emitted with the system lock held. +@publishedPartner +@released +*/ +#define KTESTLATENCY 66 //0x00000004, index 2 + +/** +When a crash occurs this flag determines whether the debugger executes. +If set the crash debugger will NOT operate (even if it's in rom). +If clear the crash debugger will run. +@publishedPartner +@released + */ +#define KDEBUGMONITORDISABLE 67 //0x00000008, index 2 + +/** +When a crash occurs this flag determines whether the logger executes. +If set the crash logger will NOT operate (even if it's in rom). +If clear the crash logger will run. +@publishedPartner +@released + */ +#define KCRASHLOGGERDISABLE 68 //0x00000010, index 2 + +/** +Delay scheduling of newly unblocked threads until the next timer tick +occurs, to check for thread priority dependencies. Part of the crazy +scheduler functionality. +@publishedPartner +@released + */ +#define KCRAZYSCHEDDELAY 69 //0x00000020, index 2 + + + +/* Word 3 of debug mask : configures user library behaviour */ + +/** +@publishedPartner +@released +*/ +#define KUSERHEAPTRACE 96 //0x00000001, index 3 + + + +#ifdef KFAIL + +/** +@publishedPartner +@released +*/ +#define __KTRACE_FAIL(r,p) {if ((r)!=KErrNone && (DEBUGNUM(KFAIL))) p;} + +#else +#define __KTRACE_FAIL(r,p) +#endif + +#include + +#ifdef __KERNEL_MODE__ + + +class DBTraceFilter2; + +/** +@internalComponent +*/ +struct SBTraceData + { + TUint8 iFilter[256]; + BTrace::THandler iHandler; + BTrace::TControlFunction iControl; + DBTraceFilter2*volatile iFilter2; + + TBool CheckFilter2(TUint32 aUid); + }; + +/** +@internalComponent +*/ +extern SBTraceData BTraceData; + +#if defined(_DEBUG) || defined(BTRACE_KERNEL_ALL) + +#undef BTRACE_THREAD_IDENTIFICATION +#undef BTRACE_CPU_USAGE +#undef BTRACE_CHUNKS +#undef BTRACE_CODESEGS +#undef BTRACE_PAGING +#undef BTRACE_PAGING_MEDIA +#undef BTRACE_KERNEL_MEMORY +#undef BTRACE_RAM_ALLOCATOR +#undef BTRACE_FAST_MUTEX +#undef BTRACE_RESOURCE_MANAGER +#undef BTRACE_RESMANUS +#undef BTRACE_TRAWEVENT +#undef BTRACE_SYMBIAN_KERNEL_SYNC +#undef BTRACE_FLEXIBLE_MEM_MODEL + + +/** +If defined, code for BTrace category BTrace::EThreadIdentification +is compiled into the kernel. +@publishedPartner +@released +*/ +#define BTRACE_THREAD_IDENTIFICATION + +/** +If defined, code for BTrace category BTrace::ECpuUsage +is compiled into the kernel. +@publishedPartner +@released +*/ +#define BTRACE_CPU_USAGE + +/** +If defined, code for BTrace category BTrace::EChunks is compiled into the +kernel. +@publishedPartner +@released +*/ +#define BTRACE_CHUNKS + +/** +If defined, code for BTrace category BTrace::ECodeSegs is compiled into the +kernel. +@publishedPartner +@released +*/ +#define BTRACE_CODESEGS + +/** +If defined, code for BTrace category BTrace::EPaging is compiled into the +kernel. +@publishedPartner +@released 9.3 +*/ +#define BTRACE_PAGING + +/** +If defined, code for BTrace category BTrace::EPagingMedia is compiled into the +Local Media Subsystem and relevant paging media drivers. +@publishedPartner +@released 9.3 +*/ +#define BTRACE_PAGING_MEDIA + +/** +If defined, code for BTrace category BTrace::EKernelMemory is compiled into the +kernel. +@publishedPartner +@released 9.4 +*/ +#define BTRACE_KERNEL_MEMORY + +/** +If defined, code for BTrace category BTrace::ERamAllocator is compiled into the +kernel. + +This BTrace category is only supported on the multiple and moving memory models. + +@publishedPartner +@released 9.4 +*/ +#if defined(__MEMMODEL_MOVING__) || defined (__MEMMODEL_MULTIPLE__) +#define BTRACE_RAM_ALLOCATOR +#endif + +/** +If defined, code for BTrace category BTrace::EFastMutex is compiled into the +kernel. +*/ +#define BTRACE_FAST_MUTEX + +/** +If defined, code for BTrace category BTrace::EResourceManager is compiled into the +Resource Manager Subsystem. +@publishedPartner +@released 9.5 +*/ +#define BTRACE_RESOURCE_MANAGER + +/** +If defined, code for BTrace category BTrace::EResourceManagerUs is compiled into the +Resource Manager Subsystem's User-Side API. +@publishedPartner +@released 9.5 +*/ +#define BTRACE_RESMANUS + +/** +If defined, code for BTrace category BTrace::ERawEvent is compiled into the +kernel. +@publishedPartner +@released 9.5 +*/ +#define BTRACE_TRAWEVENT + +/** +If defined, code for BTrace category BTrace::ESymbianKernelSync is compiled into +the kernel. +*/ +#define BTRACE_SYMBIAN_KERNEL_SYNC + +/** +If defined, code for BTrace category BTrace::EFlexibleMemModel is compiled into +the kernel. + +This BTrace category is only supported on the flexible memory model. +*/ +#define BTRACE_FLEXIBLE_MEM_MODEL + +/** +If defined, code for BTrace category BTrace::EIic is compiled into the +IIC Subsystem. +*/ +#define BTRACE_IIC + +#endif // _DEBUG + +#endif // __KERNEL_MODE__ + + +#if defined(BTRACE_KERNEL_PROTOTYPE) +// Prototype trace categories... +#undef BTRACE_CLIENT_SERVER +#define BTRACE_CLIENT_SERVER +#undef BTRACE_REQUESTS +#define BTRACE_REQUESTS +#undef BTRACE_THREAD_PRIORITY +#define BTRACE_THREAD_PRIORITY +#endif + +#if defined(BTRACE_KERNEL_VERBOSE) +// Verbose trace options + +#ifdef BTRACE_PAGING +/** +If defined, verbose code for BTrace category BTrace::EPaging is compiled into the +kernel. +@publishedPartner +@released 9.3 +*/ +#define BTRACE_PAGING_VERBOSE +#endif + +#endif //BTRACE_KERNEL_VERBOSE + +#if defined(_DEBUG) && !defined(__SMP__) +/** +@internalComponent +*/ +TInt KCrazySchedulerEnabled(); +#endif + +#endif // NK_TRACE_H