Fw: [PATCH 03/14] Add _REENT_ERRNO(ptr)

Sebastian Huber sebastian.huber@embedded-brains.de
Tue Jul 12 16:38:31 GMT 2022


On 12/07/2022 18:11, Corinna Vinschen wrote:
> On Jun 23 12:55, Sebastian Huber wrote:
>> On 21/06/2022 16:41, C Howland wrote:
>>>> ------------------------------
>>>> *From:* Newlib<newlib-bounces+craig.howland=caci.com@sourceware.org>   on
>>>> behalf of Sebastian Huber<sebastian.huber@embedded-brains.de>
>>>> *Sent:* Tuesday, June 21, 2022 8:49 AM
>>>> *To:*newlib@sourceware.org<newlib@sourceware.org>
>>>> *Subject:* [PATCH 03/14] Add _REENT_ERRNO(ptr)
>>>>
>>>>
>>>>
>>>> From: Matt Joyce<matthew.joyce@embedded-brains.de>
>>>>
>>>> Add a _REENT_ERRNO() macro to encapsulate the access to the
>>>> _errno member of struct reent. This will help to replace the
>>>> structure member with a thread-local storage object in a follow
>>>> up patch.
>>>> ---
>>>>
>>> There already exists an __errno_r() macro that does the very same function
>>> (defined in sys/errno.h).  (Its use, however, is limited, only being used
>>> in files under iconv/lib.)  Having the same thing done both ways probably
>>> doesn't make sense.  The new name is more consistent with the rest of the
>>> things being done, while the old name is established and errno is a more
>>> specialized case.  It probably would be a good idea to either
>>> 1)  use __errno_r() instead of creating _REENT_ERRNO() or
>>> 2)  replace __errno_r() with _REENT_ERRNO() as part of adding the latter.
>> I would not remove an existing macro, so option 1) would be preferred by me.
> Really?  Your followup patches introduce a lot of new _REENT_foo macros,
> so defining one of them with a different name doesn't make a lot of sense,
> does it?

There are lots of *_r() functions (for example _strdup_r()) so I assumed 
that this __errno_r() might be used outside of Newlib.

> 
> Either all these macros should be called __foo_r(), or __errno_r() should
> actually be removed or at least be defined in terms of _REENT_errno(),
> if you really think we should keep it.  

The original patch defined __errno_r() like this:

#define __errno_r(ptr) _REENT_ERRNO(ptr)

I think naming of the new _REENT_*() macros is quite consistent with the 
stuff we already have in <sys/reent.h>.

> Given that it's used only in
> iconv/lib kind of shows that it was never meant for consumption outside
> newlib anyway, isn't it?

What about renaming the existing __errno_r() uses in Newlib to 
_REENT_ERRNO() with a definition of __errno_r() in <sys/errno.h> for 
potential users outside of Newlib?

-- 
embedded brains GmbH
Herr Sebastian HUBER
Dornierstr. 4
82178 Puchheim
Germany
email: sebastian.huber@embedded-brains.de
phone: +49-89-18 94 741 - 16
fax:   +49-89-18 94 741 - 08

Registergericht: Amtsgericht München
Registernummer: HRB 157899
Vertretungsberechtigte Geschäftsführer: Peter Rasmussen, Thomas Dörfler
Unsere Datenschutzerklärung finden Sie hier:
https://embedded-brains.de/datenschutzerklaerung/


More information about the Newlib mailing list