2010-07-14 6 views
2

Je souhaite installer un nouvel appel système dans un emplacement non utilisé et attendre les instructions de l'espace utilisateur. Je ne sais pas comment le faire.Comment faire pour installer un appel système dans un module noyau

+1

Je ne suis pas un expert, mais je suis sûr que cela vous aidera si vous nous dites quel système d'exploitation vous utilisez. –

Répondre

2

En supposant que vous discutez Linux ...

Mucking avec la table d'appel système est une mauvaise idée. Les noyaux ont quelques failles de sécurité contre le changement dynamique (ce qui est une bonne chose), donc vous devrez reconstruire tout votre noyau pour faire les modifications.

Voici une meilleure approche tout aussi flexible. Construire un module qui crée un nouveau périphérique de bloc et implémente votre "appel système" comme un ioctl sur ce périphérique. Vous n'aurez pas à recompiler le noyau pour l'implémenter, et vous n'aurez pas à vous soucier de toucher les fichiers d'assemblage. Lorsque vous effectuez un développement itératif, la recompilation et la réinsertion d'un module vous permettent de travailler beaucoup plus rapidement que si vous aviez besoin de redémarrer pour que vos modifications prennent effet.

Regardez Linux Device Drivers, Ch5 pour plus d'informations sur l'écriture d'ioctls.

+1

Interface 'sysfs'' 'ioctl', en termes de conventions modernes du noyau. –

+1

L'utilisation de sysfs ou d'ioctls dépend de la nature de l'appel système que l'affiche tente de mettre en œuvre. Sysfs semble adapté pour afficher des informations et des variables de configuration. C'est une belle amélioration de la programmabilité et de la facilité d'utilisation des ioctls. Cependant, les ioctls sont plus généraux et ressemblent plus à ce que vous obtiendriez en ajoutant un nouvel appel système. – Karmastan

Questions connexes