From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:57006) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fvcV8-0006FS-UV for qemu-devel@nongnu.org; Fri, 31 Aug 2018 02:01:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fvcV5-0005QG-Kn for qemu-devel@nongnu.org; Fri, 31 Aug 2018 02:01:46 -0400 From: Markus Armbruster References: <20180830145902.27376-1-cohuck@redhat.com> <20180830145902.27376-3-cohuck@redhat.com> Date: Fri, 31 Aug 2018 08:01:39 +0200 In-Reply-To: <20180830145902.27376-3-cohuck@redhat.com> (Cornelia Huck's message of "Thu, 30 Aug 2018 16:59:02 +0200") Message-ID: <87tvnbvzuk.fsf@dusky.pond.sub.org> MIME-Version: 1.0 Content-Type: text/plain Subject: Re: [Qemu-devel] [PATCH v2 2/2] qemu-error: make use of {error, warn}_report_once_cond List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cornelia Huck Cc: Markus Armbruster , Halil Pasic , qemu-s390x@nongnu.org, qemu-devel@nongnu.org, Peter Xu Cornelia Huck writes: > {error,warn}_report_once() are a special case of the new functions > and can simply switch to them. > > Signed-off-by: Cornelia Huck > --- > include/qemu/error-report.h | 34 ++++++++++++++-------------------- > 1 file changed, 14 insertions(+), 20 deletions(-) > > diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h > index e415128ac4..918cb936d8 100644 > --- a/include/qemu/error-report.h > +++ b/include/qemu/error-report.h > @@ -53,32 +53,26 @@ bool warn_report_once_cond(bool *printed, const char *fmt, ...) > * Similar to error_report(), except it prints the message just once. > * Return true when it prints, false otherwise. > */ > -#define error_report_once(fmt, ...) \ > - ({ \ > - static bool print_once_; \ > - bool ret_print_once_ = !print_once_; \ > - \ > - if (!print_once_) { \ > - print_once_ = true; \ > - error_report(fmt, ##__VA_ARGS__); \ > - } \ > - unlikely(ret_print_once_); \ > +#define error_report_once(fmt, ...) \ > + ({ \ > + static bool print_once_; \ > + bool ret_print_once_ = \ > + error_report_once_cond(&print_once_, \ > + fmt, ##__VA_ARGS__); \ > + unlikely(ret_print_once_); \ > }) Do we still need @ret_print_once_? #define error_report_once(fmt, ...) \ ({ \ static bool print_once_; \ unlikely(error_report_once_cond(&print_once_, \ fmt, ##__VA_ARGS__)); \ }) Or dispense with the unlikely: #define error_report_once(fmt, ...) \ ({ \ static bool print_once_; \ error_report_once_cond(&print_once_, \ fmt, ##__VA_ARGS__); \ }) Got a preference? > > /* > * Similar to warn_report(), except it prints the message just once. > * Return true when it prints, false otherwise. > */ > -#define warn_report_once(fmt, ...) \ > - ({ \ > - static bool print_once_; \ > - bool ret_print_once_ = !print_once_; \ > - \ > - if (!print_once_) { \ > - print_once_ = true; \ > - warn_report(fmt, ##__VA_ARGS__); \ > - } \ > - unlikely(ret_print_once_); \ > +#define warn_report_once(fmt, ...) \ > + ({ \ > + static bool print_once_; \ > + bool ret_print_once_ = \ > + warn_report_once_cond(&print_once_, \ > + fmt, ##__VA_ARGS__); \ > + unlikely(ret_print_once_); \ > }) > > const char *error_get_progname(void);