All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC][PATCH] A generic boolean
@ 2006-07-19 20:38 ricknu-0
  2006-07-19 21:04 ` Jeff Garzik
                   ` (8 more replies)
  0 siblings, 9 replies; 89+ messages in thread
From: ricknu-0 @ 2006-07-19 20:38 UTC (permalink / raw)
  To: linux-kernel

From: Richard Knutsson

A first step to a generic boolean-type. The patch just introduce the bool (in
arch. i386 only (for the moment)), false and true + fixing some duplications in
the code.
It is diffed against Linus' git-tree (060718)
Compiled with my own-, allyesconfig- and allmodconfig-config.h-file.

-Why would we want it?
-There is already some how are depending on a "boolean"-type (like NTFS). Also,
it will clearify functions who returns a boolean from one returning a value, ex:
bool it_is_ok();
char it_is_ok();
The first one is obvious what it is doing, the secound might return some sort of
status.

-Why false and not FALSE, why not "enum {...} bool"
-They are not #define(d) and shouldn't because it is a value, like 'a'. But
because it is just a value, then bool is just a variable and should be able to
handle 0 and 1 equally well.

Well, this is _my_ opinion, it may be totally wrong. If so, please tell me ;)

If this takes off, I guess I will spend quite some time at kernel-janitors
"cleaning" those who use a boolean-type.

Til' next time...
/Richard Knutsson

PS
Yes, I know about Andrew's try to unify TRUE and FALSE, did read the thread with
interest (that's from where I got to know about _Bool). But mostly (then still
on the subject) was some people did not want FALSE and TRUE instead of 0 and 1.
I look at it as: 'a' = 97, if someone like to write 97 instead of 'a', please do
if you find it easier to read. I, on the other hand, think it is easier with
'a', false/FALSE, NULL, etc.
DS

PPS
One thing about _Bool thue:
_Bool a = 12; results in a = 1

test( char * t ) { t = 12; }
main() {
_Bool a;
test( (char *) &a ); results in a = 12.
}

But I do not think of it as a problem since a "true" is just !false. Doing:
if (boolvar == true)
seems odd, after all...

... and sorry for the longwinded letter :)
DDS

Signed-off-by: Richard Knutsson <ricknu-0@student.ltu.se>

---

 drivers/block/DAC960.h            |    2 +-
 drivers/media/video/cpia2/cpia2.h |    4 ----
 drivers/net/dgrs.c                |    1 -
 drivers/scsi/BusLogic.h           |    5 +----
 include/asm-i386/types.h          |    9 +++++++++
 include/linux/stddef.h            |    2 ++
 6 files changed, 13 insertions(+), 10 deletions(-)



diff --git a/drivers/block/DAC960.h b/drivers/block/DAC960.h
index a82f37f..f9217c3 100644
--- a/drivers/block/DAC960.h
+++ b/drivers/block/DAC960.h
@@ -71,7 +71,7 @@ #define DAC690_V2_PciDmaMask	0xfffffffff
   Define a Boolean data type.
 */
 
-typedef enum { false, true } __attribute__ ((packed)) boolean;
+typedef bool boolean;
 
 
 /*
diff --git a/drivers/media/video/cpia2/cpia2.h b/drivers/media/video/cpia2/cpia2.h
index c5ecb2b..8d2dfc1 100644
--- a/drivers/media/video/cpia2/cpia2.h
+++ b/drivers/media/video/cpia2/cpia2.h
@@ -50,10 +50,6 @@ #define CPIA2_PATCH_VER	0
 /***
  * Image defines
  ***/
-#ifndef true
-#define true 1
-#define false 0
-#endif
 
 /*  Misc constants */
 #define ALLOW_CORRUPT 0		/* Causes collater to discard checksum */
diff --git a/drivers/net/dgrs.c b/drivers/net/dgrs.c
index fa4f094..4dbc23d 100644
--- a/drivers/net/dgrs.c
+++ b/drivers/net/dgrs.c
@@ -110,7 +110,6 @@ static char version[] __initdata =
  *	DGRS include files
  */
 typedef unsigned char uchar;
-typedef unsigned int bool;
 #define vol volatile
 
 #include "dgrs.h"
diff --git a/drivers/scsi/BusLogic.h b/drivers/scsi/BusLogic.h
index 9792e5a..d6d1d56 100644
--- a/drivers/scsi/BusLogic.h
+++ b/drivers/scsi/BusLogic.h
@@ -237,10 +237,7 @@ enum BusLogic_BIOS_DiskGeometryTranslati
   Define a Boolean data type.
 */
 
-typedef enum {
-	false,
-	true
-} PACKED boolean;
+typedef bool boolean;
 
 /*
   Define a 10^18 Statistics Byte Counter data type.
diff --git a/include/asm-i386/types.h b/include/asm-i386/types.h
index 4b4b295..e35709a 100644
--- a/include/asm-i386/types.h
+++ b/include/asm-i386/types.h
@@ -10,6 +10,15 @@ typedef unsigned short umode_t;
  * header files exported to user space
  */
 
+#if defined(__GNUC__) && __GNUC__ >= 3
+typedef _Bool bool;
+#else
+#warning You compiler doesn't seem to support boolean types, will set 'bool' as
an 'unsigned char'
+typedef unsigned char bool;
+#endif
+
+typedef bool u2;
+
 typedef __signed__ char __s8;
 typedef unsigned char __u8;
 
diff --git a/include/linux/stddef.h b/include/linux/stddef.h
index b3a2cad..5e5c611 100644
--- a/include/linux/stddef.h
+++ b/include/linux/stddef.h
@@ -10,6 +10,8 @@ #else
 #define NULL ((void *)0)
 #endif
 
+enum { false = 0, true = 1 } __attribute__((packed));
+
 #undef offsetof
 #ifdef __compiler_offsetof
 #define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER)


^ permalink raw reply related	[flat|nested] 89+ messages in thread
[parent not found: <6AqZX-3dU-29@gated-at.bofh.it>]

end of thread, other threads:[~2006-08-06 15:29 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-19 20:38 [RFC][PATCH] A generic boolean ricknu-0
2006-07-19 21:04 ` Jeff Garzik
2006-07-19 23:17   ` ricknu-0
2006-07-20  0:13     ` Jeff Garzik
2006-07-20  3:04       ` Vadim Lobanov
2006-07-20  3:53         ` Shorty Porty
2006-07-20  3:59           ` Dmitry Torokhov
2006-07-20  8:07           ` Jan Engelhardt
2006-08-04 14:03   ` Jes Sorensen
2006-08-04 14:42     ` Alan Cox
2006-08-04 14:35       ` Jes Sorensen
2006-08-04 15:51         ` Alan Cox
2006-08-04 15:58           ` Jes Sorensen
2006-08-04 16:00             ` Andreas Schwab
2006-08-04 16:08               ` Jes Sorensen
2006-08-04 16:16                 ` Andreas Schwab
2006-08-04 16:26                   ` Jes Sorensen
2006-08-04 16:57                     ` Andreas Schwab
2006-08-04 18:47                       ` Jes Sorensen
2006-08-04 18:51                         ` H. Peter Anvin
2006-08-04 18:58                           ` Jes Sorensen
2006-08-04 19:04                             ` H. Peter Anvin
2006-08-06  9:25                   ` Jan Engelhardt
2006-08-06  9:48                     ` Andreas Schwab
2006-08-06  9:31                 ` Jan Engelhardt
2006-08-06 15:31                   ` Jes Sorensen
2006-08-04 16:30             ` Alan Cox
2006-08-04 16:20               ` Jes Sorensen
2006-07-19 21:20 ` Alexey Dobriyan
2006-07-19 22:47   ` ricknu-0
2006-07-19 23:52     ` Peter Williams
2006-07-20  0:08       ` ricknu-0
2006-07-20  8:09   ` Jan Engelhardt
2006-07-21  1:24 ` [RFC][PATCH] A generic boolean (version 2) ricknu-0
2006-07-21  1:34   ` Jeff Garzik
2006-07-21  8:55     ` Pekka Enberg
2006-07-21 21:14       ` Jeff Garzik
2006-07-25 19:04         ` Roman Kononov
2006-07-21 22:31     ` ricknu-0
2006-07-23 19:56     ` ricknu-0
2006-07-21 14:23   ` Jan Engelhardt
2006-07-21 18:27     ` Michael Buesch
2006-07-21 21:14       ` Jeff Garzik
2006-07-21 22:11         ` ricknu-0
2006-07-22  8:56       ` Jan Engelhardt
2006-07-21 23:08 ` [RFC][PATCH] A generic boolean (version 3) ricknu-0
2006-07-21 23:27 ` ricknu-0
2006-07-22  5:40   ` Stefan Richter
2006-07-22 17:08     ` ricknu-0
2006-07-22 18:08       ` Stefan Richter
2006-07-22  8:58   ` Jan Engelhardt
2006-07-22 17:19     ` ricknu-0
2006-07-22  9:55   ` Lars Gullik Bjønnes
2006-07-23 15:43     ` ricknu-0
2006-07-23 15:49 ` [RFC][PATCH] A generic boolean (version 4) ricknu-0
2006-07-23 16:08   ` Jan Engelhardt
2006-07-23 19:36     ` ricknu-0
2006-07-23 20:26       ` Jeff Garzik
2006-07-23 20:25     ` Jeff Garzik
2006-07-23 21:17       ` Jan Engelhardt
2006-07-23 21:44         ` Jeff Garzik
2006-07-24  8:55     ` Paul Jackson
2006-07-23 16:13   ` Michael Buesch
2006-07-23 19:46     ` ricknu-0
2006-07-23 20:24   ` Jeff Garzik
2006-07-23 21:13   ` Paul Jackson
2006-07-25 23:22 ` [RFC][PATCH] A generic boolean (version 5) ricknu-0
2006-07-26  0:42   ` Paul Jackson
2006-07-26 20:28 ` [RFC][PATCH] A generic boolean (version 6) ricknu-0
2006-07-27  1:06   ` Paul Jackson
2006-07-27  2:10     ` Josef Sipek
2006-07-27  3:51       ` ricknu-0
2006-07-27  4:40         ` Josef Sipek
2006-07-27  4:00       ` Paul Jackson
2006-07-27  3:30     ` ricknu-0
2006-07-28 16:57     ` Jan Engelhardt
2006-07-27  2:48   ` Arnd Bergmann
2006-07-27  3:22     ` ricknu-0
2006-07-27  5:27     ` Nicholas Miell
2006-07-27  6:51       ` Paul Jackson
2006-07-27 19:55       ` ricknu-0
2006-07-27 20:13         ` Nicholas Miell
2006-07-28  1:29           ` ricknu-0
2006-07-28  1:56             ` Nicholas Miell
2006-07-28 12:50           ` Alan Cox
2006-07-28 20:24             ` Lars Noschinski
2006-07-28 21:31               ` Nicholas Miell
2006-07-27 19:46 ` [RFC][PATCH] A generic boolean (version 7) ricknu-0
     [not found] <6AqZX-3dU-29@gated-at.bofh.it>
     [not found] ` <6Art3-45j-35@gated-at.bofh.it>
     [not found]   ` <6G8xj-W7-13@gated-at.bofh.it>
     [not found]     ` <6G8QL-1lI-35@gated-at.bofh.it>
     [not found]       ` <6G90s-1yo-55@gated-at.bofh.it>
     [not found]         ` <6G9Wm-30t-3@gated-at.bofh.it>
     [not found]           ` <6GafR-3o1-13@gated-at.bofh.it>
     [not found]             ` <6Gapq-3OH-15@gated-at.bofh.it>
     [not found]               ` <6Gapq-3OH-13@gated-at.bofh.it>
     [not found]                 ` <6Gaz6-40T-21@gated-at.bofh.it>
     [not found]                   ` <6GaIN-4dw-25@gated-at.bofh.it>
2006-08-04 20:51                     ` [RFC][PATCH] A generic boolean Bodo Eggert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.