で無限ループを実行しています。現在、私がrmmodを実行すると、モジュールがまだビジー状態になっていることに気付き、しばらくしてカーネルパニックが起こったことに気付きます。は、私は私がモジュールをアンロードしていないまで無限ループを実行したいと考えているモジュールを作成してもらって、Linuxカーネルモジュール
while(1)
{
.......
}
私はモジュールをアンロードするまで無限ループを実行できるトリックはありますか?
で無限ループを実行しています。現在、私がrmmodを実行すると、モジュールがまだビジー状態になっていることに気付き、しばらくしてカーネルパニックが起こったことに気付きます。は、私は私がモジュールをアンロードしていないまで無限ループを実行したいと考えているモジュールを作成してもらって、Linuxカーネルモジュール
while(1)
{
.......
}
私はモジュールをアンロードするまで無限ループを実行できるトリックはありますか?
いる状況では、このループは動作しますか?これは非常に重要な質問です。
init_module
を実行すると、insmod
プロセスは決して終了しません。これはかなり悪いことです。
一部のシステムコールがそれを実行すると、システムコールは返されず、悪いこともあります。どちらの場合も
は、プロセス(いなくてもkill -9
を)殺すために方法はありません。あなたがのsoftirqハンドラ(または、より悪い、hardIRQハンドラ)でそれをやっている場合は
は、システムがハングアップするでしょう。あなたは、このタスクに専用されているカーネルスレッドでそれを行う場合
、あなたは右のそれを得るチャンスを持っています。
しかし、CPUを完全に稼働させたくない場合は、スケジューラを呼び出して他のタスクを実行させる必要があります。 msleep_interruptible
はそれを行う良い方法です。
)(私はこれがうまくいくわからないんだけど、(notStopped)しながら、しばらくのintstead(1)を使用し、最初の1に設定され、かつstop_moduleにゼロに設定します。
モジュールをアンロードするのに1秒以内にシステムがハングアップする..... – karan421
これは良い考えではありません。あなたは何を達成しようとしていますか? – stsquad
代わりにタイマーインターフェイスを使用することを検討してください。 http://kerneldeveloper.drupalgardens.com/addtimer-function –