From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:43144) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TqlOM-00030E-G0 for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:03:31 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TqlOL-00009Z-5K for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:03:30 -0500 Received: from greensocs.com ([87.106.252.221]:43193 helo=s15328186.onlinehome-server.info) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TqlOK-00009S-Vn for qemu-devel@nongnu.org; Thu, 03 Jan 2013 09:03:29 -0500 Message-ID: <50E58FAA.8090302@greensocs.com> Date: Thu, 03 Jan 2013 15:03:22 +0100 From: =?ISO-8859-1?Q?KONRAD_Fr=E9d=E9ric?= MIME-Version: 1.0 References: <1355910821-21302-1-git-send-email-fred.konrad@greensocs.com> <1355910821-21302-2-git-send-email-fred.konrad@greensocs.com> <87obh7d6el.fsf@codemonkey.ws> In-Reply-To: <87obh7d6el.fsf@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC PATCH V8 01/15] qdev : add a maximum device allowed field for the bus. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: peter.maydell@linaro.org, e.voevodin@samsung.com, mark.burton@greensocs.com, qemu-devel@nongnu.org, agraf@suse.de, stefanha@redhat.com, cornelia.huck@de.ibm.com, afaerber@suse.de On 02/01/2013 15:08, Anthony Liguori wrote: > fred.konrad@greensocs.com writes: > >> From: KONRAD Frederic >> >> Add a max_dev field to BusState to specify the maximum amount of devices allowed >> on the bus ( have no effect if max_dev=0 ) >> >> Signed-off-by: KONRAD Frederic >> --- >> hw/qdev-core.h | 2 ++ >> hw/qdev-monitor.c | 11 +++++++++++ >> 2 files changed, 13 insertions(+) >> >> diff --git a/hw/qdev-core.h b/hw/qdev-core.h >> index d672cca..af909b9 100644 >> --- a/hw/qdev-core.h >> +++ b/hw/qdev-core.h >> @@ -104,6 +104,8 @@ struct BusState { >> const char *name; >> int allow_hotplug; >> int max_index; >> + /* maximum devices allowed on the bus, 0 : no limit. */ >> + int max_dev; >> QTAILQ_HEAD(ChildrenHead, BusChild) children; >> QLIST_ENTRY(BusState) sibling; >> }; >> diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c >> index a1b4d6a..7a9d275 100644 >> --- a/hw/qdev-monitor.c >> +++ b/hw/qdev-monitor.c >> @@ -292,6 +292,17 @@ static BusState *qbus_find_recursive(BusState *bus, const char *name, >> if (bus_typename && !object_dynamic_cast(OBJECT(bus), bus_typename)) { >> match = 0; >> } >> + if ((bus->max_dev != 0) && (bus->max_dev <= bus->max_index)) { >> + if (name != NULL) { >> + /* bus was explicitly specified : return an error. */ >> + qerror_report(ERROR_CLASS_GENERIC_ERROR, "Bus '%s' is full", >> + bus->name); >> + return NULL; >> + } else { >> + /* bus was not specified : try to find another one. */ >> + match = 0; >> + } >> + } >> if (match) { >> return bus; >> } > Nice change, but I wonder if this should be a class property instead of > an object property? Would different objects of the same class ever set > this differently? I don't know. What do you think is the best ? Fred > > Regards, > > Anthony Liguori > >> -- >> 1.7.11.7