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

Eric Blake eblake at redhat.com
Wed Jan 25 18:34:14 UTC 2012


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/

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;
     }

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120125/fe7346a6/attachment-0001.sig>


More information about the libvir-list mailing list