From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51441) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIumx-0005Yw-6g for qemu-devel@nongnu.org; Tue, 12 Jan 2016 03:58:52 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aIumu-0005tj-FY for qemu-devel@nongnu.org; Tue, 12 Jan 2016 03:58:51 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38739) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aIumu-0005tc-8S for qemu-devel@nongnu.org; Tue, 12 Jan 2016 03:58:48 -0500 Date: Tue, 12 Jan 2016 08:58:40 +0000 From: "Dr. David Alan Gilbert" Message-ID: <20160112085840.GA2455@work-vm> References: <1450780978-19123-1-git-send-email-zhangchen.fnst@cn.fujitsu.com> <1450780978-19123-3-git-send-email-zhangchen.fnst@cn.fujitsu.com> <20160108120825.GB2477@work-vm> <56930A0D.5000900@cn.fujitsu.com> <20160111125009.GE2477@work-vm> <56945DD5.8050305@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <56945DD5.8050305@cn.fujitsu.com> Subject: Re: [Qemu-devel] [RFC PATCH v2 02/10] Jhash: add linux kernel jhashtable in qemu List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Zhang Chen Cc: Li Zhijian , Gui jianfeng , Jason Wang , "eddie.dong" , qemu devel , Huang peng , Gong lei , Stefan Hajnoczi , jan.kiszka@siemens.com, Yang Hongyang , zhanghailiang * Zhang Chen (zhangchen.fnst@cn.fujitsu.com) wrote: > > > On 01/11/2016 08:50 PM, Dr. David Alan Gilbert wrote: > >* Zhang Chen (zhangchen.fnst@cn.fujitsu.com) wrote: > >> > >>On 01/08/2016 08:08 PM, Dr. David Alan Gilbert wrote: > >>>* Zhang Chen (zhangchen.fnst@cn.fujitsu.com) wrote: > >>>>From: zhangchen > >>>> > >>>>Jhash used by colo-proxy to save and lookup > >>>>net connection info > >>>> > >>>>Signed-off-by: zhangchen > >>>>Signed-off-by: zhanghailiang > >>>>--- > >>>> include/qemu/jhash.h | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ > >>>> 1 file changed, 61 insertions(+) > >>>> create mode 100644 include/qemu/jhash.h > >>>> > >>>>diff --git a/include/qemu/jhash.h b/include/qemu/jhash.h > >>>>new file mode 100644 > >>>>index 0000000..5b82d02 > >>>>--- /dev/null > >>>>+++ b/include/qemu/jhash.h > >>>>@@ -0,0 +1,61 @@ > >>>>+/* jhash.h: Jenkins hash support. > >>>>+ * > >>>>+ * Copyright (C) 2006. Bob Jenkins (bob_jenkins@burtleburtle.net) > >>>>+ * > >>>>+ * http://burtleburtle.net/bob/hash/ > >>>>+ * > >>>>+ * These are the credits from Bob's sources: > >>>>+ * > >>>>+ * lookup3.c, by Bob Jenkins, May 2006, Public Domain. > >>>>+ * > >>>>+ * These are functions for producing 32-bit hashes for hash table lookup. > >>>>+ * hashword(), hashlittle(), hashlittle2(), hashbig(), mix(), and final() > >>>>+ * are externally useful functions. Routines to test the hash are > >>>>+included > >>>>+ * if SELF_TEST is defined. You can use this free for any purpose. > >>>>+It's in > >>>>+ * the public domain. It has no warranty. > >>>>+ * > >>>>+ * Copyright (C) 2009-2010 Jozsef Kadlecsik (kadlec@blackhole.kfki.hu) > >>>>+ * > >>>>+ * I've modified Bob's hash to be useful in the Linux kernel, and > >>>>+ * any bugs present are my fault. > >>>>+ * Jozsef > >>>>+ */ > >>>>+ > >>>>+#ifndef QEMU_JHASH_H__ > >>>>+#define QEMU_JHASH_H__ > >>>>+ > >>>>+#include "qemu/bitopt.h" > >>>That does not build, the header in qemu is bitop*s*.h. > >>> > >>>Dave > >>I'm very sorry for it, fix it to > >> > >>#include "qemu/bitopts.h" > >No! It's: > > > >#include "qemu/bitops.h" > > > >Please at least build test this code! > > > >Dave > > Fix it to #include "qemu/bitops.h" > I have rebuild this code,but qemu makefile did't check the .h > I don't know whether it is a qemu bug. > you can try change it to #include "qemu/bitops.h" and make. > then change it to #include "qemu/bitopts.h" and make. > repeat it twice, now, you can change it to #include "everything" > in jhash.h. gcc don't check the .h and report error.//// gcc/makefile don't check these things; it's when you include the next patch in your series, that #include "qemu/jhash.h" in colo-proxy.c which is where it will break. Dave > > > Thanks > zhangchen > > > >>Thanks > >>zhangchen > >> > >> > >>>>+ > >>>>+/* > >>>>+ * hashtable relation copy from linux kernel jhash > >>>>+ */ > >>>>+ > >>>>+/* __jhash_mix -- mix 3 32-bit values reversibly. */ > >>>>+#define __jhash_mix(a, b, c) \ > >>>>+{ \ > >>>>+ a -= c; a ^= rol32(c, 4); c += b; \ > >>>>+ b -= a; b ^= rol32(a, 6); a += c; \ > >>>>+ c -= b; c ^= rol32(b, 8); b += a; \ > >>>>+ a -= c; a ^= rol32(c, 16); c += b; \ > >>>>+ b -= a; b ^= rol32(a, 19); a += c; \ > >>>>+ c -= b; c ^= rol32(b, 4); b += a; \ > >>>>+} > >>>>+ > >>>>+/* __jhash_final - final mixing of 3 32-bit values (a,b,c) into c */ > >>>>+#define __jhash_final(a, b, c) \ > >>>>+{ \ > >>>>+ c ^= b; c -= rol32(b, 14); \ > >>>>+ a ^= c; a -= rol32(c, 11); \ > >>>>+ b ^= a; b -= rol32(a, 25); \ > >>>>+ c ^= b; c -= rol32(b, 16); \ > >>>>+ a ^= c; a -= rol32(c, 4); \ > >>>>+ b ^= a; b -= rol32(a, 14); \ > >>>>+ c ^= b; c -= rol32(b, 24); \ > >>>>+} > >>>>+ > >>>>+/* An arbitrary initial parameter */ > >>>>+#define JHASH_INITVAL 0xdeadbeef > >>>>+ > >>>>+#endif /* QEMU_JHASH_H__ */ > >>>>-- > >>>>1.9.1 > >>>> > >>>> > >>>> > >>>-- > >>>Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > >>> > >>> > >>>. > >>> > >>-- > >>Thanks > >>zhangchen > >> > >> > >> > >-- > >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > > > > > >. > > > > -- > Thanks > zhangchen > > > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK