On Sun, 2007-06-10 at 10:34 +0000, Oleksandr Natalenko wrote:
> >     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);


-
To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to