2017-08-24 20 views
1

RTP(User Space)から呼び出される必要のあるDKMプロジェクト(カーネルスペース)にいくつかの機能があります。それ、どうやったら出来るの?VxWorks 7 Wind River Workbench4:RTPからDKMの関数を呼び出すにはどうすればよいですか?

RTPからカーネルのみのAPIを呼び出すカスタムシステムコールを実装しましたが、ソースビルドプロジェクトの一部ではないため、DKMのこれらの関数のカスタムシステムコールを実装できません。

この問題はどうやって解決できますか?どんな助けも高く評価されます。ありがとう!!

答えて

1

カスタムシステムコールは、です。あなたはあなたがそれを使うことはできないと言ったが、ちょうど握っていることを知っている。

システムコールを追加する方法は2つあります。前にすでに使用したように見える最初のものは、VxWorksソースビルドの一部として静的に追加することです。これらはあなたのRTPに、例えば、あなたがユーザー・ライブラリーの他の部分とまったく同じように機能にアクセスできるようにする:

#include <customSysCallHeader.h> 

void foo() 
{ 
    customSysCall(); 
} 

あなたはしかし、これはソースビルドに修正が必要です言うように。言いましたが、これは以前よりVxWorks 7の問題ではありません。

ソースビルドに追加したくない場合に便利な2番目のオプションは、動的システムコールを使用することです。これらは実行時にカーネルコードによって動的に登録されます。彼らはすべての動的システムコールはsyscall()経由で呼び出されなければならないとして、しかし、アプリケーションから使用するように簡単ではありません。

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

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

私はそれが役に立つこれらの動的システムの別のライブラリのコール、およびラップにコールを発信することが分かってきました便利な関数名で

+0

ありがとうございました!私はそれを動的なカスタムシステムコールを使って実装しました。それは今すべてうまく動作しています:) – Sukum

+0

@Sukum素晴らしい。この回答が有用であると判明した場合は、アップアップして回答を受け入れるか検討してください – mjs

関連する問題