2012-01-11 6 views
1

私は現在、FreeBSDのカーネルプリエンプションを扱うソースコードを探しています。Preemption in FreeBSD

Linuxカーネルには、set_current_state()マクロを使用してプロセスの状態(TASK_RUNNING、TASK_INTERRUPTIBLEなど)を設定する "sched.c"というcソースファイルがあります。これらのマクロは "sched.h"で定義されています。 FreeBSDカーネルのソースツリーで、対応するソースファイル(それらのマクロがFreeBSDに存在する場合はその定義があります)を教えてください。

答えて

3

関連ファイルはsrc/sys/kern/sched_4bsd.c(4BSDスケジューラ)とsrc/sys/kern/sched_ule.c(ULEスケジューラ)です。 FreeBSDとLinuxは異なるスケジューラーを使用するため、TASK_ * defineやset_current_state()マクロはありません。

はあなたが興味のあるものを見つけるために(それは簡単ですので、私は、4BSDをお勧めします)それらのいずれかを読み取る必要があります。

ところで、このプロジェクトは、ポートLinuxのBFSスケジューラにあった、コードがありますhttp://rudot.blog.com/。それが役に立つかもしれません。

+0

こんにちは、ご迷惑をおかけして申し訳ありません。 BFSプロジェクトも私にとってとても面白いです。 – akry

+0

パッチは[github](https://github.com/olevole/fbfs)でメンテナンスされており、10.1-rc/amd64を使用して正常に動作します。敬具 – jitter