2017-08-24 6 views
1

J'ai quelques fonctions dans mon projet DKM (espace noyau) qui doit être appelé à partir de RTP (espace utilisateur). Comment je fais ça? J'ai implémenté des appels système personnalisés pour appeler les API du noyau uniquement à partir de RTP, mais je ne suis pas en mesure d'implémenter des appels système personnalisés pour ces fonctions dans DKM car il ne fait pas partie de Source build Project.VxWorks 7 Wind River Workbench4: Comment appeler une fonction dans DKM à partir de RTP?

Comment puis-je résoudre ce problème? Toute aide est grandement appréciée. Merci!!

Répondre

1

Les appels système personnalisés est la réponse. Je sais que vous avez dit que vous ne pouvez pas l'utiliser, mais attendez.

Il existe deux méthodes pour ajouter des appels système. Le premier, que vous avez déjà utilisé, est de les ajouter de manière statique, dans le cadre de VxWorks Source Build. Celles-ci vous permettent d'accéder aux fonctions de la même manière que toute autre partie des bibliothèques utilisateur, par exemple, dans votre RTP:

#include <customSysCallHeader.h> 

void foo() 
{ 
    customSysCall(); 
} 

Comme vous le dites cependant, cela ne nécessite une modification de la construction de la source. Cela dit, c'est moins un problème dans VxWorks 7 qu'auparavant.

La deuxième option, qui est plus utile si vous ne voulez pas ajouter à la version source, consiste à utiliser les appels système dynamiques. Ceux-ci sont enregistrés dynamiquement au moment de l'exécution, par un code de noyau. Ils ne sont pas aussi faciles à utiliser de l'application cependant, que tous les appels système dynamiques doivent être appelées via syscall():

#include <syscall.h> //This may not be correct 

void foo() 
{ 
    syscall(CUSTOM_SYSCALL_NUM,1,2,3,4,5,6); 
} 

Je l'ai trouvé utile de passer des appels à ces systèmes dynamiques appels dans une bibliothèque séparée, et wrap avec des noms de fonctions utiles.

+0

Merci !. Je l'ai implémenté en utilisant des appels système dynamiques personnalisés et tout fonctionne bien maintenant :) – Sukum

+0

@Sukum Great. Si vous avez trouvé cette réponse utile, merci de considérer l'upvoting et/ou d'accepter la réponse – mjs