0

外部イベントに対応できるローダブル デバイス ドライバを作成しようとしています。以下の点を明確にしてください。

1> modprob コマンドを使用して、削除モジュールをカーネルに追加します。静的モジュールに適用されますか? modprobe または rmmod を実行できます --- Linux カーネルの静的モジュールを削除します。

2>割り込みが発生した場合、データを保存して下半分をスケジュールします。下半分がタスクを完了したら、データが利用可能であることをユーザー空間でアプリケーションに通知するにはどうすればよいでしょうか。

3> debugfs のエントリを使用して、アプリケーションとドライバーの間でデータを転送することを考えています。私のデバイスドライバーと私のユーザー空間アプリケーション - MAP() システムコールを使用して、debufs 内のファイルの同じ領域をマップし、相互にデータを交換することは可能ですか?

4

1 に答える 1

0

modprob コマンドは、削除モジュールをカーネルに追加するために使用されます。静的モジュールに適用されますか? modprobe または rmmod を実行できます --- Linux カーネルの静的モジュールを削除します。

静的モジュール = Linux カーネルの一部としてコンパイルされたモジュール (個別のロード可能なモジュールとしてではなく) を意味する場合、答えは次のとおりです。いいえ、あなたがすることはできません。

割り込みが発生した場合は、データを保存して下半分をスケジュールします。下半分がタスクを完了したら、データが利用可能であることをユーザー空間でアプリケーションに通知するにはどうすればよいでしょうか。

ユーザー空間アプリがポーリング モードで実行されている場合は、ioctl または sysfs/procfs ファイルで通知できます。ただし、ユーザー空間アプリにイベント ドライバー方式で通知する必要がある場合は、netlink ソケットを使用します。

アプリケーションとドライバーの間でデータを転送するために、debugfs のエントリを使用することを考えています。私のデバイスドライバーと私のユーザー空間アプリケーション - MAP() システムコールを使用して、debufs 内のファイルの同じ領域をマップし、相互にデータを交換することは可能ですか?

ユーザー空間アプリがdebugfsを読み書きする方法は、debugfsファイルを読み書きするだけです(/proc/..または/sys/..の下にあるため、ファイルを「開いて」ファイル記述子を取得してから読み取ることができます/write - 通常のファイルのように)。

于 2012-12-28T22:31:46.350 に答える