M. Koehrer wrote:
> Hi everybody,
> 
> I am currently evaluating the latest Xenomai release 2.4.0 on a Dual Core 
> Pentium 4 using
> the 2.6.23 kernel and also the latest rtnet 0.9.10-rc1.
> I have one question concerning the relation of the /proc/xenomai/affinity 
> entry and the parameter
> T_CPU(n) I pass with rt_task_create (native API).
> If I set /proc/xenomai/affinity to 1 (which means to run all real time tasks 
> on CPU 0). I am not allowed
> to pass T_CPU(1) with rt_task_create. rt_task_start returns with a -EINVAL.
> 
> Background for my question is:
> rtnet uses a internal system task For this task I cannot pass the CPU I want 
> to run this CPU on.
> My idea is now to set /proc/xenomai/affinity to 1 which means (in my mind) 
> that all tasks that do
> not have specified explicitly a task number (T_CPU(n)) will run on the CPU(s) 
> specified by /proc/xenomai/affinity.
> All those tasks that specify T_CPU explicitly will run on the specified CPU, 
> no matter what value 
> /proc/xenomai/affinity is.
> However, this seems not to work.

Yes, the development version used to have this behaviour. But it didn't
work out for skins like POSIX where there is no clear
I-don't-care-about-affinity state on thread creation. So we switched to
unconditional enforcement before the final release (don't have the
thread at hand, but you can find it in the xenomai-core archive). Sorry
for the inconvenience, but it was unavoidable.

> 
> I want to run rtnet on CPU 0 and my own code on CPU 1. For this I write 1 to 
> /proc/xenomai/affinity and 
> pass T_CPU(1) with all my calls to rt_task_create. However, these tasks 
> return with -EINVAL.
> I debugged into Xenomai and found out that is caused in xnpod_start_thread() 
> at the condition
> if (xnarch_cpus_empty(thread->affinity)) ...
> 
> When I write 3 to /proc/xenomai/affinity my tasks start fine, however I have 
> now no control of the
> CPU placement of the rtnet system task.
> 
> 
> Any hints on that are highly welcome.

Suggested procedure:
1. set global affinity for RTnet and start up the stack
2. set global affinity for your application (or open it) and start that
   one up

Or do you have any tricky dependencies that work against this approach?

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
RTnet-users mailing list
RTnet-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/rtnet-users

Reply via email to