From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NrJqf-0004gD-Md for qemu-devel@nongnu.org; Mon, 15 Mar 2010 19:37:25 -0400 Received: from [199.232.76.173] (port=52953 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NrJqf-0004fd-8Z for qemu-devel@nongnu.org; Mon, 15 Mar 2010 19:37:25 -0400 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NrJqd-0007x6-Rs for qemu-devel@nongnu.org; Mon, 15 Mar 2010 19:37:25 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:49429) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1NrJqd-0007x2-Jb for qemu-devel@nongnu.org; Mon, 15 Mar 2010 19:37:23 -0400 Received: by gwaa18 with SMTP id a18so627554gwa.4 for ; Mon, 15 Mar 2010 16:37:22 -0700 (PDT) Message-ID: <4B9EC4AF.9030801@codemonkey.ws> Date: Mon, 15 Mar 2010 18:37:19 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 1/7] Add support for generic notifier lists References: <1268239869-16058-1-git-send-email-aliguori@us.ibm.com> <201003111257.59828.paul@codesourcery.com> <4B98F99F.1000506@codemonkey.ws> <201003111419.53494.paul@codesourcery.com> <4B9E9937.3090501@linux.vnet.ibm.com> In-Reply-To: <4B9E9937.3090501@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org, Gerd Hoffman , Paul Brook , Luiz Capitulino On 03/15/2010 03:31 PM, Anthony Liguori wrote: > On 03/11/2010 08:19 AM, Paul Brook wrote: >>> On 03/11/2010 06:57 AM, Paul Brook wrote: >>>>> +struct QEMUNotifier >>>>> +{ >>>>> + void (*notify)(QEMUNotifier *notifier); >>>>> +}; >>>> I suggest combining this with QEMUBH. >>> I take it your not opposed to converting QEMUBH to be a QEMUNotifier? >>> If so, I'm happy to do it. >> It's unclear to me why you've invented a new thing in the first place. > > It's a better approximation of the command pattern because the command > is a single object as opposed to a tuple. Because the command is an > object, you can also do things like binding. For instance: typedef struct IONotifier { Notifier parent; void (*notify)(IONotifier *notifier, int fd); int fd; } IONotifier; It's been a long day... > Which now gives you a notifier that has an fd bound to it's second > argument (which is pretty useful for IO dispatch). > > You can do this with a tuple representation, but it gets awkward. One > could argue for formalizing the tuple as a struct but extending by > nesting becomes more complicated. Also, for the most part, you > already have a state for the command and embedding the object means > less dynamic memory allocation and less code to handle that. > > Regards, > > Anthony Liguori > Regards, Anthony Liguori