2012-03-21 10 views
3

特定のシステムのすべてのコアでcr4ビット8(PCE)を有効にする必要があります。私は現在、モジュールがロードされたときに実行されるコアにこのビットを設定する作業モジュールを持っています。私はここにこだわっており、すべてのコアでこれを並列化する方法に関する多くの文書を見つけられませんでした:すべてのコアに制御レジスタを設定

1)ロードが起きたときにコアで必ずアンロードが発生するとは限りません。正確にクリーンアップ

2)私は、特定のコアでモジュールの初期化を強制的に実行する方法を見つけられません - できれば、各コアごとにモジュールを別々に呼び出すことができますすべてのコアを設定します。モジュールに対して利用可能なsched_setaffinity等価物はないようです。

このモジュールを、すべてのコアで並列化または反復することで、すべてのコアで実行する方法はありますか?私はカーネル自体を変更することも、ブート時にモジュールをロードすることもできないので、レジスタの初期設定を変更することはできません。

ヒントありがとうございます、私はこれを理解しようとここに夢中になります!

答えて

4

- smp_call_function()は、システムのすべてのコアで関数を呼び出します。 -/

これは完全に機能し、呼び出された関数内にsmp_processor_id()を出力することで各コアがコードを実行することを確認できます。

EDIT:この機能は以外のコアを呼び出すだけなので、モジュールを現在実行しているコアを取得するには、別途関数を1回呼び出す必要があります。

+0

smp_call_functionのバージョンでは、コアのマスクを実行したり、コアIDを特定のコアで実行したりすることができます。 – ChrisAshton84

関連する問題