This is the mail archive of the cygwin-patches@cygwin.com mailing list for the Cygwin project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
This patch will define __DYNAMIC_REENT__ for newlib, adds a __getreent function and eliminates the use of _impure_ptr directly. There is still one location in cygserver.cc where _impure_ptr is used directly. And it is still used in exceptions.cc as long as signals are not multithread safe. While single threaded apps should keep run without problems (_impure_ptr is still used for the mainthread) multithreaded apps should be recompiled to get the full power of the thread safe reents. This is due the fact that _RRENT is used in some newlib headers directly. Unfortunately this affects also static libs, therefore this is will be a longer transition. While the primary goal was to get thread safe errnos, this will also fix strange stdio outputs from multithreaded apps. I had these when i run apps which made printfs from different threads simultanous in a Win32 console window, they did not happen in rxvt. Fortunately the errno handling will be fixed anyway. I consider that the patch is stable, it has passed the testsuite and i didn't have any problems yet. One more note: Apps compiled with this change will not run on older cygwin releases. Thomas 2003-05-16 Thomas Pfaff <tpfaff@gmx.net> * include/cygwin/config.h (__DYNAMIC_REENT__): Define. * include/cygwin/version.h: Bump API minor version. * cygwin.din: Export __getreent * cygerrno.h: Include errno.h. Fix places where _impure_ptr is used directly to store the errno value. * errno.cc: Remove _RRENT_ONLY define to get errno.cc compiled. * signal.cc: Rename _reent_clib to _REENT throughout. * thread.h (reent_clib): Remove prototype. * thread.cc (reent_clib): Rename reent_clib to __getreent. Return _impure_ptr until MTinterface is initialized. (reent_winsup): Fix a possible SEGV when _r == NULL. Return NULL instead. * MTinterface::fixup_after_fork: Switch reent back to _impure_ptr to keep signal handling running when fork is called from a thread other than the mainthread.
Attachment:
reent.patch
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |