On 03/15/2012 05:30 PM, Doug Brunner wrote:
Thanks Philippe. I hadn't even known about the existence of the RTIPC driver, 
and I definitely like the idea.

I've been experimenting with it a bit today, and found that it seems to be 
allowed for more than two sockets to connect to the same port. I modified 
iddp-sendrecv.c to have two client processes, both of which now connect to the 
same port as the server, then did the same thing with iddp-label.c (two clients 
both connect()ing to the same label).

This would cause havoc with the communications that go on between my 
processes--they need a one-to-one channel. I could implement semaphores to 
enforce this, but it would be nice to avoid that complication. Is there a way 
to make it happen using just the socket interface?

The RTIPC protocols are fundamentally datagram-based, so allowing N:1 data paths is wanted. If the issue is about picking a different port each time you bind a server socket in the AF_RTIPC domain, then I would suggest to set sipc_port to -1 when binding the server-side socket: a free port will be picked automatically. You could then use getsockname() to retrieve the actual port #, and pass it to the clients.


     Doug Brunner

-----Original Message-----
From: "Philippe Gerum"<[email protected]>
Sent: Monday, March 12, 2012 12:43pm
To: "Doug Brunner"<[email protected]>
Cc: [email protected]
Subject: Re: [Xenomai-help] Intermixing native and POSIX skins

On 03/12/2012 08:12 PM, Doug Brunner wrote:
I'd like to be able to use native skin communications services (most 
importantly real time pipes) from a thread created with the POSIX skin. Is this 
safe?

Yes, that's fine. You could also use the XDDP protocol (cross-domain
datagram) implemented by the RTIPC Xenomai driver for exactly the same
purpose, with a socket-based interface as a bonus.


I'm doing this because I'm building a C++ library that can use either real-time 
communications services, when used with a real-time application, or regular 
Linux pipe I/O, when used with a Linux application; these services are called 
by tasks that need to exist in both cases. I'd like to make the tasks always 
POSIX threads to eliminate the need for a bunch of wrappers and preprocessor 
ugliness that I put there to support either skin, depending on which version of 
the library is being built.

Thanks,
      Doug Brunner



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





--
Philippe.

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

Reply via email to