Use 'bool' type for 'bool' module parameters, if supported.
authorIan Abbott <abbotti@mev.co.uk>
Mon, 20 Feb 2012 17:41:50 +0000 (17:41 +0000)
committerIan Abbott <abbotti@mev.co.uk>
Mon, 20 Feb 2012 17:41:50 +0000 (17:41 +0000)
In the compatibility header for linux/moduleparam.h, define a
type COMEDI_MODULE_PARAM_BOOL_T to be used for 'bool' module parameters.

For kernel versions before 2.6.31, make it an 'int'.

For kernel versions 2.6.31 onwards, make it a 'bool'.  Support for bool
module parameters of type 'int' or 'unsigned int' is going away in
kernel version 3.4.  In kernel version 3.3 it produces a warning.

The only bool module parameter we currently have is 'comedi_autoconfig'.

Moved the #include "comedi_fops.h" after the #include
<linux/moduleparam.h> to get it to compile.

Signed-off-by: Ian Abbott <abbotti@mev.co.uk>
comedi/comedi_fops.c
comedi/comedi_fops.h
comedi/drivers.c
include/linux/moduleparam.h

index 5437712db043fa6bb5094fde3461e22388f53d0f..53d6acafd5cd91c207b3d40737c2c75fe548c4a0 100644 (file)
@@ -24,9 +24,6 @@
 #undef DEBUG
 
 #define __NO_VERSION__
-#include "comedi_fops.h"
-#include "comedi_compat32.h"
-
 #include <linux/module.h>
 #include <linux/errno.h>
 #include <linux/kernel.h>
@@ -49,6 +46,9 @@
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
+#include "comedi_fops.h"
+#include "comedi_compat32.h"
+
 //#include "kvmem.h"
 
 MODULE_AUTHOR("http://www.comedi.org");
@@ -60,7 +60,7 @@ int comedi_debug;
 module_param(comedi_debug, int, 0644);
 #endif
 
-int comedi_autoconfig = 1;
+COMEDI_MODULE_PARAM_BOOL_T comedi_autoconfig = 1;
 module_param(comedi_autoconfig, bool, 0444);
 
 int comedi_num_legacy_minors = 0;
index ef7c5cc3d06cb5f49df7160cc2c412dfa28065fd..d6ac451e04ffd8d3871c5d5b1d73414de431d0d7 100644 (file)
@@ -4,6 +4,6 @@
 
 extern struct class *comedi_class;
 extern const struct file_operations comedi_fops;
-extern int comedi_autoconfig;
+extern COMEDI_MODULE_PARAM_BOOL_T comedi_autoconfig;
 
 #endif //_COMEDI_FOPS_H
index 330426720294aa1877227b012a235d7441162e0b..4eed3671d4071ca866c77e0a02771f5015c7fc3c 100644 (file)
@@ -24,7 +24,6 @@
 #define _GNU_SOURCE
 
 #define __NO_VERSION__
-#include "comedi_fops.h"
 #include <linux/device.h>
 #include <linux/module.h>
 #include <linux/pci.h>
@@ -47,6 +46,8 @@
 #include <asm/io.h>
 #include <asm/system.h>
 
+#include "comedi_fops.h"
+
 static int postconfig(comedi_device * dev);
 static int insn_rw_emulate_bits(comedi_device * dev, comedi_subdevice * s,
        comedi_insn * insn, lsampl_t * data);
index e80d8d292157462c072f4a4cac637dfed090397d..391c04a7ddd2753722c06644b7df6aa20cb35f87 100644 (file)
        MODULE_PARM(name, "1-" __MODULE_STRING(len) _MODULE_PARM_STRING_##type)
 #endif /* module_param_array */
 
+/*
+ * Define a type for 'bool' parameters....
+ */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31))
+/* Need to use 'int' or 'unsigned int' for 'bool' module parameter. */
+typedef int COMEDI_MODULE_PARAM_BOOL_T;
+#else
+/* Can use 'int', 'unsigned int' or 'bool' for 'bool' module parameter, but
+ * only 'bool' will be allowed for kernel version 3.4 onwards.  Using 'int'
+ * or 'unsigned int' results in a warning for kernel version 3.3. */
+typedef bool COMEDI_MODULE_PARAM_BOOL_T;
+#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) */
+
 #endif /* _COMPAT_MODULEPARAM_H */