[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC v2 09/22] monitor: create monitor dedicate iothrea
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [RFC v2 09/22] monitor: create monitor dedicate iothread |
Date: |
Thu, 12 Oct 2017 13:29:11 +0100 |
User-agent: |
Mutt/1.9.0 (2017-09-02) |
On Fri, Sep 29, 2017 at 11:38:31AM +0800, Peter Xu wrote:
> @@ -4126,10 +4150,23 @@ void monitor_init(Chardev *chr, int flags)
> qemu_mutex_unlock(&monitor_lock);
> }
>
> +static void monitor_io_thread_destroy(void)
> +{
> + iothread_destroy(mon_global.mon_io_thread);
> + mon_global.mon_io_thread = NULL;
> +}
> +
> void monitor_cleanup(void)
> {
> Monitor *mon, *next;
>
> + /*
> + * We need to explicitly stop the iothread (but not destroy it),
> + * cleanup the monitor resources, then destroy the iothread. See
> + * again on the glib bug mentioned in 2b316774f6 for a reason.
> + */
> + iothread_stop(mon_global.mon_io_thread);
> +
> qemu_mutex_lock(&monitor_lock);
> QLIST_FOREACH_SAFE(mon, &mon_list, entry, next) {
> QLIST_REMOVE(mon, entry);
> @@ -4137,6 +4174,8 @@ void monitor_cleanup(void)
> g_free(mon);
> }
> qemu_mutex_unlock(&monitor_lock);
> +
> + monitor_io_thread_destroy();
> }
Minor style comment, I would inline monitor_io_thread_destroy() into
monitor_cleanup() instead of making it a function.
monitor_io_thread_destroy() relies on iothread_stop() being called
first. Defining a function with no doc comment creates a risk that
someone else will call it in the future without first calling
iothread_stop(). It's safer to inline the code where it cannot be
misused by accident.
Also, please name things "iothread" instead of "io_thread" for
consistency.
Stefan
- Re: [Qemu-devel] [RFC v2 09/22] monitor: create monitor dedicate iothread,
Stefan Hajnoczi <=