On Mon, 2007-02-19 at 12:01 +0100, Dmitry Adamushko wrote: > Hi, > > I suppose, that's what happens. > > __xeno_sys_init() (./ksrc/nucleus/module.c) which is module_init() and > when compiled in -> initcall() > > calls xnarch_init() (./include/asm-i386/bits/init.h) > > This one amongst other things does > > ... > #ifdef CONFIG_SMP > /* Make sure the init sequence is kept on the same CPU when > running as a module. */ > set_cpus_allowed(current, cpumask_of_cpu(0)); > #endif /* CONFIG_SMP */ > > In fact, "running as a module" seems to be a bit > misleading here. Then another macro should be used in addition, > MODULE or how it's called. > > Now guess who is a "current" here? It's "init" (pid 0). > > init() -> do_basic_setup() -> do_initcalls() -> ... -> > __xeno_sys_init() -> xnarch_init() > > "init" is a first process to run and all the rest will inherit its > "cpus_allowed" field. > > That's it. >
Eh, that's what I call a nice one Dmitry. This is the perfect example of legacy code stabbing us in the back. We should indeed definitely check for MODULE && SMP. -- Philippe. _______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
