[QUOTE]Originariamente inviato da adarkar
Quanto segue e` da considerarsi rigorosamente AFAIK/IIRC (forse dovrei aspettare di essere sveglio prima di rispondere... )
Premesso che 256 major dovrebbero distinguere tra diverse classi di periferiche, e non periferiche stesse,con tutte le periferiche che esistono a questo mondo, e che possono essere create con poco sforzo (esempio una caffettiera), come possono 256 major a definire univocamente e completamente tali periferiche?
infatti non possono bastare:
( http://www.xml.com/ldd/chapter/book/ch03.html#t2 )codice:The major number is a small integer that serves as the index into a static array of char drivers; "Dynamic Allocation of Major Numbers" later in this chapter explains how to select a major number. The 2.0 kernel supported 128 devices; 2.2 and 2.4 increased that number to 256 (while reserving the values 0 and 255 for future uses). Minor numbers, too, are eight-bit quantities; they aren't passed to register_chrdev because, as stated, they are only used by the driver itself. There is tremendous pressure from the developer community to increase the number of possible devices supported by the kernel; increasing device numbers to at least 16 bits is a stated goal for the 2.5 development series.
Se non esiste ancora un major per le caffettierie, dovresti accordarti con gli sviluppatori del kernel e deciderlo, altrimenti e` fattacodice:ora se io volessi creare il dev per la mia caffettiera di esempio dove lo attacco?
Beh, come detto in realta` occore star dietro ad ogni classe di periferica, piu` precisamente ad ogni astrazione di classe di periferica scelta dal kernel:insomma come possono 256 numeri stare dietro ad ogni immaginabile ed inimmaginabile periferica?
Per dire: i dischi EIDE o SCSI si accedono tutti uniformemente mediante gli stessi major number, indipendentemente dal controller cui sono connessi. E questa
scelta ammazza di gia` la varieta` di dischi, e di controller.
Comunque, come riportato, questo e` (era) effettivamente un problema.
Nel primo e nel terzo caso avresti effettivamente bisogno di un nuovo device (probabilmente, almeno), se, ad esempio, il coso non si presenta di suo come disco EIDE (o memoria di massa USB, la quale a sua volta viene vista come unita` SCSI). Per la seriale scrivi su /dev/ttyS* e risolvi il problema, per l'eth non ci sono neanche device apposite...inoltre ammettiamo che io attacco qualche device di tipo "cellulare". ne metto uno su un controller ide, uno su porta seriale, uno su bus usb e uno attaccato in qualche modo su una scheda di rete.
Problemi dello specifico driver :Pcome farà il mio pingu ad assegnare i minor?
Direi che non fara` del tutto, in questo caso...ma soprattutto come farà ad usare quei cellulari, tutti uguali, quindi in teoria tutti pilotati dallo stesso driver, se magari gli mancano i driver per il bus usb, o per la scheda ethernet sulla quale volevo mettere il cellu?



Rispondi quotando