Cedric Herreman wrote:
 > Hello,
 >  
 >  I am porting a 2.4 RTAI kernel module to Xenomai 2.0 kernel 2.6. I used 
 > some basic math functions in the original module. This is posing problems 
 > for me now.
 >  
 >  In the module source i include <math.h>. I add -I/usr/include to the 
 > compiler flags and also "-ffast-math -mhard-float".
 >  
 >  If i compile this, i get warnings about double definitions of 
 > "__attribute_pure__" and "__attribute_used__".
 >  
 >  If i insert the kernel module, i get an error message :
 >  "Xenomai: Invalid use of FPU in Xenomai context at " + probably the address 
 > of the instruction where the math function is called.
 >  
 >  Can anyone give me a hint ? Thanks.

You can only use floating point operations from real-time threads
contexts, not from module initialization and finalization routines, and
you have to signal Xenomai, when creating kernel space real-time
threads, that the thread will be allowed to use FPU. For the RTAI skin,
this is what the rt_task_init function 6th argument is for.

There is currently no math library module in Xenomai. So, the answer is
that you have to avoid math functions, or make a xeno_math module, the
way it is done in RTAI, i.e. using a math library such as the one made
by Sun and used by FreeBSD, or one among the various libcs available.
We once discussed this with Philippe, and a good candidate seemed to be
newlib at that time:

http://sourceware.org/newlib/

Looking at newlib sources, it seems that some of its contents come from
the Sun library too.

-- 


                                            Gilles Chanteperdrix.

Reply via email to