Gabriele Moabiti wrote:
>
>> No, simply doing an fnclex will not do the trick.
>>
>> If you do not know the details of Xenomai and Linux FPU handling on
>> x86, I advise you to let xenomai handle the fault, it does it
>> without switching to secondary mode, so, you can use it. I do not
>> want to explain you how it works because it is rather hairy, so,
>> the only way to understand, if you really want to, is to read the
>> xenomai and linux relevant sources.
>
> I need to manage exceptions in a different way of the x86 default so
> I have to unmask fpu exceptions. I have read and follow how it works
> but in xenomai fpu exceptions invoke a switch to linux...
>
> int xnpod_trap_fault(xnarch_fltinfo_t *fltinfo) { ... if
> (xnpod_shadow_p()) { ...
> xnshadow_relax(xnarch_fault_notify(fltinfo)); } return 0; }
>
> so there is not in the source code an example on how to trap
> exception and remain into real time task...
No, you do not read the sources correctly. Xenomai does handle FPU
exception in primary mode. You know, I implemented part of this, so, you
should not assume that I do not know what I am talking about.
int xnpod_trap_fault(xnarch_fltinfo_t *fltinfo)
{
...
#ifdef __KERNEL__
if (xnarch_fault_fpu_p(fltinfo)) {
#if defined(CONFIG_XENO_OPT_PERVASIVE) && defined(CONFIG_XENO_HW_FPU)
xnarchtcb_t *tcb = xnthread_archtcb(thread);
if (xnpod_shadow_p() && !xnarch_fpu_init_p(tcb->user_task)) {
/* The faulting task is a shadow using the FPU
for the
first time, initialize its FPU. Of course if
Xenomai
is
not compiled with support for FPU, such use
of the FP
U
is an error. */
xnarch_init_fpu(tcb);
return 1;
So, here the exception was handled in primary mode, and the comments are
rather explicit.
By the way, your mailer is misconfigured and does not trunc lines.
--
Gilles.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help