[PATCH] Re: Queries concerning RTOS protection in newllib
Antony KING
antony.king@st.com
Wed Jun 16 19:11:00 GMT 2004
Hi yet again,
Please find attached some additional patches to newlib which hopefully
fix the following problems I have discovered when using newlib built
with non-stub versions of the locking API (in sys/lock.h) and in a
multi-threaded environment:
* Missing initialisation of the _lock field in FILE objects declared
locally on the stack in the implementations of the sprintf/sscanf class
of functions.
Only files in libc/stdio affected: asprintf.c, siprintf.c, snprintf.c,
sprintf.c, sscanf.c, vasprintf.c, vsnprintf.c, vsprintf.c, vsscanf.c.
* _GLOBAL_REENT structure "walked" (_fwalk) multiple times when cleaning
up the FILE objects (via the _cleanup_r function) in a multi-threading
environment where _reclaim_reent is called on the death (and deletion)
of each task. This is a problem now that the function being used to walk
the FILE objects is fclose and not as previously fflush. As a result all
open FILE objects are closed on the death of the first task, which is
not very clever :-(. Solution is to remove the additional walking of
_GLOBAL_REENT in _fwalk/_fwalk_reent until explicitly invoked via the
call to _cleanup_r of _GLOBAL_REENT in the exit function.
File affected: libc/stdio/fwalk.c
* I have also removed, what I believe to be, an out of date check for
_REENT_ONLY in libc/stdlib/exit.c since there does not exist anywhere in
the newlib sources implementations of _exit_r.
Please note that this patch assumes a previous patch I have submitted
(http://sources.redhat.com/ml/newlib/2004/msg00293.html) has been
applied (really only the change to newlib/ChangeLog).
Cheers,
Antony.
Antony King wrote:
> Hi again,
>
> Please find attached a patch for some changes which were overlooked in
> my original patch; tightening up the definition of the lock macros in
> libc/include/sys/stdio.h (missing parenthesis around macro arguments)
> and a missed file (libc/stdio64/freopen64.c) in the removal the fp lock
> casting. Hope thats it for the time being.
>
> Thanks,
>
> Antony.
>
> Jeff Johnston wrote:
>
>> Thanks Antony. Patch checked in. A patch was also required to get
>> x86-linux building with these changes so I added that as well. In the
>> future, it would be helpful to me if you could add a ChangeLog entry
>> for any changes you make.
>>
>> -- Jeff J.
--
-----------------------------------------------------------------
Antony King | Email: antony.king@st.com
STMicroelectronics (R&D) Ltd. |
Bristol, BS32 4SQ. United Kingdom. | Tel: +44 (0)1454 462646
-------------- next part --------------
A non-text attachment was scrubbed...
Name: newlib.patch.gz
Type: application/x-gzip
Size: 1691 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20040616/c26bd8e0/attachment.bin>
More information about the Newlib
mailing list