[libvirt] [PATCH 2/4] Convert various virHash functions to use size_t / uint32

Daniel P. Berrange berrange at redhat.com
Thu Jan 26 14:04:03 UTC 2012


On Wed, Jan 25, 2012 at 11:34:14AM -0700, Eric Blake wrote:
> On 01/25/2012 09:38 AM, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> > 
> > In preparation for conversion over to use the Murmurhash3
> > algorithm, convert various virHash APIs to use size_t or
> > uint32 for their return values/parameters, instead of the
> > variable size 'unsigned long' or 'int' types
> > ---
> >  src/util/cgroup.c |    4 +-
> >  src/util/hash.c   |   56 +++++++++++++++++++++++++++-------------------------
> >  src/util/hash.h   |   14 ++++++------
> >  3 files changed, 38 insertions(+), 36 deletions(-)
> > 
> 
> > diff --git a/src/util/cgroup.c b/src/util/cgroup.c
> > index 25f2691..a270965 100644
> > --- a/src/util/cgroup.c
> > +++ b/src/util/cgroup.c
> > @@ -1636,9 +1636,9 @@ cleanup:
> >  }
> >  
> >  
> > -static unsigned long virCgroupPidCode(const void *name)
> > +static uint32_t virCgroupPidCode(const void *name)
> >  {
> > -    return (unsigned long)name;
> > +    return (uint32_t)(int64_t)name;
> 
> I know why you did the double cast - to shut up the compiler warnings
> about converting a pointer to a different size int.  But you still get
> that warning on 32-bit machines, unless you use:
> 
> s/int64_t/intptr_t/

Hmm, yes good point - will change that.

> 
> Meanwhile, your argument about this hash code only being used on Linux
> with cgroups, and where pid is not a pid_t but a parsed long int from
> procfs, convinced me - the naming is a bit unfortunate, but there is no
> bug that will impact mingw64 pid_t cleanups.
> 
> Again, you forgot 'make check'.  ACK if you fix the above cast, and
> squash this in:
> 
> diff --git i/tests/hashtest.c w/tests/hashtest.c
> index 441672c..e4b2bc1 100644
> --- i/tests/hashtest.c
> +++ w/tests/hashtest.c
> @@ -40,7 +40,7 @@ testHashInit(int size)
>          }
> 
>          if (virHashTableSize(hash) != oldsize && virTestGetDebug()) {
> -            fprintf(stderr, "\nhash grown from %d to %d",
> +            fprintf(stderr, "\nhash grown from %d to %zd",
>                      oldsize, virHashTableSize(hash));
>          }
>      }
> @@ -75,7 +75,7 @@ testHashCheckCount(virHashTablePtr hash, int count)
>      int iter_count = 0;
> 
>      if (virHashSize(hash) != count) {
> -        testError("\nhash contains %d instead of %d elements\n",
> +        testError("\nhash contains %zd instead of %d elements\n",
>                    virHashSize(hash), count);
>          return -1;
>      }

Ok


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list