Magellan Linux

Contents of /trunk/kernel26-magellan/patches-2.6.20-r1/0008-2.6.20-sched-limit_policy_changes.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 106 - (show annotations) (download)
Sun Mar 11 16:18:20 2007 UTC (17 years, 2 months ago) by niro
File size: 1532 byte(s)
ver bump to 2.6.20-r1;
- using linux-2.6.20.2
- 2.6.20-ck1 patch set
- 8.34.8 ati-drivers
- 1.0-9755 nvidia-drivers
- 1.2.0 ipw-drivers
- squashfs-3.0 support
- vesafb-tng 1.0-rc2
- fbsplash-0.9.2-r5 for linux-2.6.20-rc6
- removed zd1211 drivers (now in upstream tree)

1 Many applications explicitly set SCHED_NORMAL on threads thus undoing the
2 usefulness of the SCHED_ISO, SCHED_BATCH and SCHED_IDLEPRIO policies.
3
4 For unprivileged users:
5
6 Only allow non realtime policies to be downgraded from ISO->BATCH->IDLEPRIO
7 but not back to NORMAL.
8
9 Signed-off-by: Con Kolivas <kernel@kolivas.org>
10
11 ---
12 kernel/sched.c | 26 ++++++++++++++++++++++++++
13 1 file changed, 26 insertions(+)
14
15 Index: linux-2.6.20-ck1/kernel/sched.c
16 ===================================================================
17 --- linux-2.6.20-ck1.orig/kernel/sched.c 2007-02-16 19:01:31.000000000 +1100
18 +++ linux-2.6.20-ck1/kernel/sched.c 2007-02-16 19:01:31.000000000 +1100
19 @@ -4125,6 +4125,31 @@ recheck:
20 if (param->sched_priority > p->rt_priority &&
21 param->sched_priority > rlim_rtprio)
22 return -EPERM;
23 + } else {
24 + switch (p->policy) {
25 + /*
26 + * Can only downgrade policies but not back to
27 + * SCHED_NORMAL
28 + */
29 + case SCHED_ISO:
30 + if (policy == SCHED_ISO)
31 + goto out;
32 + if (policy == SCHED_NORMAL)
33 + return -EPERM;
34 + break;
35 + case SCHED_BATCH:
36 + if (policy == SCHED_BATCH)
37 + goto out;
38 + if (policy != SCHED_IDLEPRIO)
39 + return -EPERM;
40 + break;
41 + case SCHED_IDLEPRIO:
42 + if (policy == SCHED_IDLEPRIO)
43 + goto out;
44 + return -EPERM;
45 + default:
46 + break;
47 + }
48 }
49
50 /* can't change other user's priorities */
51 @@ -4180,6 +4205,7 @@ recheck:
52
53 rt_mutex_adjust_pi(p);
54
55 +out:
56 return 0;
57 }
58 EXPORT_SYMBOL_GPL(sched_setscheduler);