<div dir="ltr"><div>Hi</div><div><br></div><div>Taking a private discussion public. Aditya is implementing the POSIX<br>method confstr() next. This email is my current set of thoughts on the</div><div>implementation of this method for RTEMS.</div><div><br></div>First, I think confstr() belongs in the RTEMS source tree. It <div>is very similar to sysconf() but has to take the following "names" as</div><div>those to be able to retrieve:</div><div><br></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_PATH</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFF32_CFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFF32_LDFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFF32_LIBS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_ILP32_OFFBIG_LIBS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LP64_OFF64_CFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LP64_OFF64_LDFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LP64_OFF64_LIBS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_LPBIG_OFFBIG_LIBS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_THREADS_CFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_THREADS_LDFLAGS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS</span><br style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">_CS_V7_ENV</span><br></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px"><br></span></div><div><span style="color:rgb(0,0,0);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:13.3333px">This is per </span><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/confstr.html">http://pubs.opengroup.org/onlinepubs/9699919799/functions/confstr.html</a></div><div><br></div><div>The value for those #define's should likely match what is in the Linux Software</div><div>Base: <a href="https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB.html">https://refspecs.linuxfoundation.org/LSB_1.2.0/gLSB.html</a> That much goes</div><div>in newlib.</div><div><br></div><div><div>The confstr() implementation will be a switch on those values and </div><div>I honestly don't even know what most of those should be in an </div><div>RTEMS environment.</div></div><div><br></div><div>But those are the names and we have to answer the question of what</div><div>is the appropriate value to return. A first implementation could return</div><div>something like getenv("PATH") for __CS_PATH, and take a swing at</div><div>the "obvious ones".  </div><div><br></div><div>The ones with CFLAGS, LDFLAGS, and LIBS would first have</div><div>to evaluated to see if the name makes sense to provide a value</div><div>for. And then return the value. I am tending to lean to returning</div><div>empty string for all of those.</div><div><br></div><div>Looks like Linux doesn't support most of them: <br></div><div><br></div><div><a href="http://man7.org/linux/man-pages/man3/confstr.3.html">http://man7.org/linux/man-pages/man3/confstr.3.html</a><br></div><div><br></div><div>I don't think this is a commonly used method so I would be perfectly</div><div>happy to support it in a minimal, but compliant manner.</div><div><br></div><div>Any other thoughts?</div><div><br></div><div><br></div><div class="gmail_extra"><div class="gmail_quote">--joel</div></div></div>