All of lore.kernel.org
 help / color / mirror / Atom feed
From: ShaoHe Feng <shaohef@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] qmp: report TRAY_STATE_CHANGED events
Date: Tue, 01 Nov 2011 13:03:08 +0800	[thread overview]
Message-ID: <4EAF7D8C.8050601@linux.vnet.ibm.com> (raw)
In-Reply-To: <1319560018-25788-1-git-send-email-pbonzini@redhat.com>

test-by: ShaoHe Feng<shaohef@linux.vnet.ibm.com>

It seems this patch can not work well.

there is my test process.

I startup a guest by the follow option:  -drive 
file=/home/fsh/image/OCDC-natty-Test-Drive-20110823_010339.iso,if=ide,index=1,media=cdrom

after the guest startups, then I right click mouse in the UI of the 
guest,  and select the Eject from the menu.
there comes an event in the qmp-monitor.
{"timestamp": {"seconds": 1320118137, "microseconds": 420150}, "event": 
"TRAY_STATE_CHANGED", "data": {"device": "ide0-cd1", "state": "open"}}

however, if I change the cdrom by this command:
{ "execute": "change","arguments": { "device": "ide0-cd1", "target": 
"/home/fsh/image/OCDC-natty-Test-Drive-20110823_010339.iso" } }
there is no any event.

and { "execute": "eject", "arguments": { "device": "ide0-cd1" } },
there is also no any event.

only I right click mouse in the UI of the guest,  qmp-monitor can 
receive an TRAY_STATE_CHANGED event.

, Paolo Bonzini wrote:
> Signed-off-by: Paolo Bonzini<pbonzini@redhat.com>
> ---
>   QMP/qmp-events.txt |   20 ++++++++++++++++++++
>   block.c            |    9 +++++++++
>   monitor.c          |    3 +++
>   monitor.h          |    1 +
>   4 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/QMP/qmp-events.txt b/QMP/qmp-events.txt
> index 0ce5d4e..242c7a5 100644
> --- a/QMP/qmp-events.txt
> +++ b/QMP/qmp-events.txt
> @@ -264,3 +264,23 @@ Example:
>
>   Note: If action is "reset", "shutdown", or "pause" the WATCHDOG event is
>   followed respectively by the RESET, SHUTDOWN, or STOP events.
> +
> +
> +TRAY_STATE_CHANGED
> +------------------
> +
> +Emitted when the state of a CD-ROM tray changes.
> +
> +Data:
> +
> +- "device": device name (json-string)
> +- "state": state of the tray, one of the following (json-string)
> +   "open": tray is open
> +   "closed": tray is closed
> +
> +Example:
> +
> +{ "event": "TRAY_STATE_CHANGED",
> +    "data": { "device": "ide0-cd0",
> +              "state": "open" },
> +    "timestamp": { "seconds": 1265044230, "microseconds": 450486 } }
> diff --git a/block.c b/block.c
> index 9873b57..7b0aa62 100644
> --- a/block.c
> +++ b/block.c
> @@ -2968,10 +2968,19 @@ int bdrv_media_changed(BlockDriverState *bs)
>   void bdrv_eject(BlockDriverState *bs, int eject_flag)
>   {
>       BlockDriver *drv = bs->drv;
> +    QObject *data;
>
>       if (drv&&  drv->bdrv_eject) {
>           drv->bdrv_eject(bs, eject_flag);
>       }
> +
> +    if (*bs->device_name) {
> +        data = qobject_from_jsonf("{ 'device': %s, 'state': %s }",
> +                                  bs->device_name,
> +                                  eject_flag ? "open" : "closed");
> +        monitor_protocol_event(QEVENT_TRAY_STATE_CHANGED, data);
> +        qobject_decref(data);
> +    }
>   }
>
>   /**
> diff --git a/monitor.c b/monitor.c
> index ffda0fe..516a789 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -482,6 +482,9 @@ void monitor_protocol_event(MonitorEvent event, QObject *data)
>           case QEVENT_SPICE_DISCONNECTED:
>               event_name = "SPICE_DISCONNECTED";
>               break;
> +        case QEVENT_TRAY_STATE_CHANGED:
> +            event_name = "TRAY_STATE_CHANGED";
> +            break;
>           default:
>               abort();
>               break;
> diff --git a/monitor.h b/monitor.h
> index 4f2d328..b8f4bf7 100644
> --- a/monitor.h
> +++ b/monitor.h
> @@ -35,6 +35,7 @@ typedef enum MonitorEvent {
>       QEVENT_SPICE_CONNECTED,
>       QEVENT_SPICE_INITIALIZED,
>       QEVENT_SPICE_DISCONNECTED,
> +    QEVENT_TRAY_STATE_CHANGED,
>       QEVENT_MAX,
>   } MonitorEvent;
>

  parent reply	other threads:[~2011-11-01  5:04 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-25 16:26 [Qemu-devel] [PATCH] qmp: report TRAY_STATE_CHANGED events Paolo Bonzini
2011-10-25 18:44 ` Luiz Capitulino
2011-11-01  5:03 ` ShaoHe Feng [this message]
2011-11-04 10:53   ` Paolo Bonzini
2011-11-04 17:25     ` Luiz Capitulino

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=4EAF7D8C.8050601@linux.vnet.ibm.com \
    --to=shaohef@linux.vnet.ibm.com \
    --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.