[libvirt] [PATCH] virthreadpthread: don't try to cast pthread_t to void*

Roman Bogorodskiy bogorodskiy at gmail.com
Thu May 2 13:00:51 UTC 2013


  Daniel P. Berrange wrote:

> On Thu, May 02, 2013 at 02:05:19PM +0200, Guido Günther wrote:
> > This fixes the build on kFreeBSD that otherwise fails with:
> > 
> > util/virthreadpthread.c: In function 'virThreadSelfID':
> > util/virthreadpthread.c:222:27: error: cast from function call of type 'pthread_t' to non-matching type 'void *' [-Werror=bad-function-cast]
> > ---
> > I'm unsure why we'd need the cast to (void*) first.
> >  -- Guido
> > 
> >  src/util/virthreadpthread.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/src/util/virthreadpthread.c b/src/util/virthreadpthread.c
> > index b42b333..8d5e197 100644
> > --- a/src/util/virthreadpthread.c
> > +++ b/src/util/virthreadpthread.c
> > @@ -219,7 +219,7 @@ int virThreadSelfID(void)
> >      tid = syscall(SYS_gettid);
> >      return (int)tid;
> >  #else
> > -    return (int)(intptr_t)(void *)pthread_self();
> > +    return (int)(intptr_t)pthread_self();
> >  #endif
> 
> This was introduced in
> 
> commit 4d970fd2938a0558444cddb4f5f5e63b910b5527
> Author: Eric Blake <eblake at redhat.com>
> Date:   Fri Nov 4 16:32:30 2011 -0600
> 
>     build: silence compiler warning on BSD
>     
>     Building on 64-bit FreeBSD 8.2 complained about a cast between
>     a pointer and a smaller integer.  Going through an intermediate
>     cast shuts up the compiler.
>     
>     * src/util/threads-pthread.c (virThreadSelfID): Silence a warning.
> 
> diff --git a/src/util/threads-pthread.c b/src/util/threads-pthread.c
> index 82ce5c6..5b8fd5b 100644
> --- a/src/util/threads-pthread.c
> +++ b/src/util/threads-pthread.c
> @@ -216,7 +216,7 @@ int virThreadSelfID(void)
>      tid = syscall(SYS_gettid);
>      return (int)tid;
>  #else
> -    return (int)(void *)pthread_self();
> +    return (int)(intptr_t)(void *)pthread_self();
> 
> 
> Before removing the 'void *' we need to check it won't break
> FreeBSD again.

This change indeed brings a warning on FreeBSD:

In file included from util/virthread.c:31:
util/virthreadpthread.c: In function 'virThreadSelfID':
util/virthreadpthread.c:222: warning: cast from function call of type 'pthread_t' to non-matching type 'long int' [-Wbad-function-cast]

Roman Bogorodskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130502/904a9a9f/attachment-0001.sig>


More information about the libvir-list mailing list