カーネルバージョン2.4-20を使用しており、カーネルモードでアクティブユーザーの数をカウントする必要があります。目的はスケジューラーを変更することなので、sched.cでschedule()関数を変更します。
list_for_eachマクロでユーザーをカウントします。
list_for_each(tmp, &runqueue_head) {
p = list_entry(tmp, struct task_struct, run_list);
if (can_schedule(p, this_cpu)) {
if (unique(p->uid)) add_new_user(p->uid);
int weight = goodness(p, this_cpu, prev->active_mm);
if (weight > c)
c = weight, next = p;
}
}
これは基本的にユニークユーザーをリストに追加することです。ただし、ランダムな結果が得られます。この問題を解決する具体的な方法はありますか?
ありがとうございました。