kernel-desktop i preemptrt
Tomasz Woźniak
ctr w post.pl
Śro, 24 Sty 2007, 10:43:21 CET
Witam
robię:
$./builder --with preemptrt kernel-desktop.spec
Dostaję:
[...]
+ echo Patch #0 (kernel-desktop-preempt-rt.patch):
Patch #0 (kernel-desktop-preempt-rt.patch):
+ patch -p1 -s
+ < /home/users/tomlee/rpm/SOURCES/kernel-desktop-preempt-rt.patch
1 out of 21 hunks FAILED -- saving rejects to file kernel/softirq.c.rej
błąd: Błędny status wyjścia z /var/tmp/rpm-tmp.84493 (%prep)
W załączniku przesyłam softirq.c.rej
--
Pozdrawiam
Tomasz Woźniak
Amatorzy zbudowali Arkę Noego- profesjonaliści Tytanika.
-------------- następna część ---------
***************
*** 565,610 ****
}
#endif /* CONFIG_HOTPLUG_CPU */
- static int __cpuinit cpu_callback(struct notifier_block *nfb,
unsigned long action,
void *hcpu)
{
- int hotcpu = (unsigned long)hcpu;
struct task_struct *p;
switch (action) {
case CPU_UP_PREPARE:
- BUG_ON(per_cpu(tasklet_vec, hotcpu).list);
- BUG_ON(per_cpu(tasklet_hi_vec, hotcpu).list);
- p = kthread_create(ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu);
- if (IS_ERR(p)) {
- printk("ksoftirqd for %i failed\n", hotcpu);
- return NOTIFY_BAD;
}
- kthread_bind(p, hotcpu);
- per_cpu(ksoftirqd, hotcpu) = p;
- break;
case CPU_ONLINE:
- wake_up_process(per_cpu(ksoftirqd, hotcpu));
break;
#ifdef CONFIG_HOTPLUG_CPU
case CPU_UP_CANCELED:
- if (!per_cpu(ksoftirqd, hotcpu))
- break;
/* Unbind so it can run. Fall thru. */
- kthread_bind(per_cpu(ksoftirqd, hotcpu),
- any_online_cpu(cpu_online_map));
case CPU_DEAD:
- p = per_cpu(ksoftirqd, hotcpu);
- per_cpu(ksoftirqd, hotcpu) = NULL;
- kthread_stop(p);
takeover_tasklets(hotcpu);
break;
#endif /* CONFIG_HOTPLUG_CPU */
- }
return NOTIFY_OK;
}
static struct notifier_block __cpuinitdata cpu_nfb = {
.notifier_call = cpu_callback
};
--- 820,893 ----
}
#endif /* CONFIG_HOTPLUG_CPU */
+ static const char *softirq_names [] =
+ {
+ [HI_SOFTIRQ] = "high",
+ [TIMER_SOFTIRQ] = "timer",
+ [NET_TX_SOFTIRQ] = "net-tx",
+ [NET_RX_SOFTIRQ] = "net-rx",
+ [BLOCK_SOFTIRQ] = "block",
+ [TASKLET_SOFTIRQ] = "tasklet",
+ #ifdef CONFIG_HIGH_RES_TIMERS
+ [HRTIMER_SOFTIRQ] = "hrtimer",
+ #endif
+ [RCU_SOFTIRQ] = "rcu",
+ };
+
+ static __cpuinit int cpu_callback(struct notifier_block *nfb,
unsigned long action,
void *hcpu)
{
+ int hotcpu = (unsigned long)hcpu, i;
struct task_struct *p;
switch (action) {
case CPU_UP_PREPARE:
+ /* We may have tasklets already scheduled on
+ processor 0, so don't check there. */
+ if (hotcpu != 0) {
+ BUG_ON(per_cpu(tasklet_vec, hotcpu).list);
+ BUG_ON(per_cpu(tasklet_hi_vec, hotcpu).list);
}
+ for (i = 0; i < MAX_SOFTIRQ; i++) {
+ per_cpu(ksoftirqd[i].nr, hotcpu) = i;
+ per_cpu(ksoftirqd[i].cpu, hotcpu) = hotcpu;
+ p = kthread_create(ksoftirqd, &per_cpu(ksoftirqd[i], hotcpu),
+ "softirq-%s/%d", softirq_names[i], hotcpu);
+ if (IS_ERR(p)) {
+ printk("ksoftirqd %d for %i failed\n", i, hotcpu);
+ return NOTIFY_BAD;
+ }
+ kthread_bind(p, hotcpu);
+ per_cpu(ksoftirqd[i].tsk, hotcpu) = p;
+ }
+ break;
case CPU_ONLINE:
+ for (i = 0; i < MAX_SOFTIRQ; i++)
+ wake_up_process(per_cpu(ksoftirqd[i].tsk, hotcpu));
break;
+
#ifdef CONFIG_HOTPLUG_CPU
case CPU_UP_CANCELED:
/* Unbind so it can run. Fall thru. */
+ for (i = 0; i < MAX_SOFTIRQ; i++)
+ if (!per_cpu(ksoftirqd[i].tsk, hotcpu))
+ continue;
+ kthread_bind(per_cpu(ksoftirqd[i], hotcpu).tsk, any_online_cpu(cpu_online_map));
case CPU_DEAD:
+ for (i = 0; i < MAX_SOFTIRQ; i++) {
+ p = per_cpu(ksoftirqd[i], hotcpu).tsk;
+ per_cpu(ksoftirqd[i], hotcpu).tsk = NULL;
+ kthread_stop(p);
+ }
takeover_tasklets(hotcpu);
break;
#endif /* CONFIG_HOTPLUG_CPU */
+ }
return NOTIFY_OK;
}
+
static struct notifier_block __cpuinitdata cpu_nfb = {
.notifier_call = cpu_callback
};
Więcej informacji o liście pld-users-pl