Επόμενο Προηγούμενο Περιεχόμενα
'Εφτασεεεε...
Φτιάξτε ένα εκτελέσιμο, που θα κάνει χοντρικά τα εξής:
-
Θα παίρνει τα κατάλληλα δικαιώματα για την διεύθυνση
I/O, με αίτηση στον πυρήνα, μέσω της ioperm: πχ ioperm(
BASE, range ,1);
-
θα εκτελεί το κατάλληλο out request, για να επιβάλει
την σωστή τάση στην παράλληλη θύρα. πχ outb( 1, BASE );
-
Θα περιμένει κατάλληλο χρονικό διάστημα για να ψηθεί ο
καφές, ( καλόν θα είναι αυτό να το διαβάζει από την
γραμμή εντολών )
-
στην συνέχεια θα κλείνει την καφετιέρα. outb( 0 , BASE
);
-
Προαιρετικά, θα δίνει πίσω την θύρα με ioperm( BASE,
range, 0);
Όπου BASE = 0x3bc για /dev/lp0, 0x378 για /dev/lp1,
και 0x278 για /dev/lp2, range=8.
Καλόν θα είναι να το κάνετε setuid, για να μπορεί όλος ο
κόσμος να φτιάχνει καφέ.
Δεν έχετε παρά να διαβάσετε το kernel hacker's guide, να
υλοποιήσετε έναν device driver (μπορεί να είναι και user
space). Πλιιζ, κάνετέ το module, να μην κάνουμε compile
όλη την ώρα. Μετά θα γράφετε:
echo baryglykos >/dev/coffee
Και θα έχετε ζεστό καφέ σε 1 λεπτό. Θυμηθείτε να δώσετε
τα σωστά permission στο /dev/coffee, ανάλογα με το εάν
θέλετε να φτιάχνει καφέ μόνο ο root ή όχι.
Το πλεονέκτημα αυτής της μεθόδου είναι ότι επιτρέπει να
χρησιμοποιηθεί το ACK της παράλληλης θύρας, ώστε οι
"έξυπνες" καφετιέρες να μπορούν να παράγουν interrupt.
Αφήνεται σαν άσκηση.
Αφού έχετε υλοποιήσει το πρόγραμμα σε C (βλέπε παραπάνω),
δεν έχετε παρά να φτιάξετε ένα cgi τσι σειράς (ας είναι
και β' διαλογής), που θα καλεί το προγραμματάκι για να
φτιάξει τον καφέ. Τι web server? apache φυσικά...
Επόμενο Προηγούμενο Περιεχόμενα