On 1/5/20 8:47 PM, Greg Kurz wrote:
> On Thu, 2 Jan 2020 13:21:05 +0530
> Ganesh Goudar <ganeshgr@linux.ibm.com> wrote:
>
>> From: Aravinda Prasad <arawinda.p@gmail.com>
>>
>> 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. This wrapper is required because
>> qemu_global_mutex is a static variable.
>>
>> Signed-off-by: Aravinda Prasad <arawinda.p@gmail.com>
>> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
>> Reviewed-by: Greg Kurz <groug@kaod.org>
>> ---
> This should have your Signed-off-by: tag as well.
Sure, thanks
>
>> cpus.c | 5 +++++
>> include/qemu/main-loop.h | 8 ++++++++
>> 2 files changed, 13 insertions(+)
>>
>> diff --git a/cpus.c b/cpus.c
>> index b472378b70..79388d2b0f 100644
>> --- a/cpus.c
>> +++ b/cpus.c
>> @@ -1835,6 +1835,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 f6ba78ea73..a6d20b0719 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);