[coreboot-gerrit] New patch to review for coreboot: src/include: Add do { } while(0) around macros

Lee Leahy (leroy.p.leahy@intel.com) gerrit at coreboot.org
Wed Mar 8 01:21:34 CET 2017


Lee Leahy (leroy.p.leahy at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/18644

-gerrit

commit d017c4d58fc86c7b37ab4b5c8a08ce307bf06e89
Author: Lee Leahy <leroy.p.leahy at intel.com>
Date:   Tue Mar 7 12:01:02 2017 -0800

    src/include: Add do { } while(0) around macros
    
    Fix the following error detected by checkpatch.py:
    
    ERROR: Macros with multiple statements should be enclosed in a do - while loop
    
    False positives are generated when assembly code is used in a macro.  An
    example is:
    
    ERROR: Macros with multiple statements should be enclosed in a do - while loop
    +#define post_code(value)        \
    +	movb    $value, %al;    \
    +	outb    %al, $CONFIG_POST_IO_PORT
    
    False positives are also generated for linker script include files.  An
    example is:
    
    ERROR: Macros with multiple statements should be enclosed in a do - while loop
    +#define SET_COUNTER(name, addr) \
    +	_ = ASSERT(. <= addr, STR(name overlaps the previous region!));
    \
    +	. = addr;
    
    False positives are also generated for attribute macros.  An example is:
    
    ERROR: Macros with multiple statements should be enclosed in a do - while loop
    +#define DISABLE_TRACE_ON_FUNCTION  __attribute__
    ((no_instrument_function));
    
    TEST=Build and run on Galileo Gen2
    
    Change-Id: I88abf96579e906f6962d558a3d09907f07d00b1c
    Signed-off-by: Lee Leahy <Leroy.P.Leahy at intel.com>
---
 src/include/bootstate.h | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/include/bootstate.h b/src/include/bootstate.h
index 481a8bc..8f2f8b8 100644
--- a/src/include/bootstate.h
+++ b/src/include/bootstate.h
@@ -124,8 +124,10 @@ struct boot_state_callback {
 #if IS_ENABLED(CONFIG_DEBUG_BOOT_STATE)
 #define BOOT_STATE_CALLBACK_LOC __FILE__ ":" STRINGIFY(__LINE__)
 #define BOOT_STATE_CALLBACK_INIT_DEBUG .location = BOOT_STATE_CALLBACK_LOC,
-#define INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_) \
-	bscb_->location = BOOT_STATE_CALLBACK_LOC;
+#define INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_) 			\
+	do {							\
+		bscb_->location = BOOT_STATE_CALLBACK_LOC;	\
+	} while (0)
 #else
 #define BOOT_STATE_CALLBACK_INIT_DEBUG
 #define INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_)
@@ -144,9 +146,11 @@ struct boot_state_callback {
 
 /* Initialize an allocated boot_state_callback. */
 #define INIT_BOOT_STATE_CALLBACK(bscb_, func_, arg_)	\
-	INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_)		\
-	bscb_->callback = func_;			\
-	bscb_->arg = arg_
+	do {						\
+		INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_)	\
+		bscb_->callback = func_;		\
+		bscb_->arg = arg_			\
+	} while(0)
 
 /* The following 2 functions schedule a callback to be called on entry/exit
  * to a given state. Note that there are no ordering guarantees between the



More information about the coreboot-gerrit mailing list