2010-11-22 39 views
0

Si un pilote appelle pcim_enable_device(), puis utilise pcim_iomap(), devm_request_irq() et d'autres appels gérés pour allouer des ressources matérielles, comment un pilote demande-t-il au noyau de libérer ces ressources?Qu'est-ce qui déclenche la publication des ressources pci «gérées»?

pcim_release n'est pas un symbole exporté, donc quelque chose d'autre doit faire devres_free() à appeler. Mais quoi?

Remarque: Je n'ai pas besoin d'instructions sur la façon de libérer les ressources manuellement. Je veux savoir comment obtenir le sous-système devres pour tout libérer. C'est pour ça, après tout.

Répondre

1

pcim_release() devient le rappel release du struct devres. Le rappel release est appelé en release_nodes() via devres_release_all(), qui est appelé à partir de quelques endroits, notamment driver_detach().

En bref, je pense que vous n'êtes pas censé s'inquiéter à ce sujet, après tout c'est tout le point de devres - il gère les ressources pour vous, vous n'avez pas à vous soucier du nettoyage.

0

Je pense que vous voulez: pcim_iounmap

+0

J'aurais dû être plus clair. Je fais autre chose que juste de l'iomap; le sous-système managé devrait tous les libérer à la fois. pcim_iounmap ne les publiera que l'un après l'autre. –