All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: Peter Crosthwaite <peter.crosthwaite@xilinx.com>, qemu-devel@nongnu.org
Cc: peter.maydell@linaro.org, afaerber@suse.de, pbonzini@redhat.com
Subject: Re: [Qemu-devel] [PATCH v1 08/16] qdev: gpio: Add API for intercepting an IRQ
Date: Tue, 12 Aug 2014 11:16:57 +0200	[thread overview]
Message-ID: <53E9DB89.3080706@suse.de> (raw)
In-Reply-To: <ffa15f190ff0d11bae95042a8019ce4a1d0369aa.1407116648.git.peter.crosthwaite@xilinx.com>


On 04.08.14 03:55, Peter Crosthwaite wrote:
> To replace the old qemu_irq intercept API (which had users reaching
> into qdev private state for IRQs).
>
> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com>
> ---
>
>   hw/core/qdev.c         | 25 +++++++++++++++++++++++++
>   include/hw/qdev-core.h |  2 ++
>   2 files changed, 27 insertions(+)
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index e6b2231..4cbf773 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -412,6 +412,31 @@ void qdev_connect_gpio_out_named(DeviceState *dev, const char *name, int n,
>       g_free(propname);
>   }
>   
> +/* disconnect a GPIO ouput, returning the disconnected input (if any) */
> +
> +static qemu_irq qdev_disconnect_gpio_out_named(DeviceState *dev,
> +                                               const char *name, int n)
> +{
> +    char *propname = g_strdup_printf("%s[%d]",
> +                                     name ? name : "unnamed-gpio-out", n);
> +
> +    qemu_irq ret = (qemu_irq)object_property_get_link(OBJECT(dev), propname,
> +                                                      NULL);
> +    if (ret) {
> +        object_property_set_link(OBJECT(dev), NULL, propname, NULL);
> +    }
> +    g_free(propname);
> +    return ret;
> +}
> +
> +void qdev_intercept_gpio_out(DeviceState *dev, qemu_irq_handler handler,
> +                             const char *name, int n)
> +{
> +    qemu_irq disconnected = qdev_disconnect_gpio_out_named(dev, name, n);
> +    qemu_irq icpt = qemu_allocate_irq(handler, disconnected, n);

This means that we can't pass in any other opaque to the intercepting 
handler which sounds suboptimal to me. Can't we pass in a qemu_irq as 
parameter and a pointer to a field where we can store the disconnected 
qemu_irq?

Then the caller can allocate its own qemu_irq with all the opaque data 
it wants and just have the intercept function overwrite a single field 
in the passed down opaque.

Or you just return the disconnected qemu_irq. Then the caller can do 
whatever it likes with it, such as set icpt->opaque to it.


Alex

  reply	other threads:[~2014-08-12  9:17 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-04  1:51 [Qemu-devel] [PATCH v1 00/16] GPIO/IRQ QOMification: Phase 2 - Getting rid of SYSBUS IRQs Peter Crosthwaite
2014-08-04  1:52 ` [Qemu-devel] [PATCH v1 01/16] qdev: gpio: Don't allow name share between I and O Peter Crosthwaite
2014-08-04  1:52 ` [Qemu-devel] [PATCH v1 02/16] qdev: gpio: Register GPIO inputs as child objects Peter Crosthwaite
2014-08-04  1:53 ` [Qemu-devel] [PATCH v1 03/16] qdev: gpio: Register GPIO outputs as QOM links Peter Crosthwaite
2014-08-14  7:30   ` Peter Crosthwaite
2014-08-04  1:53 ` [Qemu-devel] [PATCH v1 04/16] qmp: qstring: Handle NULL strings Peter Crosthwaite
2014-08-04  1:54 ` [Qemu-devel] [PATCH v1 05/16] qom: Allow clearing of a Link property Peter Crosthwaite
2014-08-04  1:54 ` [Qemu-devel] [PATCH v1 06/16] qom: Demote already-has-a-parent to a regular error Peter Crosthwaite
2014-08-04  1:55 ` [Qemu-devel] [PATCH v1 07/16] qdev: gpio: Re-impement qdev_connect_gpio QOM style Peter Crosthwaite
2014-08-04  1:55 ` [Qemu-devel] [PATCH v1 08/16] qdev: gpio: Add API for intercepting an IRQ Peter Crosthwaite
2014-08-12  9:16   ` Alexander Graf [this message]
2014-08-12 10:40     ` Peter Crosthwaite
2014-08-04  1:56 ` [Qemu-devel] [PATCH v1 09/16] qtest/irq: Rework IRQ interception Peter Crosthwaite
2014-08-04  1:56 ` [Qemu-devel] [PATCH v1 10/16] irq: Remove qemu_irq_intercept_out Peter Crosthwaite
2014-08-04  1:57 ` [Qemu-devel] [PATCH v1 11/16] qdev: gpio: delete NamedGPIOList::out Peter Crosthwaite
2014-08-04  1:58 ` [Qemu-devel] [PATCH v1 12/16] qdev: gpio: Remove qdev_init_gpio_out x1 restriction Peter Crosthwaite
2014-08-12  9:19   ` Alexander Graf
2014-08-12 10:35     ` Peter Crosthwaite
2014-08-12 10:49       ` Alexander Graf
2014-08-04  1:58 ` [Qemu-devel] [PATCH v1 13/16] qdev: gpio: Define qdev_pass_gpios() Peter Crosthwaite
2014-08-12  9:24   ` Alexander Graf
2014-08-12 10:48     ` Peter Crosthwaite
2014-08-12 10:55       ` Alexander Graf
2014-08-15  5:11         ` Peter Crosthwaite
2014-08-15  7:31           ` Alexander Graf
2014-08-04  1:59 ` [Qemu-devel] [PATCH v1 14/16] ssi: xilinx_spi: Initialise CS GPIOs as NULL Peter Crosthwaite
2014-08-04  1:59 ` [Qemu-devel] [PATCH v1 15/16] ppc: convert g_new(qemu_irq usages to g_new0 Peter Crosthwaite
2014-08-12  9:26   ` Alexander Graf
2014-08-12 10:49     ` Peter Crosthwaite
2014-08-15  5:07     ` Peter Crosthwaite
2014-08-04  2:00 ` [Qemu-devel] [PATCH v1 16/16] sysbus: Use TYPE_DEVICE GPIO functionality Peter Crosthwaite
2014-08-12  7:51 ` [Qemu-devel] [PATCH v1 00/16] GPIO/IRQ QOMification: Phase 2 - Getting rid of SYSBUS IRQs Peter Crosthwaite
2014-08-12  9:29 ` Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53E9DB89.3080706@suse.de \
    --to=agraf@suse.de \
    --cc=afaerber@suse.de \
    --cc=pbonzini@redhat.com \
    --cc=peter.crosthwaite@xilinx.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.