2010-07-20 27 views
6

Si je veux exécuter un programme utilisateur (pas un module noyau) dans l'espace noyau Linux, quelles options ai-je?Exécuter un programme dans l'espace noyau sous Linux

J'ai regardé KML (noyau Linux) mais cela est spécifique à l'architecture IA-32. Je veux une solution qui soit multi plate-forme et qui fonctionne sur les systèmes linux embarqués.

+0

Pourquoi ce programme doit-il s'exécuter en mode noyau? –

Répondre

3

La programmation du noyau est assez spécifique par définition, car les noyaux des différentes plates-formes sont tous différents.

5

Les programmes utilisateur ne font pas s'exécuter dans l'espace noyau - c'est ce qui fait d'eux des programmes utilisateur.

Si vous voulez exécuter du code dans l'espace du noyau, vous avez deux options: le construire dans le noyau, ou le charger avec un module du noyau.

+0

Par programme utilisateur, je veux dire un programme compilé pour s'exécuter dans l'espace utilisateur par des appels système exec * ou de toute autre manière. Kernel Model Linux ou KML nous permet d'exécuter ces programmes dans l'espace noyau Linux sans aucune modification mais il est spécifique à l'architecture IA32. Je cherche qui peut travailler sur plusieurs architectures. – binW

4

Vous avez écrit dans une autre question que vous êtes un débutant dans la programmation du noyau. L'utilisation de KML est très peu conventionnelle, et sera beaucoup plus compliquée que de faire les choses de la manière standard. Cela rendra votre apprentissage beaucoup plus difficile. Je suggère que votre meilleure option est de réévaluer pourquoi vous voulez exécuter une application de l'espace utilisateur dans l'espace noyau et trouver le moyen de ne pas le faire.

Il peut y avoir une bonne raison de faire une telle chose, mais ce n'est pas clair pour moi quelle pourrait être cette raison. Une chose que vous devriez comprendre avec le développement du noyau, c'est que juste parce que quelque chose est possible, ce n'est pas forcément quelque chose qui devrait être fait.

Si vous voulez vraiment une solution multiplateforme, vous devrez l'écrire vous-même. Les seules architectures supportées par KML sont IA32 et AMD64.

3

Jetez un coup d'œil à FemtoLinux. Au fond, il est un KML pour les systèmes embarqués et processeurs embarqués tels que les ARM et MIPS

+0

Où puis-je obtenir femtolinux. Ils n'ont pas de lien de téléchargement là-bas. – binW

+0

Essayez de les envoyer par e-mail – Demiurg

3

call_usrmodehelper

+0

Je suis un peu en retard au jeu, mais je regardais juste la même chose, et ce serait la bonne réponse. Pour être précis, c'est ainsi que vous lancez un programme d'espace utilisateur à partir de l'espace noyau, ce que je crois être l'intention originale du PO. – John

0

Si vous voulez lancer un programme utilisateur à partir de l'espace noyau, jetez un oeil à run_init_process(). C'est comme ça que le noyau lance le programme init.