This is the mail archive of the
pthreads-win32@sources.redhat.com
mailing list for the pthreas-win32 project.
RE: [pthreads-win32] How can you use errno with pthreads DLL?
- From: "Pedriana, Paul" <PPedriana at maxis dot com>
- To: "Mark Weaver" <mark at npsl dot co dot uk>, <pthreads-win32 at sources dot redhat dot com>
- Date: Wed, 19 Nov 2003 15:37:03 -0800
- Subject: RE: [pthreads-win32] How can you use errno with pthreads DLL?
>>1. Recompile pthreads against the same runtime
>>library that you are using rather than MSVC.
>>This is more than likely the best solution as
>>having two different CRTs is nasty bloat: think
>>two separate heaps and copies of all support data
>>structure, not to mention the additional code size.
This is a good idea which would work. I might point out that
we don't use the CRT for the most part; it is somewhat non-portable
(can't rely on half of the useful stuff existing elsewhere)
and not necessarily very efficient (with some exceptions),
and we need both. So duplicating CRTs really has little ill
effect for us. Also, VC++ no longer uses its own heap but
rather redirects all allocations to the OS under WinXP and
later OSs.
>>2. Explicitly import and use the function "_errno"
>>from MSVCRT.DLL.
OK, this is a good idea too. I was just hoping that pthreads
could simply make such a thing available itself, as IMO it is
not a good idea for a utility library to force the apps that
use it to use a particular library configuration (in particular
one that has a history of causing problems for commercial software
developers due to problems with that way Windows deals with linked
libraries). What happens if I have another DLL from somebody
else that has the exact opposite requirement (must use own CRT
and not shared one)?
>>sem_* and sched_* do, so if you don't use those you
>>could bypass this problem.
Yah, it's the semaphore functions that write to errno and the ones
that are an issue for me. I thought I read somewhere that there was
a proposal to migrate sem_* to return error values and zero upon
OK, but that's another story.
Thanks so much for the response. I will find a way to do one of the
above or add my own GetErrno function to my copy of pthreads. I find
that pthreads-win32 is a great thing and am very grateful for the
work that has been put into it.