On 21/7/2022 3:21 pm, Sebastian Huber wrote:
> On 20.07.22 22:52, Chris Johns wrote:
>> On 20/7/2022 6:20 pm, Sebastian Huber wrote:
>>> On 20/07/2022 10:11, Chris Johns wrote:
>>>>>> Are these TLS allocations in newlib based on a single use of a newlib 
>>>>>> call
>>>>>> that
>>>>>> brings in the reent stuff? How does that work?
>>>>> No, each TLS object is defined in the translation unit which uses the 
>>>>> object.
>>>>> The goal is to get only those objects linked in which are needed.
>>>>> Currently, the
>>>>> Newlib thread delete hook pulls in some objects, however, this dependency 
>>>>> will
>>>>> go away once the TLS destructors are implemented.
>>>> If I have task A and it opens a file and writes something to a file system 
>>>> will
>>>> it pull in the TLS support for files?
>>>
>>> Yes.
>>>
>>>> Given the TLS support is static does this mean all threads in the A app
>>>> allocate
>>>> the newlib file TLS variables even if they never use newlib?
>>>
>>> Yes.
>>>
>>>>
>>>> My understanding of the existing reent support is tasks that do not use 
>>>> newlib
>>>> it never allocate a reent struct?
>>>
>>> No, the struct _reent is allocated for all tasks if you don't use
>>> CONFIGURE_DISABLE_NEWLIB_REENTRANCY (which is not recommended). How would 
>>> you
>>> know if a task doesn't use Newlib?
>>
>> I thought the get would do a check and then allocate on first use. It has 
>> been
>> many years since I looked at the implementation.
>>
>> I think this change is a good one because it will reduce the needed memory to
>> the amount used and it will have better performance.
>>
>> I think option you post is a good thing to add, maybe as
>> --enable-newlib-reent-tls. What will be the default?
> 
> You mean a proper sb-set-builder option and not just a --with-newlib-tls?

Not an sb option rather something using the --wtih/--without flags. I just
renamed yours as `thread-local` may not be as well know as TLS.

> I
> would make it the default for the targets with known to work TLS support:
> aarch64, arm, nios2, powerpc, riscv, and sparc.

Sure it can be the default for the archs that can support it but a
--without-newlib-tls option might be useful to someone using libdl if this
change breaks their usage, ie linking from archives on the target.

Chris
_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to