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;
>
next prev parent 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).