Message ID | 155323642914.18748.10882970739268674736.stgit@aravinda (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | target-ppc/spapr: Add FWNMI support in QEMU for PowerKVM guests | expand |
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); >
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); >> >
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.
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. >
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);
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(+)