qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Pavel Dovgaluk" <Pavel.Dovgaluk@ispras.ru>
To: qemu-devel@nongnu.org
Cc: Stefan.Weil@weilnetz.de
Subject: RE: [Qemu-devel] [PATCH] Correct win32 timers deleting v.3
Date: Wed, 2 Feb 2011 14:59:51 +0300	[thread overview]
Message-ID: <000001cbc2d0$b2c656c0$18530440$@Dovgaluk@ispras.ru> (raw)
In-Reply-To: <000401cbbd2f$df373180$9da59480$@Dovgaluk@ispras.ru>

Hello.

 Anybody interested in this patch?

Pavel Dovgaluk

> -----Original Message-----
> From: qemu-devel-bounces+pavel.dovgaluk=ispras.ru@nongnu.org [mailto:qemu-
> devel-bounces+pavel.dovgaluk=ispras.ru@nongnu.org] On Behalf Of Pavel
> Dovgaluk
> Sent: Wednesday, January 26, 2011 11:06 AM
> To: qemu-devel@nongnu.org
> Subject: [Qemu-devel] [PATCH] Correct win32 timers deleting v.3
> 
> This patch fixes resource leaks caused by quitting qemu with exit()
> function on
> win32 host.
> Timer object should be freed not only at the end of the main function, but
> by
> every of the application exits.
> 
> v.3: Fixed all the issues found in previous messages with patch.
> 
> Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@gmail.com>
> ---
>  qemu-timer.c |   16 +++++++++++++---
>  vl.c         |    1 -
>  2 files changed, 13 insertions(+), 4 deletions(-)
> 
> diff --git a/qemu-timer.c b/qemu-timer.c
> index 95814af..86d77a6 100644
> --- a/qemu-timer.c
> +++ b/qemu-timer.c
> @@ -972,7 +972,10 @@ static int win32_start_timer(struct qemu_alarm_timer
> *t)
>      timeGetDevCaps(&tc, sizeof(tc));
> 
>      data->period = tc.wPeriodMin;
> -    timeBeginPeriod(data->period);
> +    if (timeBeginPeriod(data->period) != TIMERR_NOERROR) {
> +        fprintf(stderr, "Failed to initialize win32 alarm timer\n");
> +        return -1;
> +    }
> 
>      flags = TIME_CALLBACK_FUNCTION;
>      if (alarm_has_dynticks(t))
> @@ -990,6 +993,7 @@ static int win32_start_timer(struct qemu_alarm_timer
> *t)
>          fprintf(stderr, "Failed to initialize win32 alarm timer: %ld\n",
>                  GetLastError());
>          timeEndPeriod(data->period);
> +        data->period = 0;
>          return -1;
>      }
> 
> @@ -1000,8 +1004,12 @@ static void win32_stop_timer(struct qemu_alarm_timer
> *t)
>  {
>      struct qemu_alarm_win32 *data = t->priv;
> 
> -    timeKillEvent(data->timerId);
> -    timeEndPeriod(data->period);
> +    if (data->timerId) {
> +        timeKillEvent(data->timerId);
> +    }
> +    if (data->period) {
> +        timeEndPeriod(data->period);
> +    }
>  }
> 
>  static void win32_rearm_timer(struct qemu_alarm_timer *t)
> @@ -1027,6 +1035,7 @@ static void win32_rearm_timer(struct qemu_alarm_timer
> *t)
>                  GetLastError());
> 
>          timeEndPeriod(data->period);
> +        data->period = 0;
>          exit(1);
>      }
>  }
> @@ -1061,6 +1070,7 @@ int init_timer_alarm(void)
>      t->pending = 1;
>      alarm_timer = t;
>      qemu_add_vm_change_state_handler(alarm_timer_on_change_state_rearm,
> t);
> +    atexit(quit_timers);
> 
>      return 0;
> 
> diff --git a/vl.c b/vl.c
> index 0292184..c4b25b0 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -3118,7 +3118,6 @@ int main(int argc, char **argv, char **envp)
>      os_setup_post();
> 
>      main_loop();
> -    quit_timers();
>      net_cleanup();
> 
>      return 0;
> 

  reply	other threads:[~2011-02-02 14:30 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-26  8:06 [Qemu-devel] [PATCH] Correct win32 timers deleting v.3 Pavel Dovgaluk
2011-02-02 11:59 ` Pavel Dovgaluk [this message]
     [not found] ` <20128.8864635446$1296660564@news.gmane.org>
2011-02-10  9:49   ` [Qemu-devel] " Paolo Bonzini

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='000001cbc2d0$b2c656c0$18530440$@Dovgaluk@ispras.ru' \
    --to=pavel.dovgaluk@ispras.ru \
    --cc=Stefan.Weil@weilnetz.de \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).