Double definition of errno?
KJK::Hyperion
noog@libero.it
Mon Aug 19 15:56:00 GMT 2002
At 18.54 19/08/2002, you wrote:
>For thread-safety, a syscall reentrancy layer can be provided so that it
>is passed the reentrancy structure. The macro __errno_r can be used to
>set the errno for the particular reentrancy structure. For such
>platforms, define the flag, -DREENTRANT_SYSCALLS_PROVIDED.
So, if I provide reentrant system calls, I can be sure that no other code
will use "extern int"? My goal, if I wasn't clear, is to have only one
definition of errno - for SUS compliance and for my own mental sanity
>The reentrancy struct for threading can be automatically fetched so that
>the code only needs to #include <errno.h> and refer to errno directly in C
>code. This option is turned on via the dynamic reentrancy struct option
>-D__DYNAMIC_REENT__ in libc/include/sys/config.h.
[...]
Yes, I remember this. You already told me
>Regarding your plans to change errno in the reentrant syscalls, this is
>going to break a bunch of code because there are multiple reentrant
>routines in newlib that directly access the reentrancy struct errno. This
>means that your new errno won't be set in many instances.
I didn't mean this. The "true" system calls won't set errno, they will
return it as return value. It's much simpler this way, for a number of
reasons. The system calls actually exposed to the code will be simple
library calls encapsulating the "true" system calls, so they will be able
to access the reentrancy structure
More information about the Newlib
mailing list