[Xenomai] Porting a library to Xenomai

Leopold Palomo-Avellaneda leo at alaxarxa.net
Fri Dec 11 15:03:55 CET 2015

El Divendres, 11 de desembre de 2015, a les 14:20:12, Gilles Chanteperdrix va 
> On Fri, Dec 11, 2015 at 01:44:01PM +0100, Leopold Palomo-Avellaneda wrote:
> > Hi,
> > 
> > I'm working to make a library to work with Xenomai. It's a library that
> > has a thread and open a socket to communicate with an external device via
> > network.
> > 
> > I have read the guide "Porting a Linux application to Xenomai dual kernel
> > [1]" but still I have some doubts in some details. So, here my topics
> > without any importance order:
> > 
> > - What is the recommended way to obtain the link, flags, etc information
> > to
> > build an application that use Xenomai? xeno-config, pkg-config, some build
> > macros to find the information, ...
> Quoting the document you say you have read:


> "Compilation flags
> To ease that task, the xeno-config script, installed when compiling
> Xenomai user-space support, is able to give you these flags. (...)
> Beware: this way of obtaining the compilation flags is recommended,
> if for anything because it will make using a different release of
> Xenomai easier: the flags may change between two different releases."

ok, but this solution implies that xeno-config must be available. In any case 
as CMake user, following your indications the Macros should use xeno-config. 
For what I have seen in the net, not all the people use that.

> > - I would like to have a code that could be used with an Standard POSIX or
> > a Xenomai. I thought that protecting my code with some #ifdef __XENO__ I
> > could choose which part is specific to Xenomai and which no. However, I'm
> > a bit confused, because then, I don't understand what is the utility of
> > the wrap script. Please, could you elaborate a bit more this part,
> > especially focused in an application the could use an standard network
> > interface or rtnet version.
> Quoting the documentation again: "Use of Linux original services


No Gilles, that's the point that I don't understand. Maybe it could be a 
language problem. 

Are you saying that, for instance using a rtnet driver, it's the same to NOT 
use the wrap script and use this:

 /* Open a plain Linux UDP socket. */
 #ifndef __XENO__
       fd = socket(PF_INET, SOCK_DGRAM, 0);
 #else /* __XENO__ */
       fd = rt_dev_socket(PF_INET, SOCK_DGRAM, 0);
 #endif /* __XENO__ */


 #ifndef __XENO__
       printf("Stopping the robot.\n");
 #else /* __XENO__ */
       rt_printf("Stopping the robot.\n");
 #endif /* __XENO__ */

And which are the implications of the use of the wrap script? Could I avoid 
the use of the script protecting the wrapped functions with __XENO__ and it's 
the same?

> > - In the document, there's a section about the mlockall option. So, may I
> > understand that from xenomai <= 2.6.3 it's not needed that I call the
> > mlockall function?
> Quoting the documentation again: "
> Starting with version 2.6.3, as part of their initialization,
> Xenomai libraries systematically call mlockall to commit and lock
> the whole application memory.

Ok, so why it's use it in your example:


May I understand that that line is not needed?



Linux User 152692     GPG: 05F4A7A949A2D9AA
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
A: Top-posting.
Q: What is the most annoying thing in e-mail?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://xenomai.org/pipermail/xenomai/attachments/20151211/e165c3df/attachment.sig>

More information about the Xenomai mailing list