ioctl() και πιθανή ανάγκη ανανέωσης των man pages

Stathis Kamperis eu_kamper at yahoo.gr
Tue Jun 20 14:37:04 EEST 2006


Χαιρετώ την όμορφη παρέα :)

Φτιάχνω με ένα φίλο μου μια συσκευή η οποία θα επικοινωνεί με το PC μέσω 
  της σειριακής θύρας (RS-232). Στα πλαίσια αυτού του εγχειρήματος 
χρειάζεται να διαβάζω τα σήματα στα διάφορα pins της σειριακής (π.χ. 
DTR, κλπ). Ψάχνοντας στο google είδα πως αυτό γίνεται με την βοήθεια της 
ioctl(). Αντιγράφω το παράδειγμα από την man page: tty_ioctl (4).

EXAMPLE
        Check the condition of DTR on the serial port.

        #include <termios.h>
        #include <fcntl.h>
        #include <sys/ioctl.h>

        main() {
            int fd, serial;

            fd = open("/dev/ttyS0", O_RDONLY);
            ioctl(fd, TIOCMGET, &serial);
            if (serial & TIOCM_DTR)
                puts("TIOCM_DTR is not set");
            else
                puts("TIOCM_DTR is set");
            close(fd);
        }

Αν προσπαθήσετε να τρέξετε τον παραπάνω κώδικα, αυτός δεν θα δουλέψει 
(σωστά). Η ioctl() θα επιστρέψει -1 και η μεταβλητή errno θα πάρει την 
τιμή EINVAL. Ότι δηλαδή το όρισμα TIOCMGET δεν είναι έγκυρο.

Με λίγο παραπάνω ψάξιμο στο google[1] διάβασα ότι από τον πυρήνα 2.5.x 
και εξής, κάποιες ioctls έχουν αφαιρεθεί, μεταξύ των οποίων και η 
TIOCMGET. Ωστόσο η αντίστοιχη man page δεν φαίνεται να έχει ενημερωθεί 
και εξακολουθεί να αναφέρει το TIOCMGET ως όρισμα της ioctl():

    Modem control
        TIOCMGET  int *argp
               get the status of modem bits.


Οι ερωτήσεις μου:

1) Εφόσον πλέον δεν υποστηρίζεται η λειτουργία TIOCMGET μέσω της 
ioctl(), πώς μπορώ να κάνω την δουλειά μου;

2) Χρειάζεται πράγματι ανανέωση η man page του tty_ioctl ή εγώ τα έχω 
μπερδέψει; Αν ναι, πού μπορώ να απευθυνθώ;

Ευχαριστώ πολύ :)

Φιλικά,
Στάθης

-----------------------------------------------
[1] http://www.linuxjournal.com/node/7000/print
__________________________________________________
Χρησιμοποιείτε Yahoo!;
Βαρεθήκατε τα ενοχλητικά μηνύματα (spam);   Το Yahoo! Mail διαθέτει την καλύτερη δυνατή προστασία κατά των ενοχλητικών μηνυμάτων  
http://mail.yahoo.gr 




More information about the Linux-greek-users mailing list