--- include/linux/ipipe.h | 6 +++++- include/linux/preempt.h | 5 +++-- kernel/ipipe/core.c | 6 ++---- 3 files changed, 10 insertions(+), 7 deletions(-) Index: linux-2.6.17.13/include/linux/ipipe.h =================================================================== --- linux-2.6.17.13.orig/include/linux/ipipe.h +++ linux-2.6.17.13/include/linux/ipipe.h @@ -313,7 +313,11 @@ do { \ local_irq_restore_hw(flags); \ } while (0) -extern struct ipipe_domain *ipipe_percpu_domain[], *ipipe_root_domain; +extern struct ipipe_domain *ipipe_percpu_domain[]; + +extern struct ipipe_domain ipipe_root; + +#define ipipe_root_domain (&ipipe_root) extern unsigned __ipipe_printk_virq; Index: linux-2.6.17.13/kernel/ipipe/core.c =================================================================== --- linux-2.6.17.13.orig/kernel/ipipe/core.c +++ linux-2.6.17.13/kernel/ipipe/core.c @@ -29,12 +29,10 @@ #include #endif /* CONFIG_PROC_FS */ -static struct ipipe_domain ipipe_root = +struct ipipe_domain ipipe_root = { .cpudata = {[0 ... IPIPE_NR_CPUS-1] = { .status = (1< -extern struct ipipe_domain *ipipe_percpu_domain[], *ipipe_root_domain; -#define ipipe_preempt_guard() (ipipe_percpu_domain[ipipe_processor_id()] == ipipe_root_domain) +extern struct ipipe_domain *ipipe_percpu_domain[]; +extern struct ipipe_domain ipipe_root; +#define ipipe_preempt_guard() (ipipe_percpu_domain[ipipe_processor_id()] == &ipipe_root) #else /* !CONFIG_IPIPE */ #define ipipe_preempt_guard() 1 #endif /* CONFIG_IPIPE */