Commit 5522d5d5 authored by Ingo Molnar's avatar Ingo Molnar

sched: mark scheduling classes as const

mark scheduling classes as const. The speeds up the code
a bit and shrinks it:

   text    data     bss     dec     hex filename
  40027    4018     292   44337    ad31 sched.o.before
  40190    3842     292   44324    ad24 sched.o.after
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent b9fa3df3
...@@ -863,7 +863,7 @@ struct rq; ...@@ -863,7 +863,7 @@ struct rq;
struct sched_domain; struct sched_domain;
struct sched_class { struct sched_class {
struct sched_class *next; const struct sched_class *next;
void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup); void (*enqueue_task) (struct rq *rq, struct task_struct *p, int wakeup);
void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
...@@ -949,7 +949,7 @@ struct task_struct { ...@@ -949,7 +949,7 @@ struct task_struct {
int prio, static_prio, normal_prio; int prio, static_prio, normal_prio;
struct list_head run_list; struct list_head run_list;
struct sched_class *sched_class; const struct sched_class *sched_class;
struct sched_entity se; struct sched_entity se;
#ifdef CONFIG_PREEMPT_NOTIFIERS #ifdef CONFIG_PREEMPT_NOTIFIERS
......
...@@ -847,9 +847,9 @@ static int balance_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, ...@@ -847,9 +847,9 @@ static int balance_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest,
int *this_best_prio, struct rq_iterator *iterator); int *this_best_prio, struct rq_iterator *iterator);
#include "sched_stats.h" #include "sched_stats.h"
#include "sched_rt.c"
#include "sched_fair.c"
#include "sched_idletask.c" #include "sched_idletask.c"
#include "sched_fair.c"
#include "sched_rt.c"
#ifdef CONFIG_SCHED_DEBUG #ifdef CONFIG_SCHED_DEBUG
# include "sched_debug.c" # include "sched_debug.c"
#endif #endif
...@@ -2251,7 +2251,7 @@ static int move_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, ...@@ -2251,7 +2251,7 @@ static int move_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest,
struct sched_domain *sd, enum cpu_idle_type idle, struct sched_domain *sd, enum cpu_idle_type idle,
int *all_pinned) int *all_pinned)
{ {
struct sched_class *class = sched_class_highest; const struct sched_class *class = sched_class_highest;
unsigned long total_load_moved = 0; unsigned long total_load_moved = 0;
int this_best_prio = this_rq->curr->prio; int this_best_prio = this_rq->curr->prio;
...@@ -2276,7 +2276,7 @@ static int move_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest, ...@@ -2276,7 +2276,7 @@ static int move_tasks(struct rq *this_rq, int this_cpu, struct rq *busiest,
static int move_one_task(struct rq *this_rq, int this_cpu, struct rq *busiest, static int move_one_task(struct rq *this_rq, int this_cpu, struct rq *busiest,
struct sched_domain *sd, enum cpu_idle_type idle) struct sched_domain *sd, enum cpu_idle_type idle)
{ {
struct sched_class *class; const struct sched_class *class;
int this_best_prio = MAX_PRIO; int this_best_prio = MAX_PRIO;
for (class = sched_class_highest; class; class = class->next) for (class = sched_class_highest; class; class = class->next)
...@@ -3432,7 +3432,7 @@ static inline void schedule_debug(struct task_struct *prev) ...@@ -3432,7 +3432,7 @@ static inline void schedule_debug(struct task_struct *prev)
static inline struct task_struct * static inline struct task_struct *
pick_next_task(struct rq *rq, struct task_struct *prev) pick_next_task(struct rq *rq, struct task_struct *prev)
{ {
struct sched_class *class; const struct sched_class *class;
struct task_struct *p; struct task_struct *p;
/* /*
...@@ -6504,13 +6504,6 @@ void __init sched_init(void) ...@@ -6504,13 +6504,6 @@ void __init sched_init(void)
int highest_cpu = 0; int highest_cpu = 0;
int i, j; int i, j;
/*
* Link up the scheduling class hierarchy:
*/
rt_sched_class.next = &fair_sched_class;
fair_sched_class.next = &idle_sched_class;
idle_sched_class.next = NULL;
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
struct rt_prio_array *array; struct rt_prio_array *array;
struct rq *rq; struct rq *rq;
......
...@@ -76,8 +76,6 @@ const_debug unsigned int sysctl_sched_batch_wakeup_granularity = 25000000UL; ...@@ -76,8 +76,6 @@ const_debug unsigned int sysctl_sched_batch_wakeup_granularity = 25000000UL;
*/ */
const_debug unsigned int sysctl_sched_wakeup_granularity = 2000000UL; const_debug unsigned int sysctl_sched_wakeup_granularity = 2000000UL;
extern struct sched_class fair_sched_class;
/************************************************************** /**************************************************************
* CFS operations on generic schedulable entities: * CFS operations on generic schedulable entities:
*/ */
...@@ -1031,7 +1029,8 @@ static void set_curr_task_fair(struct rq *rq) ...@@ -1031,7 +1029,8 @@ static void set_curr_task_fair(struct rq *rq)
/* /*
* All the scheduling class methods: * All the scheduling class methods:
*/ */
struct sched_class fair_sched_class __read_mostly = { static const struct sched_class fair_sched_class = {
.next = &idle_sched_class,
.enqueue_task = enqueue_task_fair, .enqueue_task = enqueue_task_fair,
.dequeue_task = dequeue_task_fair, .dequeue_task = dequeue_task_fair,
.yield_task = yield_task_fair, .yield_task = yield_task_fair,
......
...@@ -57,7 +57,8 @@ static void set_curr_task_idle(struct rq *rq) ...@@ -57,7 +57,8 @@ static void set_curr_task_idle(struct rq *rq)
/* /*
* Simple, special scheduling class for the per-CPU idle tasks: * Simple, special scheduling class for the per-CPU idle tasks:
*/ */
static struct sched_class idle_sched_class __read_mostly = { const struct sched_class idle_sched_class = {
/* .next is NULL */
/* no enqueue/yield_task for idle tasks */ /* no enqueue/yield_task for idle tasks */
/* dequeue is not valid, we print a debug message there: */ /* dequeue is not valid, we print a debug message there: */
......
...@@ -225,7 +225,8 @@ static void set_curr_task_rt(struct rq *rq) ...@@ -225,7 +225,8 @@ static void set_curr_task_rt(struct rq *rq)
p->se.exec_start = rq->clock; p->se.exec_start = rq->clock;
} }
static struct sched_class rt_sched_class __read_mostly = { const struct sched_class rt_sched_class = {
.next = &fair_sched_class,
.enqueue_task = enqueue_task_rt, .enqueue_task = enqueue_task_rt,
.dequeue_task = dequeue_task_rt, .dequeue_task = dequeue_task_rt,
.yield_task = yield_task_rt, .yield_task = yield_task_rt,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment