From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Subject: Re: [RFC 1/9] notifier: add validity check and notify function Date: Wed, 25 Jul 2012 08:53:29 +0200 Message-ID: <500F97E9.4070508@redhat.com> References: <1343169246-17636-1-git-send-email-nab@linux-iscsi.org> <1343169246-17636-2-git-send-email-nab@linux-iscsi.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Cc: target-devel , lf-virt , kvm-devel , qemu-devel , Stefan Hajnoczi , Zhi Yong Wu , Anthony Liguori , "Michael S. Tsirkin" , Christoph Hellwig , Jens Axboe , Hannes Reinecke , Anthony Liguori To: "Nicholas A. Bellinger" Return-path: In-Reply-To: <1343169246-17636-2-git-send-email-nab@linux-iscsi.org> Sender: target-devel-owner@vger.kernel.org List-Id: kvm.vger.kernel.org Il 25/07/2012 00:33, Nicholas A. Bellinger ha scritto: > +int event_notifier_notify(EventNotifier *e) > +{ > + uint64_t value = 1; > + int r; > + > + assert(event_notifier_valid(e)); > + r = write(e->fd, &value, sizeof(value)); > + if (r < 0) { > + return -errno; > + } > + assert(r == sizeof(value)); > + return 0; > +} Note we now have event_notifier_set. > +#define EVENT_NOTIFIER_INITIALIZER ((EventNotifier){ .fd = -1 }) This is problematic when your event notifier is inside a struct, because it is extremely easy to forget the initializer. You have to initialize them yourself. Also, the right thing to test is not whether the notifier is initialized; it is whether the notifier is actually checked in QEMU's select() loop. So, I would prefer avoiding event_notifier_valid and just use a boolean (in virtio_queue_set_host_notifier_fd_handler and virtio_queue_set_guest_notifier_fd_handler) to track whether the notifiers are in use. Paolo