[PATCH] Restore _lock initialization in single threaded mode

Torbjorn SVENSSON torbjorn.svensson@foss.st.com
Mon Aug 29 19:35:01 GMT 2022


Hello Jeff,

The description should have included a "not". Sorry about that.

Kind regards,
Torbjörn

On 2022-08-29 21:33, Jeff Johnston wrote:
> Hi Torbjorn,
> 
> Could you clarify?  Your description and title says when SINGLE_THREAD, 
> but your patch is #ifndef __SINGLE_THREAD__.
> 
> -- Jeff J.
> 
> On Mon, Aug 29, 2022 at 11:11 AM Torbjörn SVENSSON 
> <torbjorn.svensson@foss.st.com <mailto:torbjorn.svensson@foss.st.com>> 
> wrote:
> 
>     When __SINGLE_THREAD__ is defined, stdin, stdout and stderr needs to
>     have their _lock instance initialized. The __sfp() method is not
>     invoked for the 3 mentioned fds thus, the std() method needs to handle
>     the initialization of the lock.
> 
>     This is more or less a revert of
>     382550072b49430f8c69adee937a0ba07bd385e6
> 
>     Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@foss.st.com
>     <mailto:torbjorn.svensson@foss.st.com>>
>     ---
>       newlib/libc/stdio/findfp.c | 4 ++++
>       1 file changed, 4 insertions(+)
> 
>     diff --git a/newlib/libc/stdio/findfp.c b/newlib/libc/stdio/findfp.c
>     index c43028209..f7249f6d7 100644
>     --- a/newlib/libc/stdio/findfp.c
>     +++ b/newlib/libc/stdio/findfp.c
>     @@ -88,6 +88,10 @@ std (FILE *ptr,
>       #else /* _STDIO_CLOSE_STD_STREAMS */
>         ptr->_close = NULL;
>       #endif /* _STDIO_CLOSE_STD_STREAMS */
>     +#ifndef __SINGLE_THREAD__
>     +  if (ptr == &__sf[0] || ptr == &__sf[1] || ptr == &__sf[2])
>     +    __lock_init_recursive (&ptr->_lock);
>     +#endif
>       #ifdef __SCLE
>         if (__stextmode (ptr->_file))
>           ptr->_flags |= __SCLE;
>     -- 
>     2.25.1
> 


More information about the Newlib mailing list