From: Corinna Vinschen <vinschen@redhat.com>
To: newlib@sourceware.org
Subject: Re: [PATCH v2 00/11] Decouple global file object list from _GLOBAL_REENT
Date: Thu, 12 May 2022 21:44:39 +0200 [thread overview]
Message-ID: <Yn1jp2qnEQt+tQoJ@calimero.vinschen.de> (raw)
In-Reply-To: <Yn1ceciSi613euZ3@calimero.vinschen.de>
On May 12 21:14, Corinna Vinschen wrote:
> Hi Matt,
>
> On May 12 14:11, Matthew Joyce wrote:
> > From: Matt Joyce <matthew.joyce@embedded-brains.de>
> >
> > Hello Corinna,
> >
> > Per your comments, please see version 2.
> >
> > 1) stdio_atexit is now called stdio_exit_handler
> > 2) declarations for stdio_exit_handler() and _fwalk_sglue() are moved
> > to sys/reent.h
>
> Please see my comments in terms of patch 11, which needs an additional
> tweak. With this change, the patchset is GTG.
Btw., it looks like Cygwin can switch to _REENT_GLOBAL_STDIO_STREAMS
with only minor changes. I'll test this a bit more before pushing,
but it's quite neat so far...
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc
index c8352adf9f25..0fd5509d2306 100644
--- a/winsup/cygwin/cygtls.cc
+++ b/winsup/cygwin/cygtls.cc
@@ -55,16 +55,8 @@ _cygtls::init_thread (void *x, DWORD (*func) (void *, void *))
_REENT_INIT_PTR (&local_clib);
stackptr = stack;
altstack.ss_flags = SS_DISABLE;
- if (_GLOBAL_REENT)
- {
- local_clib._stdin = _GLOBAL_REENT->_stdin;
- local_clib._stdout = _GLOBAL_REENT->_stdout;
- local_clib._stderr = _GLOBAL_REENT->_stderr;
- if (_GLOBAL_REENT->__cleanup)
- local_clib.__cleanup = _cygtls::cleanup_early;
- local_clib.__sglue._niobs = 3;
- local_clib.__sglue._iobs = &_GLOBAL_REENT->__sf[0];
- }
+ if (_GLOBAL_REENT && _GLOBAL_REENT->__cleanup)
+ local_clib.__cleanup = _cygtls::cleanup_early;
}
thread_id = GetCurrentThreadId ();
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index 5f460d8a5c78..6b816763e002 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -757,9 +757,7 @@ dll_crt0_0 ()
lock_process::init ();
_impure_ptr = _GLOBAL_REENT;
- _impure_ptr->_stdin = &_impure_ptr->__sf[0];
- _impure_ptr->_stdout = &_impure_ptr->__sf[1];
- _impure_ptr->_stderr = &_impure_ptr->__sf[2];
+ _REENT_INIT_PTR_ZEROED (_GLOBAL_REENT);
user_data->impure_ptr = _impure_ptr;
user_data->impure_ptr_ptr = &_impure_ptr;
diff --git a/winsup/cygwin/include/cygwin/config.h b/winsup/cygwin/include/cygwin/config.h
index 71a216fbd16d..56fc326bd43e 100644
--- a/winsup/cygwin/include/cygwin/config.h
+++ b/winsup/cygwin/include/cygwin/config.h
@@ -66,6 +66,7 @@ extern inline struct _reent *__getreent (void)
/* The following block of macros is required to build newlib correctly for
Cygwin. Changing them in applications has no or not the desired effect.
Just leave them alone. */
+#define _REENT_GLOBAL_STDIO_STREAMS 1
#define _READ_WRITE_RETURN_TYPE _ssize_t
#define _READ_WRITE_BUFSIZE_TYPE size_t
#define __LARGE64_FILES 1
diff --git a/winsup/cygwin/tlsoffsets.h b/winsup/cygwin/tlsoffsets.h
[...skipped, just autogenerated data...]
diff --git a/winsup/cygwin/tlsoffsets64.h b/winsup/cygwin/tlsoffsets64.h
[...skipped, just autogenerated data...]
Corinna
next prev parent reply other threads:[~2022-05-12 19:44 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-12 12:11 Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 01/11] Remove duplicate stdio initializations Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 02/11] Remove duplicate sglue initializations Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 03/11] Declare global __sf[] only once Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 04/11] Add two __sglue initialization macros Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 05/11] Remove __sinit_locks / __sinit_recursive_mutex Matthew Joyce
2022-05-12 13:25 ` Torbjorn SVENSSON
2022-05-12 13:51 ` Sebastian Huber
2022-05-12 12:11 ` [PATCH v2 06/11] Move __sglue initializations to __sfp() Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 07/11] Add CLEANUP_FILE define Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 08/11] Add stdio_exit_handler() Matthew Joyce
2022-05-12 19:11 ` Corinna Vinschen
2022-05-17 8:36 ` Takashi Yano
2022-05-17 10:13 ` Sebastian Huber
2022-05-12 12:11 ` [PATCH v2 09/11] stdio: Replace _fwalk_reent() with _fwalk_sglue() Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 10/11] Add global __sglue object for all configurations Matthew Joyce
2022-05-12 12:11 ` [PATCH v2 11/11] Remove __sglue member for one configuration Matthew Joyce
2022-05-12 19:09 ` Corinna Vinschen
2022-05-12 19:14 ` [PATCH v2 00/11] Decouple global file object list from _GLOBAL_REENT Corinna Vinschen
2022-05-12 19:44 ` Corinna Vinschen [this message]
2022-05-13 5:44 ` Sebastian Huber
2022-05-13 7:53 ` Corinna Vinschen
2022-05-13 10:54 ` Sebastian Huber
2022-05-13 11:20 ` Corinna Vinschen
2022-05-13 8:03 ` Corinna Vinschen
2022-05-13 11:20 ` Sebastian Huber
2022-05-13 11:30 ` Corinna Vinschen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Yn1jp2qnEQt+tQoJ@calimero.vinschen.de \
--to=vinschen@redhat.com \
--cc=newlib@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).