We're using kernel version 2.4-20 and we need to count number of active users, in kernel mode. Objective is to change the scheduler, so we are in sched.c, modifying schedule() function.
What we do is to count the users in list_for_each macro.
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;
}
}
which is basically adding unique users to a list. However, we get random results. Is there a concrete way to solve this problem?
Thank you.