Quando descriviamo una funzione, scriviamo:
"nome_funzione [ percorso . estensione ]"
Ad esempio:
"schedule [kernel/sched.c]"
ci dice che stiamo parlando della funzione
"schedule" definita nel file
[ kernel/sched.c ]
Nota: Il percorso di riferimento e' la directory dei sorgenti del Kernel ''/usr/src/linux''.
L'indendazione nel codice sorgente del documento e' di 3 caratteri.
Nel documento verranno utilizzate le "InterCallings Analysis "(ICA) (analisi delle reciproche chiamate) per vedere (utilizzando anche l'indentazione) come le funzioni del Kernel si chiamano l'un l'altra.
Ad esempio, la funzione ''sleep_on'' e' descritto di seguito:
|sleep_on |init_waitqueue_entry -- |__add_wait_queue | Accodamento della richiesta |list_add | |__list_add -- |schedule --- In attesa di esecuzione |__remove_wait_queue -- |list_del | Disaccodamento richiesta |__list_del -- sleep_on ICA
L'ICA indentata e' seguita dal percorso delle funzioni descritte:
Nota: Se il percorso non cambia non verra' piu' specificato nelle righe seguenti.
In una ICA una linea come la seguente
funzione1 -> funzione2
significa che la < funzione1 > e' un generico puntatore a funzione che, in questo caso, punta a < function2 >.
Quando scriviamo:
funzione:
significa che < funzione > non e' una vera funzione, bensi' un'etichetta assembler.
A volte verra' riportato del codice ''C'' o pseudo codice al posto di linee ''assembler'' o di codice '' non strutturato'' per poter chiarire l'esposizione.
I vantaggi nell'utilizzo delle ICA (InterCallings Analysis) sono molti:
Come tutti i modelli teorici, viene semplificata la realta' sorvolando alcuni dettagli, come il vero codice sorgente e i casi eccezionali.