Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 511

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>KernelAnalysis-HOWTO: Sintassi utilizzata</TITLE>
 <LINK HREF="KernelAnalysis-HOWTO-3.html" REL=next>
 <LINK HREF="KernelAnalysis-HOWTO-1.html" REL=previous>
 <LINK HREF="KernelAnalysis-HOWTO.html#toc2" REL=contents>
</HEAD>
<BODY>
<A HREF="KernelAnalysis-HOWTO-3.html">Next</A>
<A HREF="KernelAnalysis-HOWTO-1.html">Previous</A>
<A HREF="KernelAnalysis-HOWTO.html#toc2">Contents</A>
<HR>
<H2><A NAME="s2">2. Sintassi utilizzata</A></H2>

<H2><A NAME="ss2.1">2.1 Sintassi funzioni</A>
</H2>

<P>Quando descriviamo una funzione, scriviamo: 
<P>
<PRE>
&quot;nome_funzione  [ percorso . estensione ]&quot;
</PRE>
<P>Ad esempio:
<P>
<PRE>
&quot;schedule [kernel/sched.c]&quot; 
</PRE>
<P>ci dice che stiamo parlando della funzione
<P>&quot;schedule&quot; definita nel file
<P>[ kernel/sched.c ]
<P>Nota: Il percorso di riferimento e' la directory dei sorgenti
del Kernel ''/usr/src/linux''.
<H2><A NAME="ss2.2">2.2 Indentazione</A>
</H2>

<P>L'indendazione nel codice sorgente del documento e' di 3 caratteri.
<H2><A NAME="ss2.3">2.3 InterCallings Analysis</A>
</H2>

<H3>Introduzione</H3>

<P>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.
<P>Ad esempio, la funzione ''sleep_on'' e' descritto di seguito:
<P>
<PRE>
|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
</PRE>
<P>L'ICA indentata e' seguita dal percorso delle funzioni descritte:
<P>
<UL>
<LI>sleep_on [kernel/sched.c]</LI>
<LI>init_waitqueue_entry [include/linux/wait.h]</LI>
<LI>__add_wait_queue</LI>
<LI>list_add [include/linux/list.h]</LI>
<LI>__list_add</LI>
<LI>schedule [kernel/sched.c]</LI>
<LI>__remove_wait_queue [include/linux/wait.h]</LI>
<LI>list_del [include/linux/list.h]</LI>
<LI>__list_del</LI>
</UL>
<P>Nota: Se il percorso non cambia non verra' piu' specificato nelle
righe seguenti.
<H3>Dettagli</H3>

<P>In una ICA una linea come la seguente
<P>
<PRE>
 funzione1 -&gt; funzione2
</PRE>
<P>significa che la &lt; funzione1 &gt; e' un generico puntatore
a funzione che, in questo caso, punta a &lt; function2 &gt;.
<P>Quando scriviamo:
<P>
<PRE>
  funzione:
</PRE>
<P>significa che &lt; funzione &gt; non e' una vera funzione, bensi'
un'etichetta assembler.
<P>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.
<H3>PRO delle ICA</H3>

<P>I vantaggi nell'utilizzo delle ICA (InterCallings Analysis) sono
molti:
<P>
<UL>
<LI>Si ottiene una visione d'insieme del funzionamento di una chiamata
e dell'avvicendarsi delle routine del Kernel.</LI>
<LI>Il percorso delle funzioni viene riportato di seguito cosicche'
le ICA possano rappresentare una sorta di ''riferimento'' per scovare
subito le funzioni cercate.</LI>
<LI>Possono essere molto utili in meccanismi di sleep/awake, dove
si descrive quello che viene fatto prima della sleep, durante la
stessa e dopo il risveglio (dopo la schedulazione).</LI>
</UL>
<H3>CONTRO delle ICA</H3>

<P>
<UL>
<LI>Alcuni svantaggi nell'utilizzare le ICA sono riportati di seguito:</LI>
</UL>
<P>Come tutti i modelli teorici, viene semplificata la realta' sorvolando
alcuni dettagli, come il vero codice sorgente e i casi eccezionali.
<P>
<UL>
<LI>Diagrammi addizionali sarebbero importanti per rappresentare
le condizioni dello stack, i dati, etc.</LI>
</UL>
<HR>
<A HREF="KernelAnalysis-HOWTO-3.html">Next</A>
<A HREF="KernelAnalysis-HOWTO-1.html">Previous</A>
<A HREF="KernelAnalysis-HOWTO.html#toc2">Contents</A>
</BODY>
</HTML>