On 01/14/2014 01:15 PM, Leopold Palomo-Avellaneda wrote:
Hi,
in the example xddp-label a two realtime task are connected with a non-
realtime time. They share the same port where one rt task receive from the
non-rt task and the other send to rt-task.
The regular thread read and write in the same devname
(/proc/xenomai/registry/rtipc/xddp/XDDP_PORT_LABEL). One rt thread listen from
that port.
I don't understand how is possible that both (non-rt and rt threads) listen
from the same port and could not have collisions if two threads (non-rt and
rt) try to write in the same port.
Could not be better to separate it?
No, that would defeat the purpose of the illustration.
XDDP is a wrapper over Xenomai's message pipe support, offering a
socket-based interface to applications. Each XDDP port is mapped to a
given /dev/rtp device minor, but the communication endpoints between RT
and NRT are different internally.
[XDDP-port] <---> xnpipe #<port>
^
|
| * input queue: /dev/rtp -> xnpipe
| * output queue: xnpipe -> /dev/rtp
|
v
/dev/rtp<port>
So, when NRT reads from /dev/rtp<port>, it does not actually listen to
the same endpoint/queue than RT, because message pipes are
bi-directional. Likewise, NRT and RT never write to the same queue,
since the purpose of message pipes is to cross the RT/NRT domain boundary.
--
Philippe.
_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai