2012-03-21 7 views
2

どのC++コードを私のプログラムに追加して、私のウォッチドッグタイマーをテストできるようにプログラムを実際にフリーズすることができます。また、どうすれば私のOSも凍結することができます。ありがとう!ウォッチドッグタイマーをテストするために私のプログラムをフリーズ/ハングアップするプログラムはありますか?

+5

応答性をテストしたいスレッドには、ちょっとした無限の 'while(1){}'ループを追加するだけです。 –

答えて

1

あなたが時計を実行したいあなたのコード内の無限ループを使用することができます:あなたの代わりに無限ループの所定の期間が必要な場合

while(true); 

for(;;); 

do{ 
}while(true); 
+0

'for'ループは' true'初期条件を必要としません。 'for(;;);で十分です。 –

+0

はい。あなたが正しいです。それを更新しました –

+0

私はwhile(真)を好むでしょう。これは(;;;)よりも明確です。なぜなら、あなたはCの知識が必要だからです。 –

0
void sleep (int sec) 
void usleep (int ms) 

を。

+0

'スリープ'は本当にシステムをフリーズしていますか? –

+0

sleepは、現在実行中のスレッドを一時停止し、他のスレッドを実行させます。 –

+0

@JoachimPileborgしかし、私はOPが正確に反対を望んでいると思います。私は、CPUをロードするタイトなループが、ウォッチドッグを引き起こす可能性が高いことを意味します。スレッドを 'スリープ状態にする 'ことは、ウォッチドッグの理解やトリガに役立ちません。または私は間違っていますか? –

0

私はいつも個人的に気に入って...あなたがキーを押すまで

cin.get(); 

これは、システムを一時停止します=)

+0

'watchdog'をトリガーしますか? –

0

あなたのOSがフリーズ原因?簡単に...

1.

for (;;) { 
    fork(); 
} 

2.

for (;;) { 
    malloc(4*1024); // or other size, but not too big, otherwise virtual malloc 
} 

モジュール3.(注意!)

DEFINE_SPINLOCK(lock); 
spin_lock_irq(&lock); 
spin_lock_irq(&lock); 

スリープ機能だけにプロセスを導きますフリーズしても、OSはまだ正常です。 OSをフリーズさせるには、プロセスがCPUのutil、memory、file descなどのリソースを大量に取得し、解放しないようにする必要があります。

しかし、プログラム(OSではなく)のウォッチドッグタイマをテストするだけで無限ループで十分です。

関連する問題