Sophie

Sophie

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

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">Avanti</A>
<A HREF="KernelAnalysis-HOWTO-1.html">Indietro</A>
<A HREF="KernelAnalysis-HOWTO.html#toc2">Indice</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">Avanti</A>
<A HREF="KernelAnalysis-HOWTO-1.html">Indietro</A>
<A HREF="KernelAnalysis-HOWTO.html#toc2">Indice</A>
</BODY>
</HTML>