[PATCH v3 3/5] Introduce _REENT_GLOBAL_STDIO_STREAMS

Sebastian Huber sebastian.huber@embedded-brains.de
Wed Aug 8 15:20:00 GMT 2018


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
>> vinschen@redhat.com:
>>
>>> 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  : sebastian.huber@embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the Newlib mailing list