0
|
1 |
/*
|
|
2 |
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
|
3 |
* All rights reserved.
|
|
4 |
* This component and the accompanying materials are made available
|
|
5 |
* under the terms of the License "Eclipse Public License v1.0"
|
|
6 |
* which accompanies this distribution, and is available
|
|
7 |
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
|
|
8 |
*
|
|
9 |
* Initial Contributors:
|
|
10 |
* Nokia Corporation - initial contribution.
|
|
11 |
*
|
|
12 |
* Contributors:
|
|
13 |
*
|
|
14 |
* Description:
|
|
15 |
*
|
|
16 |
*/
|
|
17 |
|
|
18 |
|
|
19 |
|
|
20 |
#ifndef IADTRACE_H
|
|
21 |
#define IADTRACE_H
|
|
22 |
|
|
23 |
// INCLUDES
|
|
24 |
#include <kernel.h>
|
|
25 |
|
|
26 |
// CONSTANTS
|
|
27 |
|
|
28 |
const TUint8 KFaultIdentifierShift = 8;
|
|
29 |
const TUint8 KChannelNumberShift = 16;
|
|
30 |
const TUint8 KExtraInfoShift = 24;
|
|
31 |
|
|
32 |
enum TIADFaultCategories
|
|
33 |
{
|
|
34 |
EIADMemoryAllocationFailure = 1, // 0x01 Ident 23
|
|
35 |
EIADNullParameter, // 0x02 Ident 30
|
|
36 |
EIADWrongParameter, // 0x03 Ident 19
|
|
37 |
EIADQueueOutOfSync, // 0x04 ident 15
|
|
38 |
EIADWrongRequest, // 0x05 ident 14
|
|
39 |
EIADSameRequestTwice, // 0x06 ident 0
|
|
40 |
EIADChannelNumberNotSpecifiedInInfo, // 0x07 ident 1
|
|
41 |
EIADWrongDFCQueueUsed, // 0x08 ident 4
|
|
42 |
EIADDoNotCallInISRContext, // 0x09 ident 0
|
|
43 |
EIADDFCAlreadyQueued, // 0x0a ident 2
|
|
44 |
EIADWrongKernelResponse, // 0x0b ident 0
|
|
45 |
EIADDesReadFailed, // 0x0d ident 9
|
|
46 |
EIADConfigurationInvalid, // 0x0e ident 0
|
|
47 |
EIADInvalidCtrlMessage, // 0x0f ident 4
|
|
48 |
EIADCmtConnectionNotInit, // 0x10 ident 0
|
|
49 |
EIADCmtConnectionLost, // 0x11 ident 4
|
|
50 |
EIADTooManyBytesToPresent, // 0x12 ident 0
|
|
51 |
EIADChannelOpenedBeforePhysicalLayerInit, // 0x13 ident 0
|
|
52 |
EIADWrongTypeOfOpenPending, // 0x14 ident 2
|
|
53 |
EIADBufferNotReleased, // 0x15 ident 0
|
|
54 |
EIADUnknownPipeFCType, // 0x16 ident 2
|
|
55 |
EIADWrongPipeHandle, // 0x17 ident 10
|
|
56 |
EIADUnknownPipeOrPepMsg, // 0x18 ident 2
|
|
57 |
EIADUnkownMedia, // 0x19 ident 0
|
|
58 |
EIADIndicationOrderFailed, // 0x2a ident 0
|
|
59 |
EIADNotSupported, // 0x2b ident 5
|
|
60 |
EIADCommon, // 0x2c ident 0
|
|
61 |
EIADOverTheLimits, // 0x2d ident 43
|
|
62 |
EIADDesWriteFailed, // 0x2e ident 4
|
|
63 |
};
|
|
64 |
// Used to identify code line where reset happens
|
|
65 |
enum TIADFaultIdentifier
|
|
66 |
{
|
|
67 |
EIADFaultIdentifier1 = 1, // 0x01
|
|
68 |
EIADFaultIdentifier2, // 0x02
|
|
69 |
EIADFaultIdentifier3, // 0x03
|
|
70 |
EIADFaultIdentifier4, // 0x04
|
|
71 |
EIADFaultIdentifier5, // 0x05
|
|
72 |
EIADFaultIdentifier6, // 0x06
|
|
73 |
EIADFaultIdentifier7, // 0x07
|
|
74 |
EIADFaultIdentifier8, // 0x08
|
|
75 |
EIADFaultIdentifier9, // 0x09
|
|
76 |
EIADFaultIdentifier10, // 0x0a
|
|
77 |
EIADFaultIdentifier11, // 0x0b
|
|
78 |
EIADFaultIdentifier12, // 0x0c
|
|
79 |
EIADFaultIdentifier13, // 0x0d
|
|
80 |
EIADFaultIdentifier14, // 0x0e
|
|
81 |
EIADFaultIdentifier15, // 0x0f
|
|
82 |
EIADFaultIdentifier16, // 0x10
|
|
83 |
EIADFaultIdentifier17, // 0x11
|
|
84 |
EIADFaultIdentifier18, // 0x12
|
|
85 |
EIADFaultIdentifier19, // 0x13
|
|
86 |
EIADFaultIdentifier20, // 0x14
|
|
87 |
EIADFaultIdentifier21, // 0x15
|
|
88 |
EIADFaultIdentifier22, // 0x16
|
|
89 |
EIADFaultIdentifier23, // 0x17
|
|
90 |
EIADFaultIdentifier24, // 0x18
|
|
91 |
EIADFaultIdentifier25, // 0x19
|
|
92 |
EIADFaultIdentifier26, // 0x20
|
|
93 |
EIADFaultIdentifier27, // 0x21
|
|
94 |
EIADFaultIdentifier28, // 0x22
|
|
95 |
EIADFaultIdentifier29, // 0x23
|
|
96 |
EIADFaultIdentifier30, // 0x24
|
|
97 |
EIADFaultIdentifier31, // 0x25
|
|
98 |
EIADFaultIdentifier32, // 0x26
|
|
99 |
EIADFaultIdentifier33, // 0x27
|
|
100 |
EIADFaultIdentifier34, // 0x28
|
|
101 |
EIADFaultIdentifier35, // 0x29
|
|
102 |
EIADFaultIdentifier36, // 0x2a
|
|
103 |
EIADFaultIdentifier37, // 0x2b
|
|
104 |
EIADFaultIdentifier38, // 0x2c
|
|
105 |
EIADFaultIdentifier39, // 0x2d
|
|
106 |
EIADFaultIdentifier40, // 0x2e
|
|
107 |
EIADFaultIdentifier41, // 0x2f
|
|
108 |
EIADFaultIdentifier42, // 0x30
|
|
109 |
EIADFaultIdentifier43, // 0x31
|
|
110 |
};
|
|
111 |
|
|
112 |
//ISCE
|
|
113 |
enum TClassIdentifier
|
|
114 |
{
|
|
115 |
EDISILinkTraceId = 0x00,
|
|
116 |
};
|
|
117 |
const TUint8 KClassIdentifierShift( 8 );
|
|
118 |
|
|
119 |
//ISCE
|
|
120 |
|
|
121 |
// MACROS
|
|
122 |
#define _T( a ) a
|
|
123 |
#define __TRACE_PRINTF(a) Kern::Printf a
|
|
124 |
|
|
125 |
#ifdef _DEBUG //UNCOMMENT THESE SOON TO ABLE TRACES ONLY IN UDEB
|
|
126 |
|
|
127 |
void BuildTraceFunc( const TDesC& aPrefix );
|
|
128 |
void DataDumpTraceFunc( const TDesC8& aPtr, TBool aSend );
|
|
129 |
|
|
130 |
#define BUILD_TRACE( a ) BuildTraceFunc( a )
|
|
131 |
#if defined FULL_DATA_DUMP
|
|
132 |
#define FULL_DATA_TRACE_DUMP
|
|
133 |
#endif
|
|
134 |
#if defined DATA_DUMP
|
|
135 |
#define DATA_DUMP_TRACE( a, b ) DataDumpTraceFunc( a, b )
|
|
136 |
#else
|
|
137 |
#define DATA_DUMP_TRACE( a, b )
|
|
138 |
#endif
|
|
139 |
#if defined COMPONENT_TRACE_FLAG
|
|
140 |
#define C_TRACE(a) __TRACE_PRINTF(a)
|
|
141 |
#else
|
|
142 |
#define C_TRACE(a)
|
|
143 |
#endif // COMPONENT_TRACE_FLAG
|
|
144 |
|
|
145 |
#if defined API_TRACE_FLAG
|
|
146 |
#define A_TRACE(a) __TRACE_PRINTF(a)
|
|
147 |
#else
|
|
148 |
#define A_TRACE(a)
|
|
149 |
#endif // API_TRACE_FLAG
|
|
150 |
|
|
151 |
#if defined EXTENDED_TRACE_FLAG
|
|
152 |
#define E_TRACE(a) __TRACE_PRINTF(a)
|
|
153 |
#else
|
|
154 |
#define E_TRACE(a)
|
|
155 |
#endif // EXTENDED_TRACE_FLAG
|
|
156 |
#else
|
|
157 |
#define C_TRACE(a)
|
|
158 |
#define A_TRACE(a)
|
|
159 |
#define E_TRACE(a)
|
|
160 |
#define BUILD_TRACE(a)
|
|
161 |
#define DATA_DUMP_TRACE(a, b)
|
|
162 |
#endif // _DEBUG
|
|
163 |
//
|
|
164 |
// Resets are made both in UDEB and UREL (traces only in udeb)
|
|
165 |
#define ASSERT_RESET_ALWAYS(a,b) if(!(a)) { __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__)); Kern::Fault( "IAD Fault:", b ); }
|
|
166 |
#define TRACE_ASSERT_ALWAYS __TRACE_PRINTF( ("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__) )
|
|
167 |
#define TRACE_ASSERT(a) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled=" __DATE__" "__TIME__, __LINE__ ))
|
|
168 |
#define TRACE_ASSERT_WITH_MSG(a, b) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled=" __DATE__" "__TIME__, __LINE__ ));__TRACE_PRINTF((b));
|
|
169 |
#define TRACE_ASSERT_INFO(a, b) if (!(a)) __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, extra info 0x%08x, compiled=" __DATE__" "__TIME__, __LINE__, b ));
|
|
170 |
#define TRACE_WARNING(a, b) if (!(a)) __TRACE_PRINTF(("Warning: file=" __FILE__ ", line=%d, extra info 0x%x, compiled=" __DATE__" "__TIME__, __LINE__, b ));
|
|
171 |
|
|
172 |
// Give appropriate context as param, fault if current context different.
|
|
173 |
#define ASSERT_CONTEXT_ALWAYS( a, b )NKern::TContext current_context=(NKern::TContext)NKern::CurrentContext();ASSERT_RESET_ALWAYS( current_context == a, EIADDoNotCallInISRContext | b<<KChannelNumberShift);
|
|
174 |
#define ASSERT_PANIC_USER_THREAD_ALWAYS( a, b, c ) if(!(a)){__TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__));Kern::ThreadKill( b, EExitPanic, c, _L8("IAD Fault") );}
|
|
175 |
|
|
176 |
//MIST2IADAPI asserts
|
|
177 |
#define IAD_ASSERT_RESET_ALWAYS( a, b, c ) if(!(a)) { __TRACE_PRINTF(("Assertion failed: file=" __FILE__ ", line=%d, compiled="__DATE__" "__TIME__, __LINE__)); Kern::Fault( c, b ); }
|
|
178 |
#define IAD_ASSERT_THREAD_CONTEXT_ALWAYS( a, b )IAD_ASSERT_RESET_ALWAYS( NKern::CurrentContext() == NKern::EThread, a, b );
|
|
179 |
|
|
180 |
|
|
181 |
// DATA TYPES
|
|
182 |
|
|
183 |
// FUNCTION PROTOTYPES
|
|
184 |
|
|
185 |
// FORWARD DECLARATIONS
|
|
186 |
|
|
187 |
#endif // IADTRACE_H
|
|
188 |
|
|
189 |
// End of File
|