[libvirt] [PATCH 1/7] Add @seconds vaiable to qemuAgentSend()
Martin Kletzander
mkletzan at redhat.com
Thu Aug 16 12:58:34 UTC 2012
On 08/15/2012 03:36 AM, MATSUDA Daiki wrote:
>
> Add @seconds variable to qemuAgentSend().
> When @tiemout is true, @seconds controls how long to wait for a response
> (if @seconds is VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT, default to
> QEMU_AGENT_WAIT_TIME).
> If @timeout is false, @seconds is ignored.
>
>
> Signed-off-by: MATSUDA Daiki <matsudadik at intellilink.co.jp>
> ---
> include/libvirt/libvirt-qemu.h | 6 ++++++
> src/qemu/qemu_agent.c | 30 ++++++++++++++++++++----------
> 2 files changed, 26 insertions(+), 10 deletions(-)
>
> diff --git a/include/libvirt/libvirt-qemu.h b/include/libvirt/libvirt-qemu.h
> index a37f897..013ed5a 100644
> --- a/include/libvirt/libvirt-qemu.h
> +++ b/include/libvirt/libvirt-qemu.h
> @@ -44,6 +44,12 @@ virDomainPtr virDomainQemuAttach(virConnectPtr domain,
> unsigned int pid_value,
> unsigned int flags);
>
> +typedef enum {
> + VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK = -2,
Correct me if I'm wrong, but isn't this the same as setting timeout to
false?
> + VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT = -1,
> + VIR_DOMAIN_QEMU_AGENT_COMMAND_NOWAIT = 0,
> +} virDomainQemuAgentCommandTimeoutValues;
> +
> # ifdef __cplusplus
> }
> # endif
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index 15af758..26c2726 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -837,6 +837,8 @@ void qemuAgentClose(qemuAgentPtr mon)
> * @mon: Monitor
> * @msg: Message
> * @timeout: use timeout?
> + * @seconds: timeout seconds. if VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT and
> + * @timeout is true, use default value.
If my previous assumption is correct, than the timeout parameter can be
completely thrown away.
> *
> * Send @msg to agent @mon.
> * Wait max QEMU_AGENT_WAIT_TIME for agent
> @@ -848,7 +850,8 @@ void qemuAgentClose(qemuAgentPtr mon)
> */
> static int qemuAgentSend(qemuAgentPtr mon,
> qemuAgentMessagePtr msg,
> - bool timeout)
> + bool timeout,
> + int seconds)
> {
> int ret = -1;
> unsigned long long now, then = 0;
> @@ -864,7 +867,8 @@ static int qemuAgentSend(qemuAgentPtr mon,
> if (timeout) {
> if (virTimeMillisNow(&now) < 0)
> return -1;
> - then = now + QEMU_AGENT_WAIT_TIME;
> + then = now + (seconds == VIR_DOMAIN_QEMU_AGENT_COMMAND_DEFAULT ?
> + QEMU_AGENT_WAIT_TIME : seconds * 1000ull);
> }
Also if seconds == VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK, then this causes
'then' to be smaller than now. I'm not sure what that would do with
pthread_cond_timedwait, but that's definitely not wanted behavior.
Martin
More information about the libvir-list
mailing list