Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > media > main-release > by-pkgid > e05c4514608e650af9b28d9be1d35a18 > files > 244

howto-html-it-10.1-4mdv2008.1.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.21">
 <TITLE>COFFEE-HOWTO: Software</TITLE>
 <LINK HREF="Coffee-4.html" REL=next>
 <LINK HREF="Coffee-2.html" REL=previous>
 <LINK HREF="Coffee.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="Coffee-4.html">Avanti</A>
<A HREF="Coffee-2.html">Indietro</A>
<A HREF="Coffee.html#toc3">Indice</A>
<HR>
<H2><A NAME="s3">3.</A> <A HREF="Coffee.html#toc3">Software</A></H2>



<H2><A NAME="ss3.1">3.1</A> <A HREF="Coffee.html#toc3.1">Software</A>
</H2>

<P>Si dovr&agrave; creare un eseguibile che lavorer&agrave; in questo modo:
<UL>
<LI>Ottiene i permessi per usare lo spazio degli indirizzi di I/O,
chiamando il kernel, con il comando <B>ioperm</B>: es. <EM>ioperm(BASE,
intervallo, 1);</EM></LI>
<LI>Esegue un'istruzione di richiesta in uscita per impostare la tensione
0.5V sulla porta parallela, es. <EM>outb(1, BASE);</EM></LI>
<LI>Attende il tempo necessario alla preparazione del caff&egrave;. Sarebbe bello
se questo tempo fosse mostrato nella riga di comando.</LI>
<LI>Quindi dovr&agrave; spegnere la macchina del caff&egrave;: <EM>outb(0, BASE)</EM>;</LI>
<LI>Prima di terminare deve restituire la porta parallela con un
<EM>ioperm(BASE, intervallo, 0);</EM></LI>
</UL>
</P>
<P>Si cambi BASE = 0x3bc per /dev/lp0, 0x378 per /dev/lp1 e 0x278 per /dev/lp2,
intervallo = 8.</P>
<P>Sarebbe utile avere questo programma setuid in modo che tutti potessero
bere il caff&egrave;!</P>

<H2><A NAME="ss3.2">3.2</A> <A HREF="Coffee.html#toc3.2">Driver di periferica</A>
</H2>

<P>Basta leggere la 
<A HREF="http://www.redhat.com:8080/HyperNews/get/khg.html">kernel hacker's guide</A> e implementare un driver di periferica (credo possa restare
anche in user space). Per favore lo si compili come modulo, in modo che
non si debba compilare il kernel ad ogni aggiornamento. Quindi si scriva:</P>
<P>
<PRE>
echo cappuccino > /dev/coffee
</PRE>
</P>

<P>E si avr&agrave; una calda tazza di caff&egrave; in pochi minuti! Ci si ricordi di
assegnare i giusti permessi a /dev/coffee, a seconda che solo root possa farsi
il caff&egrave; o meno.</P>

<P>Il vantaggio di questo metodo &egrave; che supporta il feedback dalla macchina
da caff&egrave; utilizzando l'ACK della porta parallela, quindi macchine da caff&egrave;
intelligenti possono produrre un interrupt.</P>

<P>Lo si faccia come compito per casa.</P>

<H2><A NAME="ss3.3">3.3</A> <A HREF="Coffee.html#toc3.3">Connessione via Internet</A>
</H2>

<P>Se si &egrave; implementato il programma C (si veda sopra), si deve soltanto
scrivere un semplice programma CGI che accende e spegne la macchina da
caff&egrave;. Si dovrebbero scrivere alcune pagine web carine, dove si spiega
come fare il caff&egrave;, e metterle su un server web <B>apache</B>...</P>

<HR>
<A HREF="Coffee-4.html">Avanti</A>
<A HREF="Coffee-2.html">Indietro</A>
<A HREF="Coffee.html#toc3">Indice</A>
</BODY>
</HTML>