Message ID | 20200102075111.25308-2-ganeshgr@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target-ppc/spapr: Add FWNMI support in QEMU for PowerKM guests | expand |
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. > 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);
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);
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);