Subversion Repositories HelenOS-doc

Rev

Rev 143 | Rev 150 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
125 decky 1
\chapter{Running HelenOS}
2
 
143 palkovsky 3
\section{Kernel Start}
4
When the HelenOS kernel starts up, it configures its output device
5
and starts booting. During the boot process it writes out some some
6
lines regarding memory size and available CPUs. The userspace
7
drivers and tasks take over the console as soon as the start-up activity
8
and developer kernel tests are finished.
9
 
10
The console driver provides 12 virtual consoles, 11 reserved
11
for applications, console 12 is reserved for kernel console. Pressing
12
function keys F1-F12 switches between the consoles.
13
 
14
\section{KConsole}
15
KConsole is a kernel thread operating completely in priviledged mode.
144 palkovsky 16
It allows user to interact directly with the kernel and even start directly
143 palkovsky 17
functions inside the kernel.
18
 
19
The KConsole is shown by switching to console number 12. On some platforms
20
the kconsole screen is not restored to its previous contents. Press
21
enter to see a KConsole prompt. The function keys for switching terminals
144 palkovsky 22
do not work in KConsole, to switch back to other console, use
143 palkovsky 23
the {\em continue} command. After executing the command, press a function key
24
to switch to other consoles.
25
 
26
The basic editing facilities are very similar to {\em readline} conventions.
27
The left and right arrows, backspace and delete keys allow for convenient
28
editing of the text. The history of last ten commands can be retrieved
29
using up and down arrows. KConsole supports tab completion, double tab
30
shows a list of available commands.
31
 
32
The first class of commands prints useful statistics from the running
33
operating systems. The commands are:
144 palkovsky 34
\begin{description}
35
\item[zones] --- Prints a list of memory zones.
36
\item[zone $<$zone number$>$] --- Prints a detailed statistics about frame allocator.
37
\item[slabs] --- Prints a details statistics about slab allocator.
38
\item[scheduler] --- Prints scheduler queues on all cpus.
39
\item[threads] --- Prints list of existing threads, including information about
40
the thread state
41
\item[tasks] --- Prints list of tasks along with some basic IPC informations.
42
\item[ipc\_task $<$taskid$>$] --- Prints detailed information about IPC queues of a particular task.
43
\item[tlb] --- Prints contents of the Translation Lookaside Buffer on a processor (supported only on some platforms)
44
\item[exc] --- Prints table of registered exception handlers
45
\end{description}
143 palkovsky 46
 
47
Kernel contains a searchable version of its symbol table. This is used
48
in error processing as well as for extending functionality of KConsole.
49
The following commands are supported:
144 palkovsky 50
\begin{description}
51
\item[symaddr $<$address$>$] --- Finds an address in symbol table and prints appropriate
143 palkovsky 52
symbol name.
144 palkovsky 53
\item[call0, call1... $<$function$>$ $<$args...$>$] --- Calls a C function function(args...).
143 palkovsky 54
Note that the tab-completion works for the function names. Because
55
of architecture calling convention, this command does not work correctly
56
on the ia64 platform. The arguments can be specified
144 palkovsky 57
 \begin{itemize}
58
  \item as a number or hexadecimal number: call1 task\_kill 8
59
  \item as a string: call1 printf "Hello world"
60
  \item as a hexadecimal number preceded by '*'. The argument is then read from
143 palkovsky 61
the given address: call2 printf "%X" *0x8000000
144 palkovsky 62
  \item as a symbol name. In such case the value located in the memory
143 palkovsky 63
    in the symbols address is used: call2 printf "%d" task_counter
144 palkovsky 64
  \item as a symbol name preceded by '\&'. The address is used.
65
  \item as a symbol name preceded by '*'. In such a case the symbol is dereferenced.
66
 \end{itemize}
67
\item[set4 <address|symbol name>] --- Saves 4-byte value on a given address.
68
\end{description}
143 palkovsky 69
 
70
The mips, ia32 and amd64 platforms provide additional commands regarding
71
debugging facility - set and clear hardware breakpoints and watchpoints.
72
 
73
\section{Emergency Functions}
74
It may happen that the IPC communication dies or that there are some
75
problems in the communication chain
76
{\em keboard driver} - {\em console} - {\em output driver}.
77
As long that at least the keyboard driver works, pressing Escape key three
78
times transfers control to the KConsole immediately. Screen is not updated,
79
the user should press Enter to see the kconsole prompt.
80
 
81
If a kernel panic occurs, the error handling automatially switches control
82
to the KConsole and allows users to inspect the failed kernel online.
83
On the SMP system the other processors are halted immediately. The kernel
84
contains its symbol table, so you can probably read some useful information
144 palkovsky 85
about the exact place where the panic occured.