[PATCH] Add configuration to detect toolset has sigaltstack() prototype

Gedare Bloom gedare at rtems.org
Thu Aug 21 01:43:57 UTC 2014


Sure.

On Wed, Aug 20, 2014 at 7:48 PM, Joel Sherrill
<joel.sherrill at oarcorp.com> wrote:
> With the recent addition of a prototype for sigaltstack() and
> associated data structures to newlib, the declaration in
> rtems_bsdnet_internal.h is no longer needed. But to ease the
> transition, I added an autoconf probe to determine if it
> was needed or not.
>
> After 4.11, I would like to rip this and and <sys/cpuset.h>
> checks out.
>
> ---
>  cpukit/configure.ac                                | 12 ++++++++++++
>  cpukit/libnetworking/rtems/rtems_bsdnet_internal.h | 10 ++++++----
>  2 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/cpukit/configure.ac b/cpukit/configure.ac
> index 56815e2..fcf3437 100644
> --- a/cpukit/configure.ac
> +++ b/cpukit/configure.ac
> @@ -116,6 +116,12 @@ RTEMS_CHECK_FUNC([pthread_getattr_np],[
>    #include <pthread.h>])
>  AC_CHECK_HEADERS([sys/cpuset.h])
>
> +# This was added to newlib in August 2014 to improve conformance.
> +# Disable use of internal definition if it is present.
> +RTEMS_CHECK_FUNC([sigaltstack],[
> +  #define _GNU_SOURCE
> +  #include <signal.h>])
> +
>  # Mandated by POSIX, not declared in some versions of newlib.
>  AC_CHECK_DECLS([getrusage],,,[#include sys/resource.h])
>
> @@ -236,6 +242,12 @@ RTEMS_CPUOPT([__RTEMS_HAVE_SYS_CPUSET_H__],
>    [1],
>    [indicate if <sys/cpuset.h> is present in toolset])
>
> +## Header file differences that need to be known in .h after install
> +RTEMS_CPUOPT([__RTEMS_HAVE_DECL_SIGALTSTACK__],
> +  [test x"${ac_cv_have_decl_sigaltstack}" = x"yes"],
> +  [1],
> +  [indicate if <signal.h> in toolset has sigaltstack()])
> +
>  ## This improves both the size and coverage analysis.
>  RTEMS_CPUOPT([__RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH__],
>    [test x"${RTEMS_DO_NOT_INLINE_THREAD_ENABLE_DISPATCH}" = x"1"],
> diff --git a/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h b/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h
> index 05e54b2..567cc8a 100644
> --- a/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h
> +++ b/cpukit/libnetworking/rtems/rtems_bsdnet_internal.h
> @@ -83,11 +83,13 @@ typedef     quad_t *        qaddr_t;
>  typedef void __sighandler_t(int);
>  typedef        __sighandler_t  *sig_t; /* type of pointer to a signal function */
>  #define NSIG    32
> -struct sigaltstack {
> -       char    *ss_sp;                 /* signal stack base */
> -       int     ss_size;                /* signal stack length */
> -       int     ss_flags;               /* SS_DISABLE and/or SS_ONSTACK */
> +#if (__RTEMS_HAVE_DECL_SIGALTSTACK__ == 0)
> +struct sigaltstack {
> +       char    *ss_sp;                 /* signal stack base */
> +       int     ss_size;                /* signal stack length */
> +       int     ss_flags;               /* SS_DISABLE and/or SS_ONSTACK */
>  };
> +#endif
>
>  #ifdef _KERNEL
>  typedef        int             boolean_t;
> --
> 1.9.3
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list