Re: [PATCH] Restore _lock initialization in single threaded mode

Jeff Johnston <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAOox84vABZiokVNy=X9c1EtHNPqL9Z16_bAUQb5LUMcScn6iyg@mail.gmail.com>
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 <
[email protected]> 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 <[email protected]>
> ---
>  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
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.