diff mbox series

[2/3] qemu-error: make use of {error, warn}_report_once_cond

Message ID 20180828123346.17548-3-cohuck@redhat.com
State New
Headers show
Series qemu-error: advanced report_once handling | expand

Commit Message

Cornelia Huck Aug. 28, 2018, 12:33 p.m. UTC
{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(-)

Comments

Markus Armbruster Aug. 29, 2018, 4:12 p.m. UTC | #1
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.
Cornelia Huck Aug. 29, 2018, 4:23 p.m. UTC | #2
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 mbox series

Patch

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_);              \
     })