Fw: Some questions on reentrancy, __DYNAMIC_REENT__ and _impure_ptr
Fri Apr 2 18:42:38 GMT 2021
On Fri, Apr 2, 2021 at 1:35 PM Dave Nadler <email@example.com> wrote:
> Sorry if I was not clear: If you use one memory location for _impure_ptr,
> and you have two processors running two threads, this does not work.
> Instead an alternate mechanism (ie thread-local storage for this ptr) is
> to support each concurrent thread with a separate reentrancy structure.
> Hope I was clear this time!
I understood it before but RTEMS has SMP support and we dealt with
this issue a few years ago so I had background. You want to make sure
the _impure_ptr is "thread local" whatever that means in the OS
adaptation. And you should be careful to implement the locking support
used in some parts of newlib.
> Best Regards, Dve
> On 4/2/2021 12:51 PM, C Howland via Newlib wrote:
> >> ------------------------------
> >> *From:* Newlib <firstname.lastname@example.org> on behalf of Dave
> Nadler <
> >> email@example.com>
> >> *Sent:* Friday, April 2, 2021 7:34 AM
> >> *To:* Nick <firstname.lastname@example.org>
> >> *Cc:* email@example.com <firstname.lastname@example.org>
> >> *Subject:* Re: Some questions on reentrancy, __DYNAMIC_REENT__ and
> >> _impure_ptr
> >> Thanks Jeff also for answering the mutex question I missed.
> >> One other issue I should have mentioned that becomes more important
> >> If there are multiple processors the simple _impure_ptr mechanism won't
> >> work...
> > Well, if you ignore the fact you have multiple processors and do nothing
> > about it, then, sure, you'll have problems. But if you manage it (e.g.
> > treating each processor as its own thread, or as independent of each
> > etc.), then multiple processors can work fine. (I have such systems
> > working.)
> > Craig
> Dave Nadler, USA East Coast voice (978) 263-0097, email@example.com, Skype
More information about the Newlib