On 12/17/2012 05:08 PM, Wolfgang Mauerer wrote:
> On 15/12/12 23:16, Gilles Chanteperdrix wrote:
>> On 12/15/2012 11:03 PM, Wolfgang Mauerer wrote:
>>> On 15/12/2012 22:24, Gilles Chanteperdrix wrote:
>>>> I see some (recent) activity on this git repository:
>>>> https://github.com/siemens/ipipe/commits/core-3.5_for-upstream
>>>>
>>>> In what state is this branch, can I pull from it?
>>> please don't pull yet, I need to port a few more patches forward
>>> and fix one known issue with the tree. But I'll try to send a
>>> pull/discussion request next week.
>>>
>>>> At least the changes allowing preempt_disable()/preempt_enable() to be
>>>> called from non-root context look dubious.
>>> are you referring to 767f0d43fe3? This one still carries a TODO
>>> item in the description to remind me to check with which
>>> non-x86 archs this can cause problems, and what we can do about
>>> them.
>>
>>
>> Actually, we already have ipipe_safe_current(), so I guess what you need
>> is ipipe_safe_current_thread_info() ?
>
> yes, that makes sense -- how about something like
>
> #ifndef ipipe_safe_current_thread_info
> #define ipipe_safe_current_thread_info() \
> ({ \
> struct thread_info *__ti__; \
> unsigned long __flags__; \
> __flags__ = hard_smp_local_irq_save(); \
> __ti__ = ipipe_test_foreign_stack() ? \
> &init_thread_info : current_thread_info(); \
> hard_smp_local_irq_restore(__flags__); \
> __ti__; \
> })
> #endif
>
> and use that as basis to determine the preemption counter in preempt_count()?
> Unfortunately, solely #including linux/ipipe.h into linux/preempt.h
> leads to complete havoc, most likely caused by some spinlock preprocessor
> magic.
> So I need to figure out a clean way of getting this definition into preempt.h
> before I prepare a patch.
>
> Thanks, Wolfgang
>
Needless to say, you have to pay attention that add_preempt_count() and
sub_preempt_count() are no longer inlined in this case, otherwise this
will cause a lot of bloat. Also, you probably want safe_preempt_disable
and safe_preempt_enable which are nops for foreign stacks, and this
should be replaced unconditionnaly, but only for configurations
requiring it (such as CONFIG_PERF ?).
--
Gilles.
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai