2015-03-01 8 views

risposta

11

pcim_enable_device() è una versione gestita di pci_enable_device(). Significa che se chiami pci_enable_device(), devi anche chiamare pci_disable_device() alla fine. In caso di pcim_enable_device(), il framework gestito si prenderà cura delle operazioni di disabilitazione.

Nelle nuove versioni del kernel si consiglia di utilizzare tali funzioni gestite per eliminare la gestione degli errori nel codice del driver. Vedere this article per avere un'idea circa gestione risorse dispositivo (o devres) API. Questa particolare funzione (pcim_enable_device) è stata introdotta in this patch. Se volete saperne di più su devres quadro, vedi Documentation/driver-model/devres.txt

Il libro lei ha citato ("Linux Device Drivers, 3 ° edizione") non ha alcuna spiegazione per le funzioni gestite, perché è stato scritto prima di queste funzioni erano implementato.

+0

Avete una raccomandazione di un libro aggiornato/nuovo su questo argomento? – Tar

+2

Bene, c'è LDD4 in arrivo: http://shop.oreilly.com/product/0636920030867.do. Ma non riesco a ricordare nessun libro che descriva le funzioni gestite in questo momento. In realtà non ne hai bisogno, basta guardare il file 'Documentation/driver-model/devres.txt' nelle sorgenti del tuo kernel. Alla fine si riduce al seguente: si utilizza la funzione gestita anziché quella non gestita e non si chiamano funzioni di liberazione risorse alla fine. Una volta che il tuo autista sta per essere uscito/scaricato, il framework ** devres ** chiamerà automaticamente la funzione senza risorse. –

+3

Si noti inoltre che 'pcim_enable_device()' in fase di rilascio fa molto più che solo 'pci_disable_device()'. – 0andriy

Problemi correlati