Message ID | 20180828123346.17548-3-cohuck@redhat.com |
---|---|
State | New |
Headers | show |
Series | qemu-error: advanced report_once handling | expand |
Cornelia Huck <cohuck@redhat.com> writes: > {error,warn}_report_once() are a special case of the new functions > and can simply switch to them. > > Signed-off-by: Cornelia Huck <cohuck@redhat.com> > --- > include/qemu/error-report.h | 10 ++-------- > 1 file changed, 2 insertions(+), 8 deletions(-) > > diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h > index d2a6515e68..4e4c0e757c 100644 > --- a/include/qemu/error-report.h > +++ b/include/qemu/error-report.h > @@ -58,10 +58,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) > static bool print_once_; \ > bool ret_print_once_ = !print_once_; \ > \ > - if (!print_once_) { \ > - print_once_ = true; \ > - error_report(fmt, ##__VA_ARGS__); \ > - } \ > + error_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ > unlikely(ret_print_once_); \ > }) > > @@ -74,10 +71,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) > static bool print_once_; \ > bool ret_print_once_ = !print_once_; \ > \ > - if (!print_once_) { \ > - print_once_ = true; \ > - warn_report(fmt, ##__VA_ARGS__); \ > - } \ > + warn_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ > unlikely(ret_print_once_); \ > }) Hmm. The macros return a value, while the functions do not. Doesn't this contradict the commit message's claim the macros are ä special case of the new functions"? If you make the functions return the value, too, the macros become simpler. Moving complexity from macros to functions feels like a good deal, even when it's just a little bit of complexity like here.
On Wed, 29 Aug 2018 18:12:32 +0200 Markus Armbruster <armbru@redhat.com> wrote: > Cornelia Huck <cohuck@redhat.com> writes: > > > {error,warn}_report_once() are a special case of the new functions > > and can simply switch to them. > > > > Signed-off-by: Cornelia Huck <cohuck@redhat.com> > > --- > > include/qemu/error-report.h | 10 ++-------- > > 1 file changed, 2 insertions(+), 8 deletions(-) > > > > diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h > > index d2a6515e68..4e4c0e757c 100644 > > --- a/include/qemu/error-report.h > > +++ b/include/qemu/error-report.h > > @@ -58,10 +58,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) > > static bool print_once_; \ > > bool ret_print_once_ = !print_once_; \ > > \ > > - if (!print_once_) { \ > > - print_once_ = true; \ > > - error_report(fmt, ##__VA_ARGS__); \ > > - } \ > > + error_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ > > unlikely(ret_print_once_); \ > > }) > > > > @@ -74,10 +71,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) > > static bool print_once_; \ > > bool ret_print_once_ = !print_once_; \ > > \ > > - if (!print_once_) { \ > > - print_once_ = true; \ > > - warn_report(fmt, ##__VA_ARGS__); \ > > - } \ > > + warn_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ > > unlikely(ret_print_once_); \ > > }) > > Hmm. The macros return a value, while the functions do not. Doesn't > this contradict the commit message's claim the macros are ä special case > of the new functions"? > > If you make the functions return the value, too, the macros become > simpler. Moving complexity from macros to functions feels like a good > deal, even when it's just a little bit of complexity like here. Reducing macro complexity is a good idea, agreed. Thanks for looking!
diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h index d2a6515e68..4e4c0e757c 100644 --- a/include/qemu/error-report.h +++ b/include/qemu/error-report.h @@ -58,10 +58,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) static bool print_once_; \ bool ret_print_once_ = !print_once_; \ \ - if (!print_once_) { \ - print_once_ = true; \ - error_report(fmt, ##__VA_ARGS__); \ - } \ + error_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ unlikely(ret_print_once_); \ }) @@ -74,10 +71,7 @@ void warn_report_once_cond(bool *printed, const char *fmt, ...) static bool print_once_; \ bool ret_print_once_ = !print_once_; \ \ - if (!print_once_) { \ - print_once_ = true; \ - warn_report(fmt, ##__VA_ARGS__); \ - } \ + warn_report_once_cond(&print_once_, fmt, ##__VA_ARGS__); \ unlikely(ret_print_once_); \ })
{error,warn}_report_once() are a special case of the new functions and can simply switch to them. Signed-off-by: Cornelia Huck <cohuck@redhat.com> --- include/qemu/error-report.h | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-)