2011-08-28 8 views
6

Sto leggendo "driver di periferica Linux, 3a edizione" e ho trovato qualcosa che non riesco a capire.Come mai due dispositivi condividono lo stesso numero di dispositivo maggiore-minore?

nel capitolo 3.2, l'autore ha detto:

Tradizionalmente, il numero maggiore identifica il driver associato al dispositivo. Il numero minore viene utilizzato dal kernel per determinare esattamente a quale dispositivo si sta facendo riferimento.

Poi ho provato "ls -l/dev" per avere uno sguardo, ho trovato qualche cosa di insolito:

brw-rw---- 1 root disk  1, 1 2011-08-23 23:52 ram1 
brw-rw---- 1 root disk  1, 2 2011-08-23 23:52 ram2 
brw-rw---- 1 root disk  1, 3 2011-08-23 23:52 ram3 
brw-rw---- 1 root disk  1, 4 2011-08-23 23:52 ram4 
brw-rw---- 1 root disk  1, 5 2011-08-23 23:52 ram5 
... 
crw-r----- 1 root kmem  1, 1 2011-08-23 23:52 mem 
crw-r----- 1 root kmem  1, 4 2011-08-23 23:52 port 
crw-rw-rw- 1 root root  1, 3 2011-08-23 23:52 null 
crw-rw-rw- 1 root root  1, 5 2011-08-23 23:52 zero 

Questi dispositivi (ram1-ram5) tutti hanno un clone, con lo stesso importante -minor, ma nome e tipo diversi. Ho pensato che l'autore stava dicendo "numero principale significa classe dispositivo, e numero minore indica indice dispositivo." Così Major-Minor identifica un dispositivo unico "

Ora sono confuso. Come mai due dispositivi potrebbero condividere lo stesso major-minor? Quali sono esattamente i numeri dei dispositivi?

Correggimi se ho torto .. Grazie in anticipo.

risposta

8

mem, port, null e zero sono dispositivi a carattere (come evidenziato dal c il profilo inizia con). I dispositivi ramN sono dispositivi a blocchi (da cui il b). I numeri maggiore/minore per i dispositivi a blocchi sono indipendenti dai dispositivi a caratteri e viceversa.

+0

quindi sono file totalmente diversi che associano dispositivi diversi? Ho anche trovato questo in LDD3, "** I moderni kernel Linux consentono a più driver di condividere numeri importanti, ma la maggior parte dei dispositivi che vedrai sono ancora organizzati sul principio one-major-one-driver. **" :, se è così, come può il kernel scegliere il driver giusto per il dispositivo? – kumo

+1

@Shello, in primo luogo, questo è obsoleto, l'assegnazione dinamica è molto più comune in questi giorni. In secondo luogo, è più accurato dire one-major-and-type-pair-one-driver (cioè, si può considerare il tipo come parte del maggiore) – bdonlan

Problemi correlati