I've just completed my <a href="http://www.rtems.org/pipermail/rtems-devel/2012-March/000421.html">Hello World example</a> so I can now begin seriously considering my proposal.<br><br><div class="gmail_quote">On Wed, Mar 21, 2012 at 7:24 AM, Joel Sherrill <span dir="ltr"><<a href="mailto:joel.sherrill@oarcorp.com">joel.sherrill@oarcorp.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Other requirements include it being very desirable to be able to use the same driver with either stack. And to be able to use vanilla existing LWIP drivers with RTEMS LWIP port but not the BSD stack.<br>
</blockquote></div><br clear="all">While talking to Gedare Bloom on IRC yesterday, he too mentioned that part of the 
project would include the addition of a BSD compatibility layer. This would allow 
applications to freely switch between the BSD stack and LWIP. Doing so 
wouldn't be too difficult as LWIP already includes a BSD socket 
compatibility API. In fact, the documentation for LWIP even provides a 
reference implementation.<br><br>However, there are a few caveats. First, the BSD sockets compatibility API does not support the <span style="font-family:courier new,monospace">select()</span> and <span style="font-family:courier new,monospace">poll()</span>
 functions since LWIP simply does not have any functions for 
implementing them. According to Dunkel, such an implementation could not
 use the API and instead would have to directly communicate with the 
stack.<br><br>Would implementing the <span style="font-family:courier new,monospace">select()</span> and <span style="font-family:courier new,monospace">poll()</span> functions be necessary? If so, I'll have to look a little further into how they are implemented on other systems. I worry about <span style="font-family:courier new,monospace">select()</span>
 because when I was with the Parrot project, the test suite was always 
failing on certain platforms due to the highly platform-dependent nature of this function and is very 
tricky to implement.<br><br>From what I've been able to gather from 
other LWIP implementations, it seems that the BSD sockets compatibility 
API is not meant to be used as a complete replacement for applications 
designed for a full implementation of the BSD stack. Rather, it should only be used 
to help assist in porting existing applications. So far, I haven't been 
able to determine exactly what features aren't possible but I'll look into it a 
little further. Is that going to be a problem? I will certainly do my 
best to implement as many features as I can but if it's not possible, 
it's not possible.<br><br>All that aside, I've found a good <a href="http://cvs.savannah.gnu.org/viewvc/*checkout*/lwip/lwip/doc/sys_arch.txt?view=auto&revision=1">article</a>
 on what should be included in the operating system compatibility layer.
 Granted, it is for an older 0.6 version (the most recent is 1.4.0) but it 
should at least provide a decent starting point for my proposal.<br><br>-- <br>- Kevin Polulak (soh_cah_toa)<br>- <a href="http://cybercrud.net" target="_blank">http://cybercrud.net</a><br><br>