Thread (23 messages) 23 messages, 8 authors, 2007-06-19

Re: v2.6.21.4-rt11

From: Thomas Gleixner <hidden>
Date: 2007-06-10 14:41:28

On Sun, 2007-06-10 at 10:34 +0000, Oleksandr Natalenko wrote:
quoted
    http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.21.4.tar.bz2
    http://people.redhat.com/mingo/realtime-preempt/patch-2.6.21.4-rt11
kernel/built-in.o: In function `__schedule':
(.sched.text+0xe0): undefined reference to `pick_next_task'
make[1]: *** [.tmp_vmlinux1] Ошибка 1
make[1]: Leaving directory `/usr/src/linux-2.6.21.4-rt11-cfs17-arsenic'
make: *** [debian/stamp-build-kernel] Ошибка 2

It seems that patch is broken.
Yup, for CONFIG_SMP=n and for CONFIG_PREEMPT_RT=n.

Fix below

	tglx

Index: linux-2.6.21/kernel/sched.c
===================================================================
--- linux-2.6.21.orig/kernel/sched.c	2007-06-10 16:00:58.000000000 +0200
+++ linux-2.6.21/kernel/sched.c	2007-06-10 16:46:23.000000000 +0200
@@ -827,6 +827,25 @@ unsigned long weighted_cpuload(const int
 	return cpu_rq(cpu)->raw_weighted_load;
 }
 
+static inline struct task_struct *
+pick_next_task(struct rq *rq, struct task_struct *prev)
+{
+	struct sched_class *class = sched_class_highest;
+	u64 now = __rq_clock(rq);
+	struct task_struct *p;
+
+	prev->sched_class->put_prev_task(rq, prev, now);
+
+	do {
+		p = class->pick_next_task(rq, now);
+		if (p)
+			return p;
+		class = class->next;
+	} while (class);
+
+	return NULL;
+}
+
 #ifdef CONFIG_SMP
 
 static inline void __set_task_cpu(struct task_struct *p, unsigned int cpu)
@@ -1093,25 +1112,6 @@ next_in_queue:
 
 static int double_lock_balance(struct rq *this_rq, struct rq *busiest);
 
-static inline struct task_struct *
-pick_next_task(struct rq *rq, struct task_struct *prev)
-{
-	struct sched_class *class = sched_class_highest;
-	u64 now = __rq_clock(rq);
-	struct task_struct *p;
-
-	prev->sched_class->put_prev_task(rq, prev, now);
-
-	do {
-		p = class->pick_next_task(rq, now);
-		if (p)
-			return p;
-		class = class->next;
-	} while (class);
-
-	return NULL;
-}
-
 /*
  * Pull RT tasks from other CPUs in the RT-overload
  * case. Interrupts are disabled, local rq is locked.
Index: linux-2.6.21/kernel/time/clockevents.c
===================================================================
--- linux-2.6.21.orig/kernel/time/clockevents.c	2007-06-10 16:00:57.000000000 +0200
+++ linux-2.6.21/kernel/time/clockevents.c	2007-06-10 16:45:40.000000000 +0200
@@ -18,6 +18,7 @@
 #include <linux/notifier.h>
 #include <linux/smp.h>
 #include <linux/sysdev.h>
+#include <linux/sched.h>
 
 /* The registered clock event devices */
 static LIST_HEAD(clockevent_devices);
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help