2010-11-10 30 views

Répondre

1

Les problèmes généralement rencontrés sont qu'il existe une référence au module en vol quelque part sur le système. Il peut s'agir d'un verrou en attente, d'une sorte de rappel en vol, d'un autre module utilisant un symbole, etc. etc.

Il existe de nombreux systèmes de comptage de référence à l'intérieur du noyau qui doivent vous aider à réaliser Bien sûr, cela ne se produit jamais. Les choses qui utiliseraient votre module - ou des aspects de votre module - pourraient contenir des nombres de références pertiantes. Le noyau empêchera votre formulaire de faire un "rmmod" lorsque ce nombre est différent de zéro. Vous pouvez voir le nombre de références de tous les modules chargés dans la sortie "lsmod".

Apprenez-les et utilisez-les à bon escient.

Ces problèmes ne sont pas vraiment spécifiques à "SMP" - mais à n'importe quel module de noyau. Par exemple, si votre module était un pilote de caractères et que quelqu'un ouvrait votre périphérique, vous ne voudriez pas que votre pilote soit déchargé pendant que quelqu'un avait un descripteur de fichier ouvert - ou pire encore - il y avait un blocage de processus sur read() en attente d'une réponse. Dans de nombreux cas - comme ceci - le noyau lui-même contiendra des références pour vous. Dans ce cas, un processus ouvrant un driver tiendra un refcnt sur le module du driver.