debuggercdi/com.nokia.carbide.cpp.debug.crashdebugger/html/DebuggingInformation/CrashDebuggerInfoAboutKernel.guide03.html
author tzelaw
Tue, 14 Apr 2009 15:03:19 -0500
changeset 94 d74b720418db
parent 2 d760517a8095
child 990 5d016a880824
child 1024 48b401835d0a
permissions -rw-r--r--
Test framework support: Ask debugger to remember DebugTarget so test framework can use it to setup test framework related utility. With this we can use the DebugUI way of launching while keeping test framework functionality
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
cawthron
parents:
diff changeset
     1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
cawthron
parents:
diff changeset
     2
	"http://www.w3.org/TR/html4/loose.dtd">
cawthron
parents:
diff changeset
     3
	<html><head>
cawthron
parents:
diff changeset
     4
	<title>Current Thread State</title>
cawthron
parents:
diff changeset
     5
	<link href="sysdoc-eclipse.css" type="text/css" rel="stylesheet" media="screen">
cawthron
parents:
diff changeset
     6
	<link href="sysdoc-eclipse.css" type="text/css" rel="stylesheet" media="print">
cawthron
parents:
diff changeset
     7
	<link href="../../book.css" type="text/css" rel="stylesheet" >
cawthron
parents:
diff changeset
     8
    <style type="text/css">
cawthron
parents:
diff changeset
     9
<!--
cawthron
parents:
diff changeset
    10
.style14 {font-weight: bold}
cawthron
parents:
diff changeset
    11
-->
cawthron
parents:
diff changeset
    12
    </style>
cawthron
parents:
diff changeset
    13
	<div class="Head1">
cawthron
parents:
diff changeset
    14
cawthron
parents:
diff changeset
    15
<h2>Current Thread State</h2>
cawthron
parents:
diff changeset
    16
</div>
cawthron
parents:
diff changeset
    17
<div>
cawthron
parents:
diff changeset
    18
<p>The current thread is the thread that was executing when the fault
cawthron
parents:
diff changeset
    19
occurred. The 23 lines starting at line 10 of the output gives information
cawthron
parents:
diff changeset
    20
relating to the current thread:</p>
cawthron
parents:
diff changeset
    21
<p class="listing">TheCurrentThread=64039408<br>
cawthron
parents:
diff changeset
    22
  THREAD at 64039408 VPTR=f803423c AccessCount=3 Owner=64038d5c<br>Full name test2.exe::Main<br>Thread MState READY<br>Default priority 16 WaitLink Priority 16<br>ExitInfo 2,100,USER<br>Flags 00000004, Handles 640330bc<br>Supervisor stack base 6571f000 size 1000<br>User stack base 00402000 size 2000<br>Id=26, Alctr=00600000, Created alctr=00600000, Frame=00000000<br>Trap handler=00000000, ActiveScheduler=00000000, Exception handler=00000000<br>TempObj=00000000 TempAlloc=00000000 IpcCount=00000000<br>NThread @ 640396b0 Pri 16 NState READY<br>Next=640396b0 Prev=640396b0 Att=03 iUserContextType=0b<br>HeldFM=00000000 WaitFM=00000000 AddrSp=64038d5c<br>Time=17 Timeslice=20 ReqCount=0<br>SuspendCount=0 CsCount=1 CsFunction=fffffffe<br>SavedSP=6571ff34 ExtraContext=00000000 ExtraContextSize=0000<br>DACR 63990000<br>R13_USR 6571ff88 R14_USR f8025bc0 SPSR_SVC 10000004<br>
cawthron
parents:
diff changeset
    23
R4 f8033794  R5 64039408  R6 640396b0  R7 f8028518<br>
cawthron
parents:
diff changeset
    24
R8 640396b0  R9 640396b0 R10 00000000 R11 f80284d8<br>
cawthron
parents:
diff changeset
    25
PC 00000000</p>
cawthron
parents:
diff changeset
    26
<ul>
cawthron
parents:
diff changeset
    27
<li>
cawthron
parents:
diff changeset
    28
<p><b><a href="CrashDebuggerInfoAboutKernel.guide03.html" title="Extracting information about the kernel / Current thread state / Thread object and access count">Thread object and access count</a></b></p>
cawthron
parents:
diff changeset
    29
</li>
cawthron
parents:
diff changeset
    30
<li class="style14">
cawthron
parents:
diff changeset
    31
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ename" title="Extracting information about the kernel / Current thread state / The thread name">The thread name</a></p>
cawthron
parents:
diff changeset
    32
</li>
cawthron
parents:
diff changeset
    33
<li class="style14">
cawthron
parents:
diff changeset
    34
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2estate" title="Extracting information about the kernel / Current thread state / The thread state, exit information, priority">The thread state, exit information, priority</a></p>
cawthron
parents:
diff changeset
    35
</li>
cawthron
parents:
diff changeset
    36
<li class="style14">
cawthron
parents:
diff changeset
    37
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2eflags" title="Extracting information about the kernel / Current thread state / Thread flags">Thread flags</a></p>
cawthron
parents:
diff changeset
    38
</li>
cawthron
parents:
diff changeset
    39
<li class="style14">
cawthron
parents:
diff changeset
    40
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ehandles" title="Extracting information about the kernel / Current thread state / Handles">Handles</a></p>
cawthron
parents:
diff changeset
    41
</li>
cawthron
parents:
diff changeset
    42
<li class="style14">
cawthron
parents:
diff changeset
    43
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2estack%2dadrs" title="Extracting information about the kernel / Current thread state / Kernel &amp; user stack addresses">Kernel &amp; user stack addresses</a></p>
cawthron
parents:
diff changeset
    44
</li>
cawthron
parents:
diff changeset
    45
<li class="style14">
cawthron
parents:
diff changeset
    46
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ethreadid" title="Extracting information about the kernel / Current thread state / Thread id, RAllocator instances, trap frame">Thread id, RAllocator instances, trap frame</a></p>
cawthron
parents:
diff changeset
    47
</li>
cawthron
parents:
diff changeset
    48
<li class="style14">
cawthron
parents:
diff changeset
    49
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etrap%2dhandler" title="Extracting information about the kernel / Current thread state / Trap handler, active scheduler, user-side exception handler">Trap handler, active scheduler and user-side exception handler</a></p>
cawthron
parents:
diff changeset
    50
</li>
cawthron
parents:
diff changeset
    51
<li class="style14">
cawthron
parents:
diff changeset
    52
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etemp" title="Extracting information about the kernel / Current thread state / Temporary object, temporary allocation, IPC count">Temporary object, temporary allocation, IPC count</a></p>
cawthron
parents:
diff changeset
    53
</li>
cawthron
parents:
diff changeset
    54
<li class="style14">
cawthron
parents:
diff changeset
    55
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2enthread" title="Extracting information about the kernel / Current thread state / Underlying nanokernel thread">Underlying nanokernel thread</a></p>
cawthron
parents:
diff changeset
    56
</li>
cawthron
parents:
diff changeset
    57
<li class="style14">
cawthron
parents:
diff changeset
    58
<p><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2efast%2dmutexes" title="Extracting information about the kernel / Current thread state / Fast mutexes">Fast mutexes</a></p>
cawthron
parents:
diff changeset
    59
</li>
cawthron
parents:
diff changeset
    60
<li>
cawthron
parents:
diff changeset
    61
<p><b><a href="CrashDebuggerInfoAboutKernel.guide03.html#debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etiming" title="Extracting information about the kernel / Current thread state / Timing, request semaphore count">Timing, request semaphore count</a></b></p>
cawthron
parents:
diff changeset
    62
</li>
cawthron
parents:
diff changeset
    63
</ul>
cawthron
parents:
diff changeset
    64
cawthron
parents:
diff changeset
    65
</div>
cawthron
parents:
diff changeset
    66
<div class="Head3">
cawthron
parents:
diff changeset
    67
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ethread%2dobject"></a></span>Thread object and access count</h3>
cawthron
parents:
diff changeset
    68
</div><div>
cawthron
parents:
diff changeset
    69
<p class="CodeBlock">THREAD at 64039408 VPTR=f803423c AccessCount=3 Owner=64038d5c</p>
cawthron
parents:
diff changeset
    70
<p>The THread at field contains a pointer to the
cawthron
parents:
diff changeset
    71
DThread object representing the thread.</p>
cawthron
parents:
diff changeset
    72
<p>The AccessCount field contains the reference count
cawthron
parents:
diff changeset
    73
on the thread object.</p>
cawthron
parents:
diff changeset
    74
<p>The owner field contains a pointer to the object
cawthron
parents:
diff changeset
    75
that owns this DThread object.</p>
cawthron
parents:
diff changeset
    76
cawthron
parents:
diff changeset
    77
</div>
cawthron
parents:
diff changeset
    78
<div class="Head3">
cawthron
parents:
diff changeset
    79
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ename"></a></span>The thread name</h3>
cawthron
parents:
diff changeset
    80
</div><div>
cawthron
parents:
diff changeset
    81
<p class="CodeBlock">Full name test2.exe::Main</p>
cawthron
parents:
diff changeset
    82
<p>The thread name is the part after the colons. The part before the
cawthron
parents:
diff changeset
    83
colons is the process name. This means that the thread is called
cawthron
parents:
diff changeset
    84
<b>Main</b> inside the process <b>test2.exe</b>.</p>
cawthron
parents:
diff changeset
    85
cawthron
parents:
diff changeset
    86
</div>
cawthron
parents:
diff changeset
    87
<div class="Head3">
cawthron
parents:
diff changeset
    88
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2estate"></a></span>The thread state, exit information, priority</h3>
cawthron
parents:
diff changeset
    89
</div><div>
cawthron
parents:
diff changeset
    90
<p class="CodeBlock">Thread MState READY<br>Default priority 16 WaitLink Priority 16<br>ExitInfo 2,100,USER</p>
cawthron
parents:
diff changeset
    91
<p>The information that characterises the thread exit is described
cawthron
parents:
diff changeset
    92
by ExitInfo; this is shown as exit type, exit reason and exit
cawthron
parents:
diff changeset
    93
category. In this example:</p>
cawthron
parents:
diff changeset
    94
<ul>
cawthron
parents:
diff changeset
    95
<li>
cawthron
parents:
diff changeset
    96
<p>the thread has panicked, as indicated by: <b>exit type
cawthron
parents:
diff changeset
    97
2</b>; See also TExitType.</p>
cawthron
parents:
diff changeset
    98
</li>
cawthron
parents:
diff changeset
    99
<li>
cawthron
parents:
diff changeset
   100
<p>the panic category was: <b>USER</b></p>
cawthron
parents:
diff changeset
   101
</li>
cawthron
parents:
diff changeset
   102
<li>
cawthron
parents:
diff changeset
   103
<p>the panic number was:<b>100</b></p>
cawthron
parents:
diff changeset
   104
</li>
cawthron
parents:
diff changeset
   105
<li>
cawthron
parents:
diff changeset
   106
<p>the thread was running or it was in a ready-to-run state:
cawthron
parents:
diff changeset
   107
<b>MState READY</b></p>
cawthron
parents:
diff changeset
   108
</li>
cawthron
parents:
diff changeset
   109
</ul>
cawthron
parents:
diff changeset
   110
<p>The priority shown is for the underlying thread, see also
cawthron
parents:
diff changeset
   111
<a href="CrashDebugger_cmd_m.guide.html" title="Process, thread, stack and memory useful information / Process and thread priorities">Process and thread priorities</a>.</p>
cawthron
parents:
diff changeset
   112
cawthron
parents:
diff changeset
   113
</div>
cawthron
parents:
diff changeset
   114
<div class="Head3">
cawthron
parents:
diff changeset
   115
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2eflags"></a></span>Thread flags</h3>
cawthron
parents:
diff changeset
   116
</div><div>
cawthron
parents:
diff changeset
   117
<p class="CodeBlock">Flags 00000004, Handles 640330bc</p>
cawthron
parents:
diff changeset
   118
<p>The Flags field contains information about the state
cawthron
parents:
diff changeset
   119
of the thread. The possible values in this field are defined by the
cawthron
parents:
diff changeset
   120
KThread... constants in u32std.h. While the symbols
cawthron
parents:
diff changeset
   121
are internal to Symbian OS, the following table summarises the values and their
cawthron
parents:
diff changeset
   122
meaning.</p>
cawthron
parents:
diff changeset
   123
<table cellpadding="1" border="0" cellspacing="0"><tr><td
cawthron
parents:
diff changeset
   124
class="TableWrap"><table cellpadding="5" cellspacing="1"
cawthron
parents:
diff changeset
   125
border="0"><tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   126
<p><b>Symbol</b></p></td><td class="Cell">
cawthron
parents:
diff changeset
   127
<p><b>Value</b></p></td><td class="Cell">
cawthron
parents:
diff changeset
   128
<p><b>Meaning</b></p></td></tr>
cawthron
parents:
diff changeset
   129
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   130
<p>KThreadFlagProcessCritical</p></td><td class="Cell">
cawthron
parents:
diff changeset
   131
<p>0x00000001</p></td><td class="Cell">
cawthron
parents:
diff changeset
   132
<p>A thread panic causes the process to
cawthron
parents:
diff changeset
   133
panic.</p></td></tr>
cawthron
parents:
diff changeset
   134
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   135
<p>KThreadFlagProcessPermanent</p></td><td class="Cell">
cawthron
parents:
diff changeset
   136
<p>0x00000002</p></td><td class="Cell">
cawthron
parents:
diff changeset
   137
<p>If the thread exits for any reason, then this causes the
cawthron
parents:
diff changeset
   138
process to exit.</p></td></tr>
cawthron
parents:
diff changeset
   139
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   140
<p>KThreadFlagSystemCritical</p></td><td class="Cell">
cawthron
parents:
diff changeset
   141
<p>0x00000004</p></td><td class="Cell">
cawthron
parents:
diff changeset
   142
<p>If the thread panics, then this causes the entire system to
cawthron
parents:
diff changeset
   143
reboot.</p></td></tr>
cawthron
parents:
diff changeset
   144
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   145
<p>KThreadFlagSystemPermanent</p></td><td class="Cell">
cawthron
parents:
diff changeset
   146
<p>0x00000008</p></td><td class="Cell">
cawthron
parents:
diff changeset
   147
<p>If the thread exits for any reason, then this causes the
cawthron
parents:
diff changeset
   148
entire system to reboot.</p></td></tr>
cawthron
parents:
diff changeset
   149
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   150
<p>KThreadFlagOriginal</p></td><td class="Cell">
cawthron
parents:
diff changeset
   151
<p>0x00000010</p></td><td class="Cell">
cawthron
parents:
diff changeset
   152
<p>Reserved for future use.</p></td></tr>
cawthron
parents:
diff changeset
   153
<tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   154
<p>KThreadFlagLastChance</p></td><td class="Cell">
cawthron
parents:
diff changeset
   155
<p>0x00000020</p></td><td class="Cell">
cawthron
parents:
diff changeset
   156
<p>Set if the thread is currently handling an
cawthron
parents:
diff changeset
   157
exception.</p></td></tr>
cawthron
parents:
diff changeset
   158
</table></td></tr></table>
cawthron
parents:
diff changeset
   159
cawthron
parents:
diff changeset
   160
</div>
cawthron
parents:
diff changeset
   161
<div class="Head3">
cawthron
parents:
diff changeset
   162
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ehandles"></a></span>Handles</h3>
cawthron
parents:
diff changeset
   163
</div><div>
cawthron
parents:
diff changeset
   164
<p class="CodeBlock">Flags 00000004, Handles 640330bc</p>
cawthron
parents:
diff changeset
   165
<p>The Handles field contains the address of a
cawthron
parents:
diff changeset
   166
DObjectIx object that contains the handles owned by the
cawthron
parents:
diff changeset
   167
thread.</p>
cawthron
parents:
diff changeset
   168
cawthron
parents:
diff changeset
   169
</div>
cawthron
parents:
diff changeset
   170
<div class="Head3">
cawthron
parents:
diff changeset
   171
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2estack%2dadrs"></a></span>Kernel &amp; user stack addresses</h3>
cawthron
parents:
diff changeset
   172
</div><div>
cawthron
parents:
diff changeset
   173
<p class="CodeBlock">Supervisor stack base 6571f000 size 1000<br>User stack base 00402000 size 2000</p>
cawthron
parents:
diff changeset
   174
<p>These fields give the base address and size, in bytes, of the
cawthron
parents:
diff changeset
   175
kernel and user stacks respectively.</p>
cawthron
parents:
diff changeset
   176
cawthron
parents:
diff changeset
   177
</div>
cawthron
parents:
diff changeset
   178
<div class="Head3">
cawthron
parents:
diff changeset
   179
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2ethreadid"></a></span>Thread id, RAllocator instances, trap frame</h3>
cawthron
parents:
diff changeset
   180
</div><div>
cawthron
parents:
diff changeset
   181
<p class="CodeBlock">Id=26, Alctr=00600000, Created alctr=00600000, Frame=00000000</p>
cawthron
parents:
diff changeset
   182
<p>The Id field contains the thread id.</p>
cawthron
parents:
diff changeset
   183
<p>The Alctr field contains a pointer to the current RAllocator instance used for heap allocation.</p>
cawthron
parents:
diff changeset
   184
<p>The Created alctr field contains a pointer to the
cawthron
parents:
diff changeset
   185
original RAllocator instance used for heap allocation.
cawthron
parents:
diff changeset
   186
This may be different from the current instance if User::SwitchAllocator() has been called.</p>
cawthron
parents:
diff changeset
   187
<p>The Frame field contains a pointer to the current
cawthron
parents:
diff changeset
   188
trap frame, an instance of the TTrap class, on the cleanup
cawthron
parents:
diff changeset
   189
stack.</p>
cawthron
parents:
diff changeset
   190
cawthron
parents:
diff changeset
   191
</div>
cawthron
parents:
diff changeset
   192
<div class="Head3">
cawthron
parents:
diff changeset
   193
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etrap%2dhandler"></a></span>Trap handler, active scheduler, user-side exception
cawthron
parents:
diff changeset
   194
handler</h3>
cawthron
parents:
diff changeset
   195
</div><div>
cawthron
parents:
diff changeset
   196
<p class="CodeBlock">Trap handler=00000000, ActiveScheduler=00000000, Exception handler=00000000</p>
cawthron
parents:
diff changeset
   197
<p>The Trap handler field contains a pointer to the
cawthron
parents:
diff changeset
   198
current trap handler, an instance of TTrapHandler, for the
cawthron
parents:
diff changeset
   199
cleanup stack.</p>
cawthron
parents:
diff changeset
   200
<p>The ActiveScheduler field contains a pointer to the
cawthron
parents:
diff changeset
   201
current active scheduler.</p>
cawthron
parents:
diff changeset
   202
<p> The Exception handler field contains a pointer to
cawthron
parents:
diff changeset
   203
the current user-side exception handler.</p>
cawthron
parents:
diff changeset
   204
cawthron
parents:
diff changeset
   205
</div>
cawthron
parents:
diff changeset
   206
<div class="Head3">
cawthron
parents:
diff changeset
   207
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etemp"></a></span>Temporary object, temporary allocation, IPC
cawthron
parents:
diff changeset
   208
count</h3>
cawthron
parents:
diff changeset
   209
</div><div>
cawthron
parents:
diff changeset
   210
<p class="CodeBlock">TempObj=00000000 TempAlloc=00000000 IpcCount=00000000</p>
cawthron
parents:
diff changeset
   211
<p>The Tempobj field contains a pointer to an instance
cawthron
parents:
diff changeset
   212
of a DObject derived class that must be closed when the
cawthron
parents:
diff changeset
   213
thread terminates.</p>
cawthron
parents:
diff changeset
   214
<p>The TempAlloc field contains a pointer to a kernel
cawthron
parents:
diff changeset
   215
heap cell that must be freed when the thread terminates. Both this and
cawthron
parents:
diff changeset
   216
Tempobj are used to avoid leaks if the thread terminates
cawthron
parents:
diff changeset
   217
unexpectedly.</p>
cawthron
parents:
diff changeset
   218
<p>The IpcCount field contains the number of messages
cawthron
parents:
diff changeset
   219
currently queued to this thread.</p>
cawthron
parents:
diff changeset
   220
cawthron
parents:
diff changeset
   221
</div>
cawthron
parents:
diff changeset
   222
<div class="Head3">
cawthron
parents:
diff changeset
   223
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2enthread"></a></span>Underlying nanokernel thread</h3>
cawthron
parents:
diff changeset
   224
</div><div>
cawthron
parents:
diff changeset
   225
<p class="CodeBlock">NThread @ 640396b0 Pri 16 NState READY<br>Next=640396b0 Prev=640396b0 Att=03 iUserContextType=0b</p>
cawthron
parents:
diff changeset
   226
<p>The NThread field contains a pointer to the
cawthron
parents:
diff changeset
   227
underlying nanokernel thread object, an instance of the
cawthron
parents:
diff changeset
   228
NThread class.</p>
cawthron
parents:
diff changeset
   229
<p>The Pri field contains the current priority of the
cawthron
parents:
diff changeset
   230
underlying nanokernel thread.</p>
cawthron
parents:
diff changeset
   231
<p> The NState field shows the current state of the
cawthron
parents:
diff changeset
   232
underlying nanokernel thread. Note that this state is often referred to as the
cawthron
parents:
diff changeset
   233
N-state, as compared to the to M-state, the state of a Symbian OS thread. See
cawthron
parents:
diff changeset
   234
the <a href="CrashDebugger_cmd_m.guide.html" title="Process, thread, stack and memory useful information / Thread state summary">Thread state summary</a>.</p>
cawthron
parents:
diff changeset
   235
<p>The Next field points to the next nanokernel thread
cawthron
parents:
diff changeset
   236
object.</p>
cawthron
parents:
diff changeset
   237
<p>The Prev field points to the previous nanokernel
cawthron
parents:
diff changeset
   238
thread object.</p>
cawthron
parents:
diff changeset
   239
<p>The Att field contains the nanokernel thread
cawthron
parents:
diff changeset
   240
attributes, which is an 8-bit mask that controls how the thread is scheduled in
cawthron
parents:
diff changeset
   241
certain cases. Two attributes are defined:</p><table cellpadding="1" border="0" cellspacing="0"><tr><td
cawthron
parents:
diff changeset
   242
class="TableWrap"><table cellpadding="5" cellspacing="1"
cawthron
parents:
diff changeset
   243
border="0"><tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   244
<p> KThreadAttImplicitSystemLock</p></td><td class="Cell">
cawthron
parents:
diff changeset
   245
<p> This attribute signifies that the thread may not be
cawthron
parents:
diff changeset
   246
scheduled if another thread currently holds the system lock, unless the the
cawthron
parents:
diff changeset
   247
former thread holds another fast mutex. This attribute is used in implementing
cawthron
parents:
diff changeset
   248
address space switching in the moving memory model and also in implementing
cawthron
parents:
diff changeset
   249
change of user context in order to allow exceptions to be raised on other
cawthron
parents:
diff changeset
   250
threads.</p></td></tr><tr valign="top"><td class="Cell">
cawthron
parents:
diff changeset
   251
<p>KThreadAttAddressSpace</p></td><td class="Cell">
cawthron
parents:
diff changeset
   252
<p>This attribute signifies that the thread may require a
cawthron
parents:
diff changeset
   253
change of address space to schedule it. This attribute is used in conjunction
cawthron
parents:
diff changeset
   254
with the thread&#8217;s iAddressSpace field; if this does not match the
cawthron
parents:
diff changeset
   255
scheduler&#8217;s iAddressSpace field at the point where the thread is
cawthron
parents:
diff changeset
   256
scheduled an address space switch will occur. Note that this is not required if
cawthron
parents:
diff changeset
   257
the address space change is limited to the ARM domain permissions since these
cawthron
parents:
diff changeset
   258
are saved and restored as part of the thread context.</p></td></tr></table></td></tr></table>
cawthron
parents:
diff changeset
   259
cawthron
parents:
diff changeset
   260
</div>
cawthron
parents:
diff changeset
   261
<div class="Head3">
cawthron
parents:
diff changeset
   262
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2efast%2dmutexes"></a></span>Fast mutexes</h3>
cawthron
parents:
diff changeset
   263
</div><div>
cawthron
parents:
diff changeset
   264
<p class="CodeBlock">HeldFM=00000000 WaitFM=00000000 AddrSp=64038d5c</p>
cawthron
parents:
diff changeset
   265
<p>The HeldFM field contains a pointer to the fast
cawthron
parents:
diff changeset
   266
mutex held by this thread; this is NULL if no fast mutext was held.</p>
cawthron
parents:
diff changeset
   267
<p>The WaitFM field contains a pointer to the fast
cawthron
parents:
diff changeset
   268
mutex that this thread was waiting on; this is NULL if this thread was not
cawthron
parents:
diff changeset
   269
waiting on a fast mutex.</p>
cawthron
parents:
diff changeset
   270
<p>The AddrSp field is the address space identifier
cawthron
parents:
diff changeset
   271
used by the scheduler to determine whether an address space change is required
cawthron
parents:
diff changeset
   272
when scheduling in a new thread.</p>
cawthron
parents:
diff changeset
   273
cawthron
parents:
diff changeset
   274
</div>
cawthron
parents:
diff changeset
   275
<div class="Head3">
cawthron
parents:
diff changeset
   276
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2etiming"></a></span>Timing, request semaphore count</h3>
cawthron
parents:
diff changeset
   277
</div><div>
cawthron
parents:
diff changeset
   278
<p class="CodeBlock">Time=17 Timeslice=20 ReqCount=0</p>
cawthron
parents:
diff changeset
   279
<p>The Time field contains the number of nanokernel
cawthron
parents:
diff changeset
   280
ticks, usually in milliseconds, to go before the thread is preempted.</p>
cawthron
parents:
diff changeset
   281
<p>The Timeslice field contains the maximum number of
cawthron
parents:
diff changeset
   282
ticks for which the thread can run before being preempted.</p>
cawthron
parents:
diff changeset
   283
<p>The ReqCount contains the request semaphore counter.
cawthron
parents:
diff changeset
   284
If the value is negative, then the thread is blocked waiting for a request to
cawthron
parents:
diff changeset
   285
complete; if it is positive, then one or more requests have completed.</p>
cawthron
parents:
diff changeset
   286
cawthron
parents:
diff changeset
   287
</div><div class="Head3">
cawthron
parents:
diff changeset
   288
<h3><span class="Bodytext"><a name="debugging%2einfo%2dabout%2dkernel%2ethread%2dstate%2esuspend"></a></span>Suspend count, critical section counter, register
cawthron
parents:
diff changeset
   289
values</h3>
cawthron
parents:
diff changeset
   290
</div>
cawthron
parents:
diff changeset
   291
<div>
cawthron
parents:
diff changeset
   292
<p class="CodeBlock">SuspendCount=0 CsCount=1 CsFunction=fffffffe<br>SavedSP=6571ff34 ExtraContext=00000000 ExtraContextSize=0000<br>DACR 63990000<br>R13_USR 6571ff88 R14_USR f8025bc0 SPSR_SVC 10000004<br>&nbsp;R4 f8033794  R5 64039408  R6 640396b0  R7 f8028518<br>&nbsp;R8 640396b0  R9 640396b0 R10 00000000 R11 f80284d8<br>&nbsp;PC 00000000</p>
cawthron
parents:
diff changeset
   293
<p>The SuspendCount field contains the number of times
cawthron
parents:
diff changeset
   294
that the thread has been suspended.</p>
cawthron
parents:
diff changeset
   295
<p>The CsCount field critical section counter. When
cawthron
parents:
diff changeset
   296
this value is greater than zero, then the thread is in a critical section and
cawthron
parents:
diff changeset
   297
cannot be suspended or killed.</p>
cawthron
parents:
diff changeset
   298
<p>The remaining content is a list of register values. <em>Note
cawthron
parents:
diff changeset
   299
that they are not the register values when the thread panicked.</em> They are
cawthron
parents:
diff changeset
   300
the values in the registers the last time that this thread was
cawthron
parents:
diff changeset
   301
pre-empted.</p>
cawthron
parents:
diff changeset
   302
</div>
cawthron
parents:
diff changeset
   303
<h5>Related tasks</h5>
cawthron
parents:
diff changeset
   304
<ul>
cawthron
parents:
diff changeset
   305
  <li><a href="CrashDebuggerInfoAboutKernel.guide.html">Extracting Kernel Information</a> </li>
cawthron
parents:
diff changeset
   306
  <li><a href="CrashDebuggerInfoAboutKernel.guide02.html">Scheduler State</a></li>
cawthron
parents:
diff changeset
   307
  <li><a href="CrashDebuggerInfoAboutKernel.guide04.html">Current Process State</a></li>
cawthron
parents:
diff changeset
   308
  <li><a href="CrashDebuggerInfoAboutKernel.guide05.html">Current Data Section Process</a></li>
cawthron
parents:
diff changeset
   309
</ul>
cawthron
parents:
diff changeset
   310
<div id="footer">Copyright &copy; 2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. <br>License: <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a></div>
cawthron
parents:
diff changeset
   311
	   </body>
cawthron
parents:
diff changeset
   312
	   </html>
cawthron
parents:
diff changeset
   313