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