[PATCH V2] inet:rpc: fix build in !NPTL case

Carmelo AMOROSO carmelo.amoroso at st.com
Mon Mar 26 08:03:11 UTC 2012


On 14/03/2012 15.56, Carmelo AMOROSO wrote:
> __libc_once is not available / needed when multithreading support
> is not enabled, so authnone_create() calls authnone_create_once()
> directly.
> When LT.{old,new} is used instead of NPTL, it needs to explicitly
> include <bits/libc-lock.h> to get __libc_once to be visible.
> 
> Signed-off-by: Carmelo Amoroso <carmelo.amoroso at st.com>
> ---
>  libc/inet/rpc/auth_none.c   |    6 ++++++
>  libc/inet/rpc/rpc_private.h |    1 +
>  2 files changed, 7 insertions(+), 0 deletions(-)
> 
> diff --git a/libc/inet/rpc/auth_none.c b/libc/inet/rpc/auth_none.c
> index d066f6b..70bee5b 100644
> --- a/libc/inet/rpc/auth_none.c
> +++ b/libc/inet/rpc/auth_none.c
> @@ -68,7 +68,9 @@ struct authnone_private_s {
>  };
>  
>  static struct authnone_private_s authnone_private;
> +#ifdef __UCLIBC_HAS_THREADS__
>  __libc_once_define(static, authnone_private_guard);
> +#endif
>  
>  static void authnone_create_once (void);
>  
> @@ -95,7 +97,11 @@ authnone_create_once (void)
>  AUTH *
>  authnone_create (void)
>  {
> +#ifdef __UCLIBC_HAS_THREADS__
>    __libc_once (authnone_private_guard, authnone_create_once);
> +#else
> +  authnone_create_once();
> +#endif
>    return &authnone_private.no_client;
>  }
>  libc_hidden_def(authnone_create)
> diff --git a/libc/inet/rpc/rpc_private.h b/libc/inet/rpc/rpc_private.h
> index e1214d2..38ade1c 100644
> --- a/libc/inet/rpc/rpc_private.h
> +++ b/libc/inet/rpc/rpc_private.h
> @@ -12,6 +12,7 @@ extern u_long _create_xid (void) attribute_hidden;
>   */
>  #ifdef __UCLIBC_HAS_THREADS__
>  #include <pthread.h>
> +#include <bits/libc-lock.h>
>  struct rpc_thread_variables {
>  	fd_set		svc_fdset_s;		/* Global, rpc_common.c */
>  	struct rpc_createerr rpc_createerr_s;	/* Global, rpc_common.c */

Applied.

Carmelo



More information about the uClibc mailing list