GSOC:disable newlibc reentrancy

Ralf Corsepius ralf.corsepius at rtems.org
Thu May 8 15:53:38 UTC 2008


On Thu, 2008-05-08 at 09:54 -0500, Joel Sherrill wrote:
> Ralf Corsepius wrote:
> > On Thu, 2008-05-08 at 08:30 -0500, Joel Sherrill wrote:
> >   
> >> Ralf Corsepius wrote:
> >>     
> >>> On Thu, 2008-05-08 at 20:43 +0800, xu ray wrote:
> >>>
> >>>       
> >>>> libc_global_reent structure will take 1kb SRAM. This relic is too big
> >>>> for a system with only a few k sram. Though the pointer to libc_reent
> >>>> is used in thread dispatch, it is not a must for thread dispatch.
> >>>>
> >>>>         
> >>> What you are doing is abusing the RTEMS infrastructure for something
> >>> which isn't RTEMS, nor using the RTEMS toolchain.
> >>>
> >>> Your are converting RTEMS into a bare metal skeleton and abusing the
> >>> RTEMS toolchains to build a bare-metal based minimal scheduler library.
> >>>
> >>>
> >>>       
> >> More than anything else, it is treating RTEMS as a set of
> >> pieces that can compose a variety of systems at application
> >> configure time.  No special compiles, no differences in the
> >> toolset.
> >>     
> > Gradually I getting angry at you:
> >
> > * A define in cpukit is a special compile.
> >   
> Not in confdefs.h -- that file is NOT compiled as part of cpukit.
> It is installed and processed at application compile and link time.
> No change in confdefs.h impacts conditional compilation of
> cpukit or adds another build variant to cpukit.
Then answer: why is in CPUkit?

The OP explictly had asked to use it in cpukit.

> >> And from a historical perspective, RTEMS was nothing but
> >> a scheduler until about version 3.2.
> >>     
> > Ten years ago.
> >
> >   
> Maybe longer. :-D 
> 
> But the point is that whether we intended to or not,
> we made decisions that EVERY application wants
> feature X. 
Wrong, 

* implications from POSIX and portability demand the OS to provide
features.
* applications demand further features.

>  Now we are just undoing this and making
> features optional at link time.
You will see where this ends ... I am not sure if I will want to watch
it - IMO you are leading RTEMS into a dead-end.

> > Then newlib had been adopted, RTEMS had been made POSIX compiliant ....
> > now, you are reverting all this ten years of work and turning RTEMS into
> > toy
> >
> >   
> Toys do not get flight validation and the features we
> are making optional at link time are precisely the ones
> that are removed to produce an RTEMS configuration
> that is validatable.
A toy OS to me, is one which doesn't provide the minimal requirements
POSIX and standards require an OS to provide.

> >>   In retrospect, we should
> >> not have created the linkages between subsystems that made
> >> so many things required when they really were not.
> >>
> >> I do not want special tools or special builds of RTEMS
> >>     
> > You will have to, because the RTEMS toolchain's ABI doesn't match to
> > your libc-less TinyRTEMS. It's a bare-metal target.
> >
> >   
> Just because libc is not reentrant, does NOT mean it is
> not there or useable. 
It means you are linking one ABI against another one.

Use a linux compiler instead. If your toy-RTEMS project is successful,
this will work, if not, your toy-RTEMS project failed.

> > For bare-metal targets nobody needs RTEMS. He needs a minial scheduler
> > library.
> >
> >   
> Yes. And nothing prevents RTEMS from being reducible to
> a threads library except the forced inclusion of a few features.
> 
> I do not want this to be THE ONLY RTEMS configuration.
You want a SPECIAL COMPILE !!!!!

I think, it's time for me to leave this sick GSOC project, which never
should have been accepted, alone.

Ralf





More information about the users mailing list