summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/linux/init_task.h4
-rw-r--r--include/linux/sched.h17
-rw-r--r--kernel/sched.c20
3 files changed, 22 insertions, 19 deletions
diff --git a/include/linux/init_task.h b/include/linux/init_task.h
index 98951775c267..4fcbad0862b8 100644
--- a/include/linux/init_task.h
+++ b/include/linux/init_task.h
@@ -45,8 +45,8 @@
thread_info: &init_thread_info, \
flags: 0, \
lock_depth: -1, \
- prio: 120, \
- static_prio: 120, \
+ prio: MAX_PRIO-20, \
+ static_prio: MAX_PRIO-20, \
policy: SCHED_OTHER, \
cpus_allowed: -1, \
mm: NULL, \
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 392d2174d84a..2ad9171a66b7 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -206,7 +206,24 @@ struct signal_struct {
spinlock_t siglock;
};
+/*
+ * Priority of a process goes from 0..MAX_PRIO-1, valid RT
+ * priority is 0..MAX_RT_PRIO-1, and SCHED_OTHER tasks are
+ * in the range MAX_RT_PRIO..MAX_PRIO-1. Priority values
+ * are inverted: lower p->prio value means higher priority.
+ *
+ * The MAX_RT_USER_PRIO value allows the actual maximum
+ * RT priority to be separate from the value exported to
+ * user-space. This allows kernel threads to set their
+ * priority to a value higher than any user task. Note:
+ * MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
+ */
+
+#define MAX_USER_RT_PRIO 100
+#define MAX_RT_PRIO MAX_USER_RT_PRIO
+#define MAX_PRIO (MAX_RT_PRIO + 40)
+
/*
* Some day this will be a full-fledged user tracking system..
*/
diff --git a/kernel/sched.c b/kernel/sched.c
index 2c8302b22524..698375f4e140 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -24,22 +24,8 @@
#include <linux/kernel_stat.h>
/*
- * Priority of a process goes from 0 to 139. The 0-99
- * priority range is allocated to RT tasks, the 100-139
- * range is for SCHED_OTHER tasks. Priority values are
- * inverted: lower p->prio value means higher priority.
- *
- * MAX_USER_RT_PRIO allows the actual maximum RT priority
- * to be separate from the value exported to user-space.
- * NOTE: MAX_RT_PRIO must not be smaller than MAX_USER_RT_PRIO.
- */
-#define MAX_RT_PRIO 100
-#define MAX_USER_RT_PRIO 100
-#define MAX_PRIO (MAX_RT_PRIO + 40)
-
-/*
* Convert user-nice values [ -20 ... 0 ... 19 ]
- * to static priority [ 100 ... 139 (MAX_PRIO-1) ],
+ * to static priority [ MAX_RT_PRIO..MAX_PRIO-1 ],
* and back.
*/
#define NICE_TO_PRIO(nice) (MAX_RT_PRIO + (nice) + 20)
@@ -1138,8 +1124,8 @@ static int setscheduler(pid_t pid, int policy, struct sched_param *param)
}
/*
- * Valid priorities for SCHED_FIFO and SCHED_RR are 1..99, valid
- * priority for SCHED_OTHER is 0.
+ * Valid priorities for SCHED_FIFO and SCHED_RR are
+ * 1..MAX_USER_RT_PRIO, valid priority for SCHED_OTHER is 0.
*/
retval = -EINVAL;
if (lp.sched_priority < 0 || lp.sched_priority > MAX_USER_RT_PRIO-1)