Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -863,7 +863,7 @@ struct rq;
struct sched_domain;

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 (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep);
@@ -949,7 +949,7 @@ struct task_struct {

	int prio, static_prio, normal_prio;
	struct list_head run_list;
	struct sched_class *sched_class;
	const struct sched_class *sched_class;
	struct sched_entity se;

#ifdef CONFIG_PREEMPT_NOTIFIERS
+5 −12
Original line number Diff line number Diff line
@@ -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);

#include "sched_stats.h"
#include "sched_rt.c"
#include "sched_fair.c"
#include "sched_idletask.c"
#include "sched_fair.c"
#include "sched_rt.c"
#ifdef CONFIG_SCHED_DEBUG
# include "sched_debug.c"
#endif
@@ -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,
		      int *all_pinned)
{
	struct sched_class *class = sched_class_highest;
	const struct sched_class *class = sched_class_highest;
	unsigned long total_load_moved = 0;
	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,
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_class *class;
	const struct sched_class *class;
	int this_best_prio = MAX_PRIO;

	for (class = sched_class_highest; class; class = class->next)
@@ -3432,7 +3432,7 @@ static inline void schedule_debug(struct task_struct *prev)
static inline struct task_struct *
pick_next_task(struct rq *rq, struct task_struct *prev)
{
	struct sched_class *class;
	const struct sched_class *class;
	struct task_struct *p;

	/*
@@ -6504,13 +6504,6 @@ void __init sched_init(void)
	int highest_cpu = 0;
	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) {
		struct rt_prio_array *array;
		struct rq *rq;
+2 −3
Original line number Diff line number Diff line
@@ -76,8 +76,6 @@ const_debug unsigned int sysctl_sched_batch_wakeup_granularity = 25000000UL;
 */
const_debug unsigned int sysctl_sched_wakeup_granularity = 2000000UL;

extern struct sched_class fair_sched_class;

/**************************************************************
 * CFS operations on generic schedulable entities:
 */
@@ -1031,7 +1029,8 @@ static void set_curr_task_fair(struct rq *rq)
/*
 * 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,
	.dequeue_task		= dequeue_task_fair,
	.yield_task		= yield_task_fair,
+2 −1
Original line number Diff line number Diff line
@@ -57,7 +57,8 @@ static void set_curr_task_idle(struct rq *rq)
/*
 * 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 */

	/* dequeue is not valid, we print a debug message there: */
+2 −1
Original line number Diff line number Diff line
@@ -225,7 +225,8 @@ static void set_curr_task_rt(struct rq *rq)
	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,
	.dequeue_task		= dequeue_task_rt,
	.yield_task		= yield_task_rt,