как подсчитать количество активных пользователей в ядре

Мы используем версию ядра 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;
    }
}

, который в основном добавляет уникальных пользователей в список. Однако мы получаем случайные результаты. Есть ли конкретный способ решить эту проблему?

Спасибо.

9
задан Halil Kaskavalci 16 May 2012 в 06:41
поделиться