Gentlemen, Awesome, thanks! I see how that works now...I'll give it a thorough look tomorrow and will update the spreadsheet accordingly. I'll pipe back up when I have a more accurate look of what's currently there. Thanks again and have a great Sunday!
Matt On Fri, Mar 19, 2021 at 8:27 PM Joel Sherrill <j...@rtems.org> wrote: > > > > On Fri, Mar 19, 2021 at 1:08 PM Gedare Bloom <ged...@rtems.org> wrote: >> >> On Fri, Mar 19, 2021 at 11:16 AM Matthew Joyce <mfjoyce2...@gmail.com> wrote: >> > >> > Dr. Joel, >> > >> > Thanks very much...I'll keep working to get a sense of what goes >> > where! In the meantime, where can I look to get the ground truth of >> > which methods are "in RTEMS" as opposed to those in newlib? >> > >> There is only one ground truth: >> git://git.rtems.org/rtems.git >> >> And for newlib >> >> git://sourceware.org/git/newlib-cygwin.git >> >> That said, searching for the function name symbols in compiled >> libraries is a good first step to rule out newlib. Then, you can >> 'grep' the RTEMS source code for the function names to see if they >> exist there. > > > rtems/cpukit to be specitic. It won't be implemented anywhere else. > > And clearly we both have forgotten that networking APIs are in the > rtems-libbsd repository. > > https://git.rtems.org/rtems-libbsd/ > > I suspect ppoll() might already be in there. Or at least supported by > FreeBSD. > > You should clone everything and grep the sources. newlib already has > qsort_r. This is the nm I used: > > $ ~/rtems-work/tools/6/bin/sparc-rtems6-nm > ~/rtems-work/tools/6/sparc-rtems6/lib/libc.a | grep qsort_r > lib_a-bsd_qsort_r.o: > 00000000 T __bsd_qsort_r > lib_a-qsort_r.o: > 00000000 T qsort_r > > Notice the last line has "T qsort_r" which says it is defined. > > grep -r in the newlib source shows it is in ./libc/search/qsort_r.c > > dladdr() looks to be prototyped in RTEMS but hidden behind an ifdef like it > wasn't ported from NetBSD so that looks possible. It is in rtems. > > Those two examples should help you figure out why you missed > finding some things that were implemented. > > I need to figure out what this next POSIX version is to be called > so I can update the tracking spreadsheet that generates the RTEMS > POSIX Compliance Guide, :) > > --joel >> >> >> > Thanks again! >> > >> > Matt >> > >> > On Fri, Mar 19, 2021 at 1:58 PM Joel Sherrill <j...@rtems.org> wrote: >> > > >> > > Keep devel@ on the list. :) >> > > >> > > On Fri, Mar 19, 2021 at 7:51 AM Matthew Joyce <mfjoyce2...@gmail.com> >> > > wrote: >> > >> >> > >> Sir, >> > >> >> > >> Thank you for the link! I see that you're right, those last four are >> > >> in newlib, plus memmem(). I updated those in the Google Sheet. >> > >> >> > >> Now I see the newlib part, but where are you referring to specifically >> > >> when you say RTEMS, as in "POSIX support comes from a mix of RTEMS and >> > >> newlib"? >> > > >> > > >> > > POSIX is a HUGE HUGE standard and references other standards. One >> > > it references and pulls in is the C99 Standard C Library which is libc >> > > and >> > > libm. RTEMS mostly does not implement this functionality and relies on >> > > another open source project for those APIs. Newlib is an open source >> > > C Library used by RTEMS, Cygwin, and most embedded systems GNU tools >> > > chains. >> > > >> > > Most of the POSIX header files with RTEMS are actually in Newlib even >> > > if they originated with RTEMS. Many are shared with Cygwin. >> > > >> > > So methods like the string, memory, and *printf come from Newlib since >> > > they >> > > are in C99. We provide POSIX like threading, signals, core file access, >> > > and >> > > much more. >> > > >> > > It's a complementary relationship but it takes a bit to figure out when >> > > something should be in one or the other. The line gets blurred at times. >> > > >> > > Say you added a new CPU architecture implementation of a math >> > > method (like Eshan did last year), then it goes in newlib. But he also >> > > added some POSIX methods which go in RTEMS. In either case, >> > > we like tests for them in RTEMS to show they work in our environment. >> > > >> > > --joel >> > > >> > > >> > > >> > >> >> > >> Thanks again! >> > >> >> > >> Matt >> > >> >> > >> On Fri, Mar 19, 2021 at 1:13 PM Joel Sherrill <j...@rtems.org> wrote: >> > >> > >> > >> > >> > >> > >> > >> > On Fri, Mar 19, 2021, 6:40 AM Joel Sherrill <j...@rtems.org> wrote: >> > >> >> >> > >> >> >> > >> >> >> > >> >> On Fri, Mar 19, 2021, 5:48 AM Matthew Joyce <mfjoyce2...@gmail.com> >> > >> >> wrote: >> > >> >>> >> > >> >>> https://docs.google.com/spreadsheets/d/1reCNOIZC5JTwQENgl-hvG8THfQqNtlUDVy_07PYodic/edit?usp=sharing >> > >> >>> >> > >> >>> Hello, >> > >> >>> >> > >> >>> As suggested by Dr. Sherril, I've taken an initial look through this >> > >> >>> document https://www.opengroup.org/austin/docs/austin_1110.pdf and >> > >> >>> added the new methods to a Googe Sheet, linked above. >> > >> >>> >> > >> >>> None of them appear to be in the RTEMS POSIX API Users Guide, but >> > >> >>> maybe that's not the right place to look. I'll stand by for your >> > >> >>> feedback regarding what's possible / desirable to add to RTEMS. >> > >> >> >> > >> >> >> > >> >> It is possible they are in our C Library or Math Library. Or just >> > >> >> not in the manual. The POSIX manual tends to be sparse since you can >> > >> >> always use man pages or the POSIX standard. >> > >> >> >> > >> >> Since you have RTEMS and tools built. Find one of the libc.a and >> > >> >> libm.a files in the tools install and librtemscpu.a in the RTEMS >> > >> >> build or install. Then try a command something like this: >> > >> >> >> > >> >> CPU-rtems6-nm LIBRARY | grep SYMBOL >> > >> >> >> > >> >> If you see it list with T then it is in the text section and there. >> > >> > >> > >> > >> > >> > Following up, I initially answered from my phone and didn't look at >> > >> > source. I am still on my phone but looked through the list and think >> > >> > the last four methods are probably the only ones currently supported. >> > >> > >> > >> > https://sourceware.org/git/?p=newlib-cygwin.git;a=tree;f=newlib/libc/string;h=ceeec602cdd0e6b5c6b002b741bda9b41da4e441;hb=HEAD >> > >> > >> > >> > POSIX support comes from a mix of RTEMS and newlib. That's key to >> > >> > this type of project. >> > >> > >> > >> > --joel >> > >> >> >> > >> >> >> > >> >> >> > >> >>> >> > >> >>> Thanks very much for your time! >> > >> >>> >> > >> >>> Sincerely, >> > >> >>> >> > >> >>> Matt >> > _______________________________________________ >> > devel mailing list >> > devel@rtems.org >> > http://lists.rtems.org/mailman/listinfo/devel _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel