[QUOTE]Originariamente inviato da adarkar
Quanto segue e` da considerarsi rigorosamente AFAIK/IIRC (forse dovrei aspettare di essere sveglio prima di rispondere... )
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?
Premesso che 256 major dovrebbero distinguere tra diverse classi di periferiche, e non periferiche stesse,
infatti non possono bastare:
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.
( http://www.xml.com/ldd/chapter/book/ch03.html#t2 )
codice:
ora se io volessi creare il dev per la mia caffettiera di esempio dove lo attacco?
Se non esiste ancora un major per le caffettierie, dovresti accordarti con gli sviluppatori del kernel e deciderlo, altrimenti e` fatta 
insomma come possono 256 numeri stare dietro ad ogni immaginabile ed inimmaginabile periferica?
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:
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.
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.
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...
come farà il mio pingu ad assegnare i minor?
Problemi dello specifico driver :P
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?
Direi che non fara` del tutto, in questo caso...