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>