[PATCH]: Thread safe stdio with cygwin

Thomas Pfaff tpfaff@gmx.net
Thu Jan 15 07:13:00 GMT 2004


Jeff,

memset makes only sure that _lock does not contain random data before 
__lock_init_recursive. __lock_init_recursive is called later when the 
file is really opened.

__sbprintf is a special case because it generates a fake FILE pointer 
and its associated buf on the stack, therefore there is no need to lock 
it fo thread safety.

Thomas

Jeff Johnston wrote:
> Thomas,
> 
>  You should be using __lock_init_recursive to initialize the locks 
> rather than zeroing them out.
> The code in __sbprintf should probably be closing the lock after the 
> call to VFPRINTF as well.
> 
> -- Jeff J.
> 
> Thomas Pfaff wrote:
> 
>> This patch adds support for thread safe stdio for Cygwin.
>>
>> Cygwin uses dynamic mutexes for locking, therefore it is
>> necessary to:
>>
>> 1. Initialize FILE pointers _lock properly.
>> 2. Destroy the lock when it is no longer needed.
>>
>> Regards,
>>
>> Thomas
>>
>> 2004-01-12  Thomas Pfaff  <tpfaff@gmx.net>
>>
>>     * libc/stdio/fclose.c: Include sys/lock.h.
>>     (fclose): Destroy lock when file is closed.
>>     * libc/stdio/findfp.c (__sfp): Initialize file pointers _lock
>>     member.
>>     * libc/stdio/freopen.c: Include sys/lock.h.
>>     (_freopen_r): Destroy lock when file is closed.
>>     * libc/stdio/vfprintf.c (__sbprintf): Initialize file pointers
>>     _lock member.
>>
>>  
>>
> 



More information about the Newlib mailing list