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