Question about driver

Vasilis Vasaitis vvas at hal.csd.auth.gr
Thu Feb 24 22:38:37 EET 2000


On Thu, Feb 24, 2000 at 05:13:39PM +0200, Lambros Sarakis wrote:
> Paidia geia
> 
> Exw to ekshs provlhma:
> 
> Thelw na ftiaksw ena driver se Linux gia mia ISA card. Vrhka th domh pou
> 
> prepei na exei o character
> driver kai eftiaksa ena module sto opoio dhlwnw tis synarthseis:
> device_open
> device_release
> device_read
> device_write
> init_module
> cleanup_module
> 
> kai akoma mia domh "struct file_operations Fops" pou dhlwnw tis parapanw
> 
> 4 prwtes synarthseis stis
> katallhles 9eseis.
> 
> Otan kanw "insmod" trexei o kwdikas ths "init_module" kanonika. To idio
> otan kanw "rmmod".
> 
> To erwthma einai pws mporw apo ena Application Program na kalesw tis
> ypoloipes
> synarthseis p.x. gia na kanw "open" ton device driver h na ektelesw thn
> entolh "read".
> 
> Fantazomai kati exei na kanei me auto to Fops alla den exw vrei ton
> tropo na to dhlwsw mesa sto programma mou kai na to xrhsimopoihsw. Den
> kserw mhpws prepei na treksw ton compiler me idiaiteres parametrous
> h na kanw kapoio linking tou application program me to module.
> 
> An kaneis exei kapoia idea ton euxaristw ek twn proterwn
> Lambros

  Η βασική φιλοσοφία του UNIX (και του Linux), πάνω στην οποία πατάει και ο
χειρισμός όλων των συσκευών, είναι ότι τα πάντα είναι αρχεία. Στη
συγκεκριμένη περίπτωση έχουμε τα αρχεία συσκευών, απ' αυτά που είναι γεμάτο
το /dev σου. Καθένα από αυτά ουσιαστικά δεν είναι παρά ένα ζευγάρι αριθμών:
ο κύριος αριθμός συσκευής (major), βάσει του οποίου αποφασίζεται ποιος
οδηγός συσκευής θα χρησιμοποιηθεί, και ο δευτερεύων αριθμός (minor), που
ορίζει στον οδηγό ποια συσκευή να διαλέξει από αυτές που χειρίζεται.

  Επομένως εσύ πρέπει καταρχήν να διαλέξεις έναν κύριο αριθμό (δες το
Documentation/devices.txt, π.χ. στο εύρος 240-254), ή μπορείς να βάλεις τον
οδηγό σου στον οδηγό των διαφόρων συσκευών, με κύριο αριθμό 10, και να
αφήσεις αυτόν να κάνει την βρωμοδουλειά. Το drivers/char/ είναι γεμάτο από
οδηγούς που δουλεύουν έτσι, δες και πάρε παράδειγμα.

  Όταν τώρα ο οδηγός είναι έτοιμος, χρησιμοποιείς την mknod(1) για να
φτιάξεις ένα αρχείο συσκευής που να δείχνει σ' αυτόν. Μετά μπορείς να
χειριστείς την συσκευή με τις γνωστές συναρτήσεις του UNIX για τα αρχεία:
read, write, open, close, ioctl, lseek, κτλ. Φυσικά από όλες αυτές θα είναι
διαθέσιμες μόνο όσες έχεις δηλώσει στα file_operations.

  Αυτά. Ελπίζω να βοήθησα...

-- 
\  /_. _o|o _ \  /_. _ _.o_|_o _ 
 \/(_|_>|||_>  \/(_|_>(_|| |_|_> 
           __                                   
     _. _ /  \|_  _.|  _ _ _|  _.  _|_|_   _ ._ 
\/\/(_|_>| (|/| |(_||o(__>(_|o(_||_||_| |o(_||  
          \__                              _|   


--
====================================================================
Gia boithia (h na diagrafhte) e-mail sto majordomo at hellug.gr
Ta archives tis listas einai sto http://lists.hellug.gr/lgu.html
prin steilete kapoia erothsh psakte mipos exei hdh apanththei.
Gia opoiodipote problima stilte e-mail ston owner-linux-greek-users at hellug.gr
====================================================================



More information about the Linux-greek-users mailing list