2015-03-01 12 views

Antwort

11

pcim_enable_device() ist eine verwaltete Version von pci_enable_device(). Das heißt, wenn Sie pci_enable_device() anrufen, müssen Sie am Ende auch pci_disable_device() aufrufen. Im Fall von pcim_enable_device() kümmert sich Managed Framework um die Deaktivierung für Sie.

In neuen Kernel-Versionen wird empfohlen, solche verwalteten Funktionen zu verwenden, um die Fehlerbehandlung in Ihrem Treibercode zu vermeiden. Siehe this article, um einen Hinweis auf Gerät Ressourcenmanagement (oder Devres) API zu erhalten. Diese spezielle Funktion (pcim_enable_device) wurde in this patch eingeführt. Wenn Sie mehr über devres Rahmen lesen möchten, sehen Documentation/driver-model/devres.txt

Das Buch, das Sie („Linux Device Drivers, 3. Auflage“) erwähnt hat keine Erklärung für verwaltete Funktionen, weil es geschrieben wurde, bevor diese Funktionen waren implementiert.

+0

Haben Sie eine Empfehlung eines aktualisierten/neuen Buches zu diesem Thema? – Tar

+2

Nun, da ist LDD4: http://shop.oreilly.com/product/0636920030867.do. Aber ich kann mich an kein Buch erinnern, das gerade verwaltete Funktionen beschreibt. Eigentlich brauchen Sie keins, schauen Sie einfach in die Datei 'Documentation/driver-model/devres.txt' in Ihren Kernelquellen. Am Ende läuft es auf den nächsten Punkt hinaus: Sie verwenden eine verwaltete Funktion anstelle einer verwalteten, und rufen am Ende keine Ressourcenbefreiungsfunktionen auf. Sobald Ihr Treiber gerade beendet/entladen wird, ruft ** devres ** framework automatisch die ressourcenfreie Funktion für Sie auf. –

+3

Beachten Sie auch, dass 'pcim_enable_device()' bei der Veröffentlichung viel mehr als nur 'pci_disable_device()'. – 0andriy