Re: [PATCH v3 3/5] Introduce _REENT_GLOBAL_STDIO_STREAMS
Sebastian Huber <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On 08/08/18 15:19, Freddie Chopin wrote: > On Fri, 2017-06-30 at 10:58 +0200, Sebastian Huber wrote: >> ----- Am 30. Jun 2017 um 10:13 schrieb Corinna Vinschen >> [email protected]: >> >>> On Jun 30 07:43, Sebastian Huber wrote: >>>> On 29/06/17 20:31, Corinna Vinschen wrote: >>>> >>>>> And, JFYI, Cygwin will start to use it too after the next >>>>> release:) >>>> There are some new problems with this change. We have no >>>> reference counting >>>> in the FILE objects, so a freopen(..., stdin), closes the global >>>> stdin FILE >>>> object (__sf[0]), etc. What works is a stdin = fopen(). I guess >>>> this could >>>> break existing applications. >>> Erm... isn't that expected behaviour? stdin/stdout/stderr are >>> global >>> objects, after all. They were never thread-local per POSIX. >> The stdin/stdout/stderr pointers are still thread-local with this >> option. Only the FILE objects itself are now global. If you do a >> stdin = fopen() you get a completely thread-local stdin. I have >> absolutely no idea why this stuff is thread-local in Newlib by >> default. > Would that be possible, to make stdin/stdout/stderr completely global > (remove them from _reent, use global objects) when > _REENT_GLOBAL_STDIO_STREAMS is enabled? The thread-local IO streams are a Newlib feature that is used by our applications. -- Sebastian Huber, embedded brains GmbH Address : Dornierstr. 4, D-82178 Puchheim, Germany Phone : +49 89 189 47 41-16 Fax : +49 89 189 47 41-09 E-Mail : [email protected] PGP : Public key available on request. Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.