Philippe Gerum wrote:
> On Fri, 2006-10-27 at 15:32 +0200, Jan Kiszka wrote:
>> Jeff Weber wrote:
>>> How do I enable/disable all interrupts (Linux and Xenomai) from user space? 
>>>  
>>> (native skin preferred)
>> For x86:
>>
>> iopl(3);
>> __asm__ __volatile__("cli/sti");
>>
> 
> Gasp...
> 
>> Ugly hack, typical a sign that something should be moved somewhere
>> else... (there are a few exceptions, though)
>>
>> We once had some discussion if we shouldn't export domain stalling
>> features to user-space in order to support things like X-servers that
>> currently come with such code, toasting any RT kernel. May come one day,
>> but this will be primarily for legacy non-RT code.
> 
> Providing "cli" emulation to X-Servers would only make sense in order to
> stall the Linux domain; controlling the interrupt shield dynamically
> using the T_SHIELD bit would allow that already.

As far as I understood, the I-shield doesn't come for free. So, having
at least an API to stall the root domain from user-space should be cheaper.

> If I understand
> correctly, we are talking about stalling the Xenomai domain too, and
> this is a completely different story. The day we would provide such
> "feature" as an official API, we would trigger tons of misuses of this
> hack, a bit like we have now with the T_PRIMARY bit, a number of people
> sprinkle over their code to control the task exec mode, which is most of
> the time utterly sub-optimal, and automatically handled by the nucleus
> already. IOW, I'm not convinced at all that adding such API would be the
> right thing to do.

When it comes to *emulate* hacky RTAI APIs - I would not immediately
refrain from considering this. But I agree that this can open Pandora's
box, and having it in the native skip could mess up a lot. Unless we
will see a widely compatible RTAI user-space skin one day, it's probably
better to keep status quo /wrt to non-root domain stalling.

> 
> For the time being, it should be possible to write a simple kernel
> module using either the native or RTDM API from kernel space, which
> would handle such requests from user-space. For instance, one could use
> rt_task_notify() from user-space to signal a helper task in a kernel
> module that carries out the job, depending on the signal received. The
> same goes for a trivial RTDM driver only implementing the ioctl()
> support for the same purpose.

That still remains a hack, though now platform independent :). I would
simply use the assembly + a big fat warning sign saying "This code needs
serious refactoring!"

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to