Rev 125 | Rev 144 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 125 | Rev 143 | ||
|---|---|---|---|
| Line 1... | Line 1... | ||
| 1 | \chapter{Running HelenOS} |
1 | \chapter{Running HelenOS} |
| 2 | 2 | ||
| 3 | HelenOS .. |
- | |
| 4 | 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. |
|
| - | 16 | It allows user to interact directly with kernel and even start directly |
|
| - | 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 |
|
| - | 22 | do not work in KConsole, if you want to switch back to other console, use |
|
| - | 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: |
|
| - | 34 | - zones - Prints a list of memory zones. |
|
| - | 35 | - zone <zone number> - Prints a detailed statistics about frame allocator. |
|
| - | 36 | - slabs - Prints a details statistics about slab allocator. |
|
| - | 37 | - scheduler - Prints scheduler queues on all cpus. |
|
| - | 38 | - threads - Prints list of existing threads, including information about |
|
| - | 39 | the thread state/ |
|
| - | 40 | - tasks - Prints list of tasks along with some basic IPC informations. |
|
| - | 41 | - ipc_tasks - Prints detailed information about IPC queues of a particular task. |
|
| - | 42 | - tlb - Prints contents of the Translation Lookaside Buffer on a processor (supported only on some platforms) |
|
| - | 43 | - exc - Prints table of registered exception handlers |
|
| - | 44 | ||
| - | 45 | Kernel contains a searchable version of its symbol table. This is used |
|
| - | 46 | in error processing as well as for extending functionality of KConsole. |
|
| - | 47 | The following commands are supported: |
|
| - | 48 | - symaddr <address> - Finds an address in symbol table and prints appropriate |
|
| - | 49 | symbol name. |
|
| - | 50 | - call0, call1... <function> <args...> - Calls a C function function(args...). |
|
| - | 51 | Note that the tab-completion works for the function names. Because |
|
| - | 52 | of architecture calling convention, this command does not work correctly |
|
| - | 53 | on the ia64 platform. The arguments can be specified |
|
| - | 54 | - as a number or hexadecimal number: call1 task_kill 8 |
|
| - | 55 | - as a string: call1 printf "Hello world" |
|
| - | 56 | - as a hexadecimal number preceded by '*'. The argument is then read from |
|
| - | 57 | the given address: call2 printf "%X" *0x8000000 |
|
| - | 58 | - as a symbol name. In such case the value located in the memory |
|
| - | 59 | in the symbols address is used: call2 printf "%d" task_counter |
|
| - | 60 | - as a symbol name preceded by '&'. The address is used. |
|
| - | 61 | - as a symbol name preceded by '*'. In such a case the symbol is dereferenced. |
|
| - | 62 | - set4 <address|symbol name> - Saves 4-byte value on a given address. |
|
| - | 63 | ||
| - | 64 | The mips, ia32 and amd64 platforms provide additional commands regarding |
|
| - | 65 | debugging facility - set and clear hardware breakpoints and watchpoints. |
|
| - | 66 | ||
| - | 67 | \section{Emergency Functions} |
|
| - | 68 | It may happen that the IPC communication dies or that there are some |
|
| - | 69 | problems in the communication chain |
|
| - | 70 | {\em keboard driver} - {\em console} - {\em output driver}. |
|
| - | 71 | As long that at least the keyboard driver works, pressing Escape key three |
|
| - | 72 | times transfers control to the KConsole immediately. Screen is not updated, |
|
| - | 73 | the user should press Enter to see the kconsole prompt. |
|
| - | 74 | ||
| - | 75 | If a kernel panic occurs, the error handling automatially switches control |
|
| - | 76 | to the KConsole and allows users to inspect the failed kernel online. |
|
| - | 77 | On the SMP system the other processors are halted immediately. The kernel |
|
| - | 78 | contains its symbol table, so you can probably read some useful information |
|
| - | 79 | about the exact place where the panic occured. |
|
| - | 80 | ||
| 5 | 81 | ||