--- /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 <e32btrace.h>
+
+#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