Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

3. Λογισμικό

'Εφτασεεεε...

3.1 Πρόγραμμα σε C

Φτιάξτε ένα εκτελέσιμο, που θα κάνει χοντρικά τα εξής:

  • Θα παίρνει τα κατάλληλα δικαιώματα για την διεύθυνση 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, για να μπορεί όλος ο κόσμος να φτιάχνει καφέ.

3.2 Σαν device driver

Δεν έχετε παρά να διαβάσετε το kernel hacker's guide, να υλοποιήσετε έναν device driver (μπορεί να είναι και user space). Πλιιζ, κάνετέ το module, να μην κάνουμε compile όλη την ώρα. Μετά θα γράφετε:

echo baryglykos >/dev/coffee

Και θα έχετε ζεστό καφέ σε 1 λεπτό. Θυμηθείτε να δώσετε τα σωστά permission στο /dev/coffee, ανάλογα με το εάν θέλετε να φτιάχνει καφέ μόνο ο root ή όχι.

Το πλεονέκτημα αυτής της μεθόδου είναι ότι επιτρέπει να χρησιμοποιηθεί το ACK της παράλληλης θύρας, ώστε οι "έξυπνες" καφετιέρες να μπορούν να παράγουν interrupt.

Αφήνεται σαν άσκηση.

3.3 Διασύνδεση με Internet

Αφού έχετε υλοποιήσει το πρόγραμμα σε C (βλέπε παραπάνω), δεν έχετε παρά να φτιάξετε ένα cgi τσι σειράς (ας είναι και β' διαλογής), που θα καλεί το προγραμματάκι για να φτιάξει τον καφέ. Τι web server? apache φυσικά...

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!