2017-01-08 8 views
3

Linuxカーネルのソースコードでは、ファイルDocumentation/scheduler/sched-arch.txtに次の行が含まれています。Linuxカーネルドキュメントの次の文は何を意味していますか?

あなたcpu_idleルーチンは、次の規則に従う必要があります。

プリエンプトは今アイドル・ルーチン上で無効にする必要があります。 はschedule()を呼び出すことができ、その後再び無効にする必要があります。

私はLinuxカーネルの世界では比較的新しいので、私はcpu_idleルーチンの実装者のための最初の行のための3つの可能な解釈を考えることができます。

  1. プリエンプションが無効であると仮定してください。
  2. プリエンプションが無効であることを確認する必要があります。
  3. プリエンプションが無効になっていることを確認する必要があります。

カーネルの経験が豊富な人は誰でも正しい解釈を知っていますか?

+0

これをカーネルレポの問題として挙げることはできますか? – Richard

+0

@リチャード、[それら](https://github.com/torvalds/linux)には、私が知る限り、問題のタブは表示されません。 – merlin2011

+0

@ merlin2011、bugzilla.kernel.org。 – 0andriy

答えて

3

Yikes。新しいプラットフォームのサポートを追加する場合は、そのコメントを更新してください。

私は長い間Linuxカーネルの開発を行っていませんが、私の知る限りでは、cpu_idleルーチンを実行しているときに「プリエンプションは無効になっています」と言わなければなりません。 schedule()を実行し、すぐに再度無効にしてください。

は、例えば、PPCのidle.cに、whileループはで終わる:

preempt_enable_no_resched(); 
schedule(); 
preempt_disable(); 

さもなければプリエンプションに接触しません。

+0

これははるかに明確です。ありがとう! – merlin2011

関連する問題