svn commit: r295561 - in head: include sys/mips/include sys/powerpc/include sys/sparc64/include sys/sys sys/x86/include
Bruce Evans
brde at optusnet.com.au
Fri Feb 12 20:29:52 UTC 2016
On Fri, 12 Feb 2016, Konstantin Belousov wrote:
> On Sat, Feb 13, 2016 at 03:56:42AM +1100, Bruce Evans wrote:
>> Our Standard C namespace is a subset of the POSIX namespace. Most
>> Standard C headers are (were) careful about this. There aren't many
>> Standard C headers or versions of Standard C or large variations in the
>> versions, so this is relatively easy to do.
>>
>> We also attempt to use POSIX visibility ifdefs. This is not done so
>> carefully, and has more bugs due to more variations. But <signal.h>
>> does it fairly carefully. It has ifdefs for XSI, POSIX >= 2001,
>>
>> I find the ifdefs useful for seeing when POSIX introduced a feature
>> but not for actual use to compile under an old standard.
>
> So you are about the ANSI C & non-POSIX compilation environment ?
> Do you mean the following:
>
> diff --git a/include/signal.h b/include/signal.h
> index 33be55c..31cded7 100644
> --- a/include/signal.h
> +++ b/include/signal.h
> @@ -36,8 +36,10 @@
> #include <sys/cdefs.h>
> #include <sys/_types.h>
> #include <sys/signal.h>
> +#if __POSIX_VISIBLE || __XSI_VISIBLE
> #include <machine/ucontext.h>
> #include <sys/_ucontext.h>
> +#endif
>
> #if __BSD_VISIBLE
> /*
>
> I can change #if __POSIX_VISIBLE to some version cap, if you prefer.
It needs a version number to be correct. Plain __POSIX_VISIBLE means
all versions. __POSIX_VISBLE >= 200112 is probably good enough for
the POSIX part. I don't know the correct number for XSI. Perhaps
it can be simply omitted. _XOPEN_SOURCE >= 600 gives
__XSI_VISIBLE >= 600 && _POSIX_C_SOURCE >= 200112. So __XSI_VISIBLE
in the above is only to support XSI before 2001. We only support 1
XSI before that -- #500 which corresponds to 1996 POSIX. Very likely
XSI did have ucontext_t then, so the above ifdef is correct. It is
just hard to read. Easier than google hits though :-). I found a
gnu man page about getcontext() being in SVID but couldn't easily
find the history.
Bruce
More information about the svn-src-all
mailing list