We have developed some networking interface code that works very 
differently from the current stuff in rtlinux. Our code uses the native 
linux networking code and intercepts UDP packets before they come 
to/from a linux process and redirects them to an rtlinux task.  The code 
allocates a pool of buffers in linux and a queue to use/free those 
buffers on the rtside.  The interface is clunky because I didn't want to 
create any patches to the linux networking code (except to expose one 
function call in the networking code).  Better interfaces can easily be 
developed.

The basic idea is that an application would be written in the standard 
linux process space, and then, after the socket is established and 
connected (yes, the current code requires connected UDP sockets), the 
application would redirect traffic to a real-time task.  By doing this, 
the logic and complexities of establishing a valid and meaningful UDP 
socket are perfomed in normal linux processes, but the UDP data is 
processed in real-time tasks.

The biggest advantage of this approach is that all network drivers are 
supported and so is all the special linux networking code including 
netfilter (nat, etc.), routing, ARP, bonding, etc.  The disadvantage is 
that ones code has to be written with this separation of setup code from 
rtcode in mind.  The code is, however, in the spirit of the original 
intent of rtlinux where only rt stuff runs in rt space.

Is there any interest in this code out there?

Robert


-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
--
For more information on Real-Time Linux see:
http://www.rtlinux.org/

Reply via email to