--- a/kernel/sys.c.orig 2008-09-01 12:50:22.000000000 +0200 +++ b/kernel/sys.c 2008-09-01 15:11:45.000000000 +0200 @@ -162,15 +162,22 @@ else p = current; if (p) +{printk("setting prio of pid %d tgid %d to %d\n", p->pid, p->tgid, niceval); error = set_one_prio(p, niceval, error); +} break; case PRIO_PROCESS: if (who) pid = find_vpid(who); - else + else { pid = task_pid(current); + who = current->pid; + } do_each_pid_thread(pid, PIDTYPE_PID, p) { - error = set_one_prio(p, niceval, error); + if (who == p->pid || who == p->tgid) { +printk("setting prio of pid %d tgid %d to %d\n", p->pid, p->tgid, niceval); + error = set_one_prio(p, niceval, error); + } } while_each_pid_thread(pid, PIDTYPE_PID, p); break; case PRIO_PGRP: @@ -231,18 +238,25 @@ niceval = 20 - task_nice(p); if (niceval > retval) retval = niceval; +printk("PRIO_THREAD: pid %d tgid %d: niceval=%ld retval=%ld\n", p->pid, p->tgid, niceval, retval); } break; case PRIO_PROCESS: if (who) pid = find_vpid(who); - else + else { pid = task_pid(current); + who = current->pid; + } do_each_pid_thread(pid, PIDTYPE_PID, p) { - niceval = 20 - task_nice(p); - if (niceval > retval) - retval = niceval; + if (who == p->pid || who == p->tgid) { + niceval = 20 - task_nice(p); + if (niceval > retval) + retval = niceval; +printk("PRIO_PROCESS: pid %d tgid %d: niceval=%ld\n", p->pid, p->tgid, niceval); + } } while_each_pid_thread(pid, PIDTYPE_PID, p); +printk("PRIO_PROCESS: returning retval=%ld\n", retval); break; case PRIO_PGRP: if (who)