ioctl() και πιθανή ανάγκη ανανέωσης των man pages
Panagiotis Atmatzidis
p.atmatzidis at gmail.com
Tue Jun 20 15:47:40 EEST 2006
Giorgos Keramidas wrote:
> On 2006-06-20 14:37, Stathis Kamperis <eu_kamper at yahoo.gr> wrote:
>> Χαιρετώ την όμορφη παρέα :)
>>
>> Φτιάχνω με ένα φίλο μου μια συσκευή η οποία θα επικοινωνεί με
>> το 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(), πώς μπορώ να κάνω την δουλειά μου;
>
> Διαβάζοντας το source του πυρήνα.
>
> Εναλλακτικά, βάζεις κανένα σοβαρό λειτουργικό, του οποίου τα
> manpages δεν είναι 8000 patchlevels πίσω.
>
>> 2) Χρειάζεται πράγματι ανανέωση η man page του tty_ioctl ή εγώ
>> τα έχω μπερδέψει; Αν ναι, πού μπορώ να απευθυνθώ;
>
> Ναι. Όπως και το 70% των Linux manpages που δεν είναι άδεια
> placeholders του στυλ:
>
> "Κάποια μέρα πρέπει να γράψουμε κι αυτό το manpage".
>
> Ποιο πακέτο από manpages έχεις στημένο στο σύστημά σου; Ποιός
> είναι ο packager του πακέτου; Γιατί να χάνει χρόνο κανείς με
> τέτοιες μπούρδες όταν υπάρχουν λειτουργικά συστήματα που οι
> developers αλληλοελέγχονται όταν γίνεται commit κώδικας χωρίς να
> ενημερώνεται το manpage;
>
> κλπ.
>
>
Γιατί δεν γουστάρει το Free Riding? (Βλέπε GPL vs BSD)
More information about the Linux-greek-users
mailing list