Introduce a wrapper function to wait on condition for
the main loop mutex. This function atomically releases
the main loop mutex and causes the calling thread to
block on the condition.
Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
---
cpus.c | 5 +++++
include/qemu/main-loop.h | 8 ++++++++
2 files changed, 13 insertions(+)
diff --git a/cpus.c b/cpus.c
index e83f72b..d9379e7 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1858,6 +1858,11 @@ void qemu_mutex_unlock_iothread(void)
qemu_mutex_unlock(&qemu_global_mutex);
}
+void qemu_cond_wait_iothread(QemuCond *cond)
+{
+ qemu_cond_wait(cond, &qemu_global_mutex);
+}
+
static bool all_vcpus_paused(void)
{
CPUState *cpu;
diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
index f6ba78e..a6d20b0 100644
--- a/include/qemu/main-loop.h
+++ b/include/qemu/main-loop.h
@@ -295,6 +295,14 @@ void qemu_mutex_lock_iothread_impl(const char *file, int line);
*/
void qemu_mutex_unlock_iothread(void);
+/*
+ * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
+ *
+ * This function atomically releases the main loop mutex and causes
+ * the calling thread to block on the condition.
+ */
+void qemu_cond_wait_iothread(QemuCond *cond);
+
/* internal interfaces */
void qemu_fd_register(int fd);
On Fri, Mar 22, 2019 at 12:03:49PM +0530, Aravinda Prasad wrote:
> Introduce a wrapper function to wait on condition for
> the main loop mutex. This function atomically releases
> the main loop mutex and causes the calling thread to
> block on the condition.
>
> Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
I don't see much value to this. It's not really more expressive, and
is barely shorted than just open coding
qemu_cond_wait(cond, &qemu_global_mutex)
wherever you need it.
> ---
> cpus.c | 5 +++++
> include/qemu/main-loop.h | 8 ++++++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/cpus.c b/cpus.c
> index e83f72b..d9379e7 100644
> --- a/cpus.c
> +++ b/cpus.c
> @@ -1858,6 +1858,11 @@ void qemu_mutex_unlock_iothread(void)
> qemu_mutex_unlock(&qemu_global_mutex);
> }
>
> +void qemu_cond_wait_iothread(QemuCond *cond)
> +{
> + qemu_cond_wait(cond, &qemu_global_mutex);
> +}
> +
> static bool all_vcpus_paused(void)
> {
> CPUState *cpu;
> diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
> index f6ba78e..a6d20b0 100644
> --- a/include/qemu/main-loop.h
> +++ b/include/qemu/main-loop.h
> @@ -295,6 +295,14 @@ void qemu_mutex_lock_iothread_impl(const char *file, int line);
> */
> void qemu_mutex_unlock_iothread(void);
>
> +/*
> + * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
> + *
> + * This function atomically releases the main loop mutex and causes
> + * the calling thread to block on the condition.
> + */
> +void qemu_cond_wait_iothread(QemuCond *cond);
> +
> /* internal interfaces */
>
> void qemu_fd_register(int fd);
>
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
On Monday 25 March 2019 11:47 AM, David Gibson wrote:
> On Fri, Mar 22, 2019 at 12:03:49PM +0530, Aravinda Prasad wrote:
>> Introduce a wrapper function to wait on condition for
>> the main loop mutex. This function atomically releases
>> the main loop mutex and causes the calling thread to
>> block on the condition.
>>
>> Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com>
>
> I don't see much value to this. It's not really more expressive, and
> is barely shorted than just open coding
> qemu_cond_wait(cond, &qemu_global_mutex)
> wherever you need it.
I have done this way because qemu_global_mutex is static. Do you prefer
removing static instead of this wrapper?
Regards,
Aravinda
>
>
>> ---
>> cpus.c | 5 +++++
>> include/qemu/main-loop.h | 8 ++++++++
>> 2 files changed, 13 insertions(+)
>>
>> diff --git a/cpus.c b/cpus.c
>> index e83f72b..d9379e7 100644
>> --- a/cpus.c
>> +++ b/cpus.c
>> @@ -1858,6 +1858,11 @@ void qemu_mutex_unlock_iothread(void)
>> qemu_mutex_unlock(&qemu_global_mutex);
>> }
>>
>> +void qemu_cond_wait_iothread(QemuCond *cond)
>> +{
>> + qemu_cond_wait(cond, &qemu_global_mutex);
>> +}
>> +
>> static bool all_vcpus_paused(void)
>> {
>> CPUState *cpu;
>> diff --git a/include/qemu/main-loop.h b/include/qemu/main-loop.h
>> index f6ba78e..a6d20b0 100644
>> --- a/include/qemu/main-loop.h
>> +++ b/include/qemu/main-loop.h
>> @@ -295,6 +295,14 @@ void qemu_mutex_lock_iothread_impl(const char *file, int line);
>> */
>> void qemu_mutex_unlock_iothread(void);
>>
>> +/*
>> + * qemu_cond_wait_iothread: Wait on condition for the main loop mutex
>> + *
>> + * This function atomically releases the main loop mutex and causes
>> + * the calling thread to block on the condition.
>> + */
>> +void qemu_cond_wait_iothread(QemuCond *cond);
>> +
>> /* internal interfaces */
>>
>> void qemu_fd_register(int fd);
>>
>
--
Regards,
Aravinda
On Mon, Mar 25, 2019 at 01:06:08PM +0530, Aravinda Prasad wrote: > > > On Monday 25 March 2019 11:47 AM, David Gibson wrote: > > On Fri, Mar 22, 2019 at 12:03:49PM +0530, Aravinda Prasad wrote: > >> Introduce a wrapper function to wait on condition for > >> the main loop mutex. This function atomically releases > >> the main loop mutex and causes the calling thread to > >> block on the condition. > >> > >> Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com> > > > > I don't see much value to this. It's not really more expressive, and > > is barely shorted than just open coding > > qemu_cond_wait(cond, &qemu_global_mutex) > > wherever you need it. > > I have done this way because qemu_global_mutex is static. Do you prefer > removing static instead of this wrapper? Ah, right. I think keep the wrapper, then, but update the commit message to include this rationale for it. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On Tuesday 26 March 2019 09:50 AM, David Gibson wrote: > On Mon, Mar 25, 2019 at 01:06:08PM +0530, Aravinda Prasad wrote: >> >> >> On Monday 25 March 2019 11:47 AM, David Gibson wrote: >>> On Fri, Mar 22, 2019 at 12:03:49PM +0530, Aravinda Prasad wrote: >>>> Introduce a wrapper function to wait on condition for >>>> the main loop mutex. This function atomically releases >>>> the main loop mutex and causes the calling thread to >>>> block on the condition. >>>> >>>> Signed-off-by: Aravinda Prasad <aravinda@linux.vnet.ibm.com> >>> >>> I don't see much value to this. It's not really more expressive, and >>> is barely shorted than just open coding >>> qemu_cond_wait(cond, &qemu_global_mutex) >>> wherever you need it. >> >> I have done this way because qemu_global_mutex is static. Do you prefer >> removing static instead of this wrapper? > > Ah, right. > > I think keep the wrapper, then, but update the commit message to > include this rationale for it. Sure. > -- Regards, Aravinda
© 2016 - 2026 Red Hat, Inc.