Patchwork [U-Boot,v2] Introduce a global bool type

login
register
mail settings
Submitter York Sun
Date Jan. 7, 2013, 11:55 p.m.
Message ID <1357602948-16848-1-git-send-email-yorksun@freescale.com>
Download mbox | patch
Permalink /patch/210272/
State Changes Requested
Delegated to: Wolfgang Denk
Headers show

Comments

York Sun - Jan. 7, 2013, 11:55 p.m.
'bool' is defined in random places. This patch consolidates them into a
single typedef, using _Bool introduced in C99.

Signed-off-by: York Sun <yorksun@freescale.com>
---
Change since v1:
 Move 'false' and 'true' to the common header file.

Need help from other arch maintainers to test it. I could only test powerpc.

 arch/blackfin/include/asm/posix_types.h |    3 ---
 board/Marvell/include/core.h            |    5 -----
 board/bf533-stamp/video.h               |    3 ---
 drivers/bios_emulator/atibios.c         |    4 ----
 drivers/mtd/nand/mxc_nand.c             |    2 --
 drivers/net/ne2000_base.h               |    4 ----
 drivers/usb/musb-new/linux-compat.h     |    2 --
 include/galileo/core.h                  |    5 -----
 include/linux/types.h                   |    4 ++++
 include/xyzModem.h                      |    8 --------
 10 files changed, 4 insertions(+), 36 deletions(-)
Wolfgang Denk - Jan. 8, 2013, 6:29 a.m.
Dear York Sun,

In message <1357602948-16848-1-git-send-email-yorksun@freescale.com> you wrote:
> 'bool' is defined in random places. This patch consolidates them into a
> single typedef, using _Bool introduced in C99.
> 
> Signed-off-by: York Sun <yorksun@freescale.com>
> ---
> Change since v1:
>  Move 'false' and 'true' to the common header file.

Please see Måns Rullgård's comment about using stdbool.h instead.

Then please make sure that a sufficient number of tool chains as well
as configurations using USE_PRIVATE_LIBGCC continue to work, i. e. in
a first step verify that these are still compile-clean.

Thanks.

Best regards,

Wolfgang Denk
Allen Martin - Jan. 19, 2013, 4:47 a.m.
On Mon, Jan 07, 2013 at 03:55:48PM -0800, York Sun wrote:
> 'bool' is defined in random places. This patch consolidates them into a
> single typedef, using _Bool introduced in C99.
> 
> Signed-off-by: York Sun <yorksun@freescale.com>
> ---
> Change since v1:
>  Move 'false' and 'true' to the common header file.
> 
> Need help from other arch maintainers to test it. I could only test powerpc.
> 

Thank you for taking this on, it's definately in need of cleanup. 

There are also many duplicate definitions of the upper case variants
(BOOL/TRUE/FALSE).  Those should get fixed too.


> +typedef _Bool bool;
> +#define false 0
> +#define true 1
> +

Linux defines true/false as an enum type in stddef.h, since u-boot
already has a copy of this Linux header, shouldn't it go in there?

-Allen
Allen Martin - Jan. 19, 2013, 4:58 a.m.
On Mon, Jan 07, 2013 at 10:29:28PM -0800, Wolfgang Denk wrote:
> Dear York Sun,
> 
> In message <1357602948-16848-1-git-send-email-yorksun@freescale.com> you wrote:
> > 'bool' is defined in random places. This patch consolidates them into a
> > single typedef, using _Bool introduced in C99.
> > 
> > Signed-off-by: York Sun <yorksun@freescale.com>
> > ---
> > Change since v1:
> >  Move 'false' and 'true' to the common header file.
> 
> Please see Måns Rullgård's comment about using stdbool.h instead.
> 

Isn't stdbool.h more for backward compatability for user space
programs, so only newer C99 aware programs can opt-in to the new data
type?  Linux for example doesn't use stdbool.h, it puts the definition
of "bool" in types.h, and true/false in stddef.h.  Since, like Linux,
u-boot is a single codebase, all the data types can go in a common
place and not have to worry about breaking old programs with new
types. 


> Then please make sure that a sufficient number of tool chains as well
> as configurations using USE_PRIVATE_LIBGCC continue to work, i. e. in
> a first step verify that these are still compile-clean.

If you cc me on newer versions of the patch I can help verify on
tegra, which uses USE_PRIVATE_LIBGCC.


-Allen

Patch

diff --git a/arch/blackfin/include/asm/posix_types.h b/arch/blackfin/include/asm/posix_types.h
index 000ffe5..1f28b36 100644
--- a/arch/blackfin/include/asm/posix_types.h
+++ b/arch/blackfin/include/asm/posix_types.h
@@ -61,9 +61,6 @@  typedef unsigned int __kernel_gid32_t;
 typedef unsigned short __kernel_old_uid_t;
 typedef unsigned short __kernel_old_gid_t;
 
-#define BOOL_WAS_DEFINED
-typedef enum { false = 0, true = 1 } bool;
-
 #ifdef __GNUC__
 typedef long long __kernel_loff_t;
 #endif
diff --git a/board/Marvell/include/core.h b/board/Marvell/include/core.h
index c413439..3119d0a 100644
--- a/board/Marvell/include/core.h
+++ b/board/Marvell/include/core.h
@@ -91,11 +91,6 @@  extern unsigned int INTERNAL_REG_BASE_ADDR;
 #define _1G		0x40000000
 #define _2G		0x80000000
 
-#ifndef	BOOL_WAS_DEFINED
-#define BOOL_WAS_DEFINED
-typedef enum _bool{false,true} bool;
-#endif
-
 /* Little to Big endian conversion macros */
 
 #ifdef LE /* Little Endian */
diff --git a/board/bf533-stamp/video.h b/board/bf533-stamp/video.h
index 80837e2..949c3d8 100644
--- a/board/bf533-stamp/video.h
+++ b/board/bf533-stamp/video.h
@@ -9,9 +9,6 @@ 
 #define YELLOW  (0xD292D210)	/* yellow pixel pattern  */
 #define WHITE   (0xFE80FE80)	/* white pixel pattern   */
 
-#define true	1
-#define false	0
-
 typedef struct {
 	unsigned int sav;
 	unsigned int eav;
diff --git a/drivers/bios_emulator/atibios.c b/drivers/bios_emulator/atibios.c
index dbb5e8c..e373560 100644
--- a/drivers/bios_emulator/atibios.c
+++ b/drivers/bios_emulator/atibios.c
@@ -52,10 +52,6 @@ 
 /* Length of the BIOS image */
 #define MAX_BIOSLEN	    (128 * 1024L)
 
-/* Define some useful types and macros */
-#define true		    1
-#define false		    0
-
 /* Place to save PCI BAR's that we change and later restore */
 static u32 saveROMBaseAddress;
 static u32 saveBaseAddress10;
diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c
index d0ded48..04836c0 100644
--- a/drivers/mtd/nand/mxc_nand.c
+++ b/drivers/mtd/nand/mxc_nand.c
@@ -29,8 +29,6 @@ 
 
 #define DRIVER_NAME "mxc_nand"
 
-typedef enum {false, true} bool;
-
 struct mxc_nand_host {
 	struct mtd_info			mtd;
 	struct nand_chip		*nand;
diff --git a/drivers/net/ne2000_base.h b/drivers/net/ne2000_base.h
index 5446de4..eee0956 100644
--- a/drivers/net/ne2000_base.h
+++ b/drivers/net/ne2000_base.h
@@ -79,10 +79,6 @@  are GPL, so this is, of course, GPL.
 #ifndef __NE2000_BASE_H__
 #define __NE2000_BASE_H__
 
-#define bool int
-#define false 0
-#define true 1
-
 /*
  * Debugging details
  *
diff --git a/drivers/usb/musb-new/linux-compat.h b/drivers/usb/musb-new/linux-compat.h
index 5c126ef..72c8c2b 100644
--- a/drivers/usb/musb-new/linux-compat.h
+++ b/drivers/usb/musb-new/linux-compat.h
@@ -12,8 +12,6 @@ 
 #define __iomem
 #define __deprecated
 
-typedef enum { false = 0, true = 1 } bool;
-
 struct unused {};
 typedef struct unused unused_t;
 
diff --git a/include/galileo/core.h b/include/galileo/core.h
index c277509..faf4962 100644
--- a/include/galileo/core.h
+++ b/include/galileo/core.h
@@ -110,11 +110,6 @@  extern unsigned int INTERNAL_REG_BASE_ADDR;
 #define _1G             0x40000000
 #define _2G             0x80000000
 
-#ifndef	BOOL_WAS_DEFINED
-#define BOOL_WAS_DEFINED
-typedef enum _bool{false,true} bool;
-#endif
-
 /* Little to Big endian conversion macros */
 
 #ifdef LE /* Little Endian */
diff --git a/include/linux/types.h b/include/linux/types.h
index 1b0b4a4..925ece7 100644
--- a/include/linux/types.h
+++ b/include/linux/types.h
@@ -113,6 +113,10 @@  typedef		__u64		u_int64_t;
 typedef		__s64		int64_t;
 #endif
 
+typedef _Bool bool;
+#define false 0
+#define true 1
+
 #endif /* __KERNEL_STRICT_NAMES */
 
 /*
diff --git a/include/xyzModem.h b/include/xyzModem.h
index f437bbd..a3ea768 100644
--- a/include/xyzModem.h
+++ b/include/xyzModem.h
@@ -97,14 +97,6 @@  typedef struct {
 #endif
 } connection_info_t;
 
-#ifndef	BOOL_WAS_DEFINED
-#define BOOL_WAS_DEFINED
-typedef unsigned int bool;
-#endif
-
-#define false 0
-#define true 1
-
 #endif