When speaking about a function, we write:
"function_name [ file location . extension ]"
tells us that we talk about
function retrievable from file
[ kernel/sched.c ]
Note: We also assume /usr/src/linux as the starting directory.
Indentation in source code is 3 blank characters.
We use the"InterCallings Analysis "(ICA) to see (in an indented fashion) how kernel functions call each other.
For example, the sleep_on command is described in ICA below:
|sleep_on |init_waitqueue_entry -- |__add_wait_queue | enqueuing request |list_add | |__list_add -- |schedule --- waiting for request to be executed |__remove_wait_queue -- |list_del | dequeuing request |__list_del -- sleep_on ICA
The indented ICA is followed by functions' locations:
Note: We don't specify anymore file location, if specified just before.
In an ICA a line like looks like the following
function1 -> function2
means that < function1 > is a generic pointer to another function. In this case < function1 > points to < function2 >.
When we write:
it means that < function > is not a real function. It is a label (typically assembler label).
In many sections we may report a ''C'' code or a ''pseudo-code''. In real source files, you could use ''assembler'' or ''not structured'' code. This difference is for learning purposes.
The advantages of using ICA (InterCallings Analysis) are many:
As all theoretical models, we simplify reality avoiding many details, such as real source code and special conditions.