From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58426) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZYuny-000406-7N for qemu-devel@nongnu.org; Mon, 07 Sep 2015 07:41:46 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZYunt-0008EL-7i for qemu-devel@nongnu.org; Mon, 07 Sep 2015 07:41:46 -0400 Received: from [59.151.112.132] (port=17811 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZYuns-0008DS-Rl for qemu-devel@nongnu.org; Mon, 07 Sep 2015 07:41:41 -0400 Message-ID: <55ED77E6.3030003@cn.fujitsu.com> Date: Mon, 7 Sep 2015 19:41:26 +0800 From: Yang Hongyang MIME-Version: 1.0 References: <1441098383-22585-1-git-send-email-yanghy@cn.fujitsu.com> <1441098383-22585-6-git-send-email-yanghy@cn.fujitsu.com> <20150901144308.GE2407@stefanha-thinkpad.redhat.com> <55E6559E.5060305@cn.fujitsu.com> <20150902130245.GI17873@stefanha-thinkpad.redhat.com> <55E7214A.20803@cn.fujitsu.com> <20150904103255.GB8683@stefanha-thinkpad.redhat.com> <55ED3EB0.1030902@cn.fujitsu.com> <20150907091117.GA8893@stefanha-thinkpad.redhat.com> <55ED6CBD.90602@cn.fujitsu.com> <20150907110004.GE29882@redhat.com> In-Reply-To: <20150907110004.GE29882@redhat.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v9 05/10] move out net queue structs define List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" Cc: thuth@redhat.com, zhang.zhanghailiang@huawei.com, lizhijian@cn.fujitsu.com, jasowang@redhat.com, qemu-devel@nongnu.org, mrhines@linux.vnet.ibm.com, Markus Armbruster , Stefan Hajnoczi , Andreas Faerber On 09/07/2015 07:00 PM, Daniel P. Berrange wrote: > On Mon, Sep 07, 2015 at 06:53:49PM +0800, Yang Hongyang wrote: >> On 09/07/2015 05:11 PM, Stefan Hajnoczi wrote: >> [...] >>>> Thanks very much for the suggestion, I've already implemented it and tested, >>>> the code looks cleaner now. >>>> >>>> The last issue is the QOM thing, do Markus and Andreas have more input >>>> about that? >>> >>> If you would like to see examples of QOM usage, take a look at >>> iothread.c and/or backends/hostmem.c. >>> >>> The key things are: >>> >>> 1. They use include/qom/object.h to register a type based on >>> TYPE_OBJECT and their properties are registered using >>> object_property_add_*(). >>> >>> 2. They implement the TYPE_USER_CREATABLE interface so the -object >>> command-line option can be used to instantiate them. See >>> object_interfaces.h. >>> >>> As a result, a lot of code becomes unnecessary and iothread.c, in >>> particular, is quite short. >> >> After looking into this, I have some questions on the implement, could you >> please help me on this because I don't know much about the object mechanism: >> >> The netfilter need to be initialized after the net_init_clients, because we >> need to attach the filter to the net client. But currently, net client is not >> using QOM, and seems that it is initialized after objects been created. So here >> comes the problem: how can I initialize a certain object later, is it possiable? > > It is currently a bit hacky - most objects are initialized very early, > but we have a similar problem with rng-egd which must be created /after/ > chardevs. To deal with this in vl.c main() we have two helper methods > object_create_initial and object_create_delayed. The delayed method though > still happens before the net clients are created. We could probably just > move the objec_create_delayed method invokation to later on, after net > clients are created, but if that doesn't work just add an extra helper > object_create_very_delayed :-) If it's ok to move creation of "rng-egd" later, then "move the objec_create_delayed method invokation after net clients are created" should solve the problem. Thank you for the help! > > Regards, > Daniel > -- Thanks, Yang.