Module: xenomai-forge
Branch: next
Commit: 66a3410a911333100ff325925fa898e6a2d70625
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=66a3410a911333100ff325925fa898e6a2d70625

Author: Philippe Gerum <r...@xenomai.org>
Date:   Thu Feb 20 11:09:19 2014 +0100

drivers: skip init/exit work if core is disabled

---

 kernel/drivers/analogy/driver.c              |    6 ++++++
 kernel/drivers/analogy/rtdm_interface.c      |    6 ++++++
 kernel/drivers/can/rtcan_flexcan.c           |   11 +++++++++--
 kernel/drivers/can/rtcan_module.c            |    5 +++++
 kernel/drivers/can/rtcan_virt.c              |    6 ++++++
 kernel/drivers/can/sja1000/rtcan_adv_pci.c   |    6 +++++-
 kernel/drivers/can/sja1000/rtcan_ems_pci.c   |    6 +++++-
 kernel/drivers/can/sja1000/rtcan_esd_pci.c   |    6 +++++-
 kernel/drivers/can/sja1000/rtcan_isa.c       |    6 ++++++
 kernel/drivers/can/sja1000/rtcan_ixxat_pci.c |    6 +++++-
 kernel/drivers/can/sja1000/rtcan_mem.c       |    6 ++++++
 kernel/drivers/can/sja1000/rtcan_peak_dng.c  |    6 ++++++
 kernel/drivers/can/sja1000/rtcan_peak_pci.c  |    8 ++++++--
 kernel/drivers/can/sja1000/rtcan_plx_pci.c   |    6 +++++-
 kernel/drivers/can/sja1000/rtcan_sja1000.c   |    7 +++++--
 kernel/drivers/ipc/rtipc.c                   |    6 ++++++
 kernel/drivers/serial/16550A.c               |    6 ++++++
 kernel/drivers/serial/mpc52xx_uart.c         |    6 +++++-
 kernel/drivers/serial/rt_imx_uart.c          |    6 +++++-
 kernel/drivers/testing/rtdmtest.c            |    3 +++
 kernel/drivers/testing/switchtest.c          |    6 +++++-
 kernel/drivers/testing/timerbench.c          |    6 +++++-
 22 files changed, 121 insertions(+), 15 deletions(-)

diff --git a/kernel/drivers/analogy/driver.c b/kernel/drivers/analogy/driver.c
index 362ee49..6449b8d 100644
--- a/kernel/drivers/analogy/driver.c
+++ b/kernel/drivers/analogy/driver.c
@@ -62,6 +62,9 @@ int a4l_lct_drv(char *pin, a4l_drv_t ** pio)
 
 int a4l_register_drv(a4l_drv_t * drv)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        __a4l_dbg(1, core_dbg, "a4l_add_drv: name=%s\n", drv->board_name);
 
        if (a4l_lct_drv(drv->board_name, NULL) != 0) {
@@ -73,6 +76,9 @@ int a4l_register_drv(a4l_drv_t * drv)
 
 int a4l_unregister_drv(a4l_drv_t * drv)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        __a4l_dbg(1, core_dbg, "a4l_rm_drv: name=%s\n", drv->board_name);
 
        if (a4l_lct_drv(drv->board_name, NULL) == 0) {
diff --git a/kernel/drivers/analogy/rtdm_interface.c 
b/kernel/drivers/analogy/rtdm_interface.c
index 6b69f09..f74d7a2 100644
--- a/kernel/drivers/analogy/rtdm_interface.c
+++ b/kernel/drivers/analogy/rtdm_interface.c
@@ -304,6 +304,9 @@ static int __init a4l_init(void)
 {
        int ret;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        /* Initializes the devices */
        a4l_init_devs();
 
@@ -326,6 +329,9 @@ out_a4l_init:
 
 static void __exit a4l_cleanup(void)
 {
+       if (!realtime_core_enabled())
+               return;
+
        /* Removes Analogy proc files */
        a4l_cleanup_proc();
 
diff --git a/kernel/drivers/can/rtcan_flexcan.c 
b/kernel/drivers/can/rtcan_flexcan.c
index 192f21f..6f744bd 100644
--- a/kernel/drivers/can/rtcan_flexcan.c
+++ b/kernel/drivers/can/rtcan_flexcan.c
@@ -975,6 +975,9 @@ static int flexcan_probe(struct platform_device *pdev)
        int err, irq;
        u32 clock_freq = 0;
 
+       if (!realtime_core_enabled())
+               return -ENODEV;
+
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,5,0)
        pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
        if (IS_ERR(pinctrl))
@@ -1113,14 +1116,18 @@ static struct platform_driver flexcan_driver = {
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3,1,0)
 static int __init flexcan_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
        pr_info("%s netdevice driver\n", DRV_NAME);
        return platform_driver_register(&flexcan_driver);
 }
 
 static void __exit flexcan_exit(void)
 {
-       platform_driver_unregister(&flexcan_driver);
-       pr_info("%s: driver removed\n", DRV_NAME);
+       if (realtime_core_enabled()) {
+               platform_driver_unregister(&flexcan_driver);
+               pr_info("%s: driver removed\n", DRV_NAME);
+       }
 }
 module_init(flexcan_init);
 module_exit(flexcan_exit);
diff --git a/kernel/drivers/can/rtcan_module.c 
b/kernel/drivers/can/rtcan_module.c
index a837fa1..18abc3e 100644
--- a/kernel/drivers/can/rtcan_module.c
+++ b/kernel/drivers/can/rtcan_module.c
@@ -419,6 +419,8 @@ int __init rtcan_init(void)
 {
     int err = 0;
 
+    if (!realtime_core_enabled())
+           return 0;
 
     printk("RT-Socket-CAN %d.%d.%d - %s\n",
           RTCAN_MAJOR_VER, RTCAN_MINOR_VER, RTCAN_BUGFIX_VER,
@@ -439,6 +441,9 @@ int __init rtcan_init(void)
 
 void __exit rtcan_exit(void)
 {
+    if (!realtime_core_enabled())
+           return;
+
     rtcan_raw_proto_unregister();
 #ifdef CONFIG_PROC_FS
     rtcan_proc_unregister();
diff --git a/kernel/drivers/can/rtcan_virt.c b/kernel/drivers/can/rtcan_virt.c
index d8b4ee2..698c31a 100644
--- a/kernel/drivers/can/rtcan_virt.c
+++ b/kernel/drivers/can/rtcan_virt.c
@@ -157,6 +157,9 @@ static int __init rtcan_virt_init(void)
 {
        int i, err = 0;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        for (i = 0; i < devices; i++) {
                err = rtcan_virt_init_one(i);
                if (err) {
@@ -180,6 +183,9 @@ static void __exit rtcan_virt_exit(void)
        int i;
        struct rtcan_device *dev;
 
+       if (!realtime_core_enabled())
+           return;
+
        for (i = 0; i < devices; i++) {
                dev = rtcan_virt_devs[i];
 
diff --git a/kernel/drivers/can/sja1000/rtcan_adv_pci.c 
b/kernel/drivers/can/sja1000/rtcan_adv_pci.c
index d257928..864ec44 100644
--- a/kernel/drivers/can/sja1000/rtcan_adv_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_adv_pci.c
@@ -356,12 +356,16 @@ static struct pci_driver rtcan_adv_pci_driver = {
 
 static int __init rtcan_adv_pci_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        return pci_register_driver(&rtcan_adv_pci_driver);
 }
 
 static void __exit rtcan_adv_pci_exit(void)
 {
-       pci_unregister_driver(&rtcan_adv_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&rtcan_adv_pci_driver);
 }
 
 module_init(rtcan_adv_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_ems_pci.c 
b/kernel/drivers/can/sja1000/rtcan_ems_pci.c
index 535c3e0..be4b704 100644
--- a/kernel/drivers/can/sja1000/rtcan_ems_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_ems_pci.c
@@ -317,12 +317,16 @@ static struct pci_driver rtcan_ems_pci_driver = {
 
 static int __init rtcan_ems_pci_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        return pci_register_driver(&rtcan_ems_pci_driver);
 }
 
 static void __exit rtcan_ems_pci_exit(void)
 {
-       pci_unregister_driver(&rtcan_ems_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&rtcan_ems_pci_driver);
 }
 
 module_init(rtcan_ems_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_esd_pci.c 
b/kernel/drivers/can/sja1000/rtcan_esd_pci.c
index 97163a2..924c7d0 100644
--- a/kernel/drivers/can/sja1000/rtcan_esd_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_esd_pci.c
@@ -342,12 +342,16 @@ static struct pci_driver rtcan_esd_pci_driver = {
 
 static int __init rtcan_esd_pci_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        return pci_register_driver(&rtcan_esd_pci_driver);
 }
 
 static void __exit rtcan_esd_pci_exit(void)
 {
-       pci_unregister_driver(&rtcan_esd_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&rtcan_esd_pci_driver);
 }
 
 module_init(rtcan_esd_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_isa.c 
b/kernel/drivers/can/sja1000/rtcan_isa.c
index 10f4429..c506081 100644
--- a/kernel/drivers/can/sja1000/rtcan_isa.c
+++ b/kernel/drivers/can/sja1000/rtcan_isa.c
@@ -161,6 +161,9 @@ static int __init rtcan_isa_init(void)
        int i, err;
        int devices = 0;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        for (i = 0; i < RTCAN_ISA_MAX_DEV && io[i] != 0; i++) {
                err = rtcan_isa_init_one(i);
                if (err) {
@@ -184,6 +187,9 @@ static void rtcan_isa_exit(void)
        int i;
        struct rtcan_device *dev;
 
+       if (!realtime_core_enabled())
+               return;
+
        for (i = 0; i < RTCAN_ISA_MAX_DEV; i++) {
                dev = rtcan_isa_devs[i];
                if (!dev)
diff --git a/kernel/drivers/can/sja1000/rtcan_ixxat_pci.c 
b/kernel/drivers/can/sja1000/rtcan_ixxat_pci.c
index f00422b..eaabe1a 100644
--- a/kernel/drivers/can/sja1000/rtcan_ixxat_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_ixxat_pci.c
@@ -296,13 +296,17 @@ static struct pci_driver rtcan_ixxat_pci_driver = {
 
 static int __init rtcan_ixxat_pci_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
     return pci_register_driver(&rtcan_ixxat_pci_driver);
 }
 
 
 static void __exit rtcan_ixxat_pci_exit(void)
 {
-    pci_unregister_driver(&rtcan_ixxat_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&rtcan_ixxat_pci_driver);
 }
 
 module_init(rtcan_ixxat_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_mem.c 
b/kernel/drivers/can/sja1000/rtcan_mem.c
index ff7d2d6..c668f8f 100644
--- a/kernel/drivers/can/sja1000/rtcan_mem.c
+++ b/kernel/drivers/can/sja1000/rtcan_mem.c
@@ -173,6 +173,9 @@ static int __init rtcan_mem_init(void)
        int i, err;
        int devices = 0;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        for (i = 0; i < RTCAN_MEM_MAX_DEV && mem[i] != 0; i++) {
                err = rtcan_mem_init_one(i);
                if (err) {
@@ -197,6 +200,9 @@ static void rtcan_mem_exit(void)
        struct rtcan_device *dev;
        volatile void __iomem *vmem;
 
+       if (!realtime_core_enabled())
+               return;
+
        for (i = 0; i < RTCAN_MEM_MAX_DEV; i++) {
                dev = rtcan_mem_devs[i];
                if (!dev)
diff --git a/kernel/drivers/can/sja1000/rtcan_peak_dng.c 
b/kernel/drivers/can/sja1000/rtcan_peak_dng.c
index 29e920a..b174625 100644
--- a/kernel/drivers/can/sja1000/rtcan_peak_dng.c
+++ b/kernel/drivers/can/sja1000/rtcan_peak_dng.c
@@ -345,6 +345,9 @@ static void rtcan_peak_dng_exit(void)
     int i;
     struct rtcan_device *dev;
 
+    if (!realtime_core_enabled())
+        return;
+
     for (i = 0, dev = rtcan_peak_dng_devs[i];
         i < RTCAN_PEAK_DNG_MAX_DEV && dev != NULL;
         i++)
@@ -359,6 +362,9 @@ static int __init rtcan_peak_dng_init(void)
 {
     int i, ret = -EINVAL, done = 0;
 
+    if (!realtime_core_enabled())
+        return 0;
+
     if (pnp_register_driver(&rtcan_peak_dng_pnp_driver) == 0)
        pnp_registered = 1;
 
diff --git a/kernel/drivers/can/sja1000/rtcan_peak_pci.c 
b/kernel/drivers/can/sja1000/rtcan_peak_pci.c
index 7301779..3da1657 100644
--- a/kernel/drivers/can/sja1000/rtcan_peak_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_peak_pci.c
@@ -351,13 +351,17 @@ static struct pci_driver rtcan_peak_pci_driver = {
 
 static int __init rtcan_peak_pci_init(void)
 {
-    return pci_register_driver(&rtcan_peak_pci_driver);
+       if (!realtime_core_enabled())
+               return 0;
+
+        return pci_register_driver(&rtcan_peak_pci_driver);
 }
 
 
 static void __exit rtcan_peak_pci_exit(void)
 {
-    pci_unregister_driver(&rtcan_peak_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&rtcan_peak_pci_driver);
 }
 
 module_init(rtcan_peak_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_plx_pci.c 
b/kernel/drivers/can/sja1000/rtcan_plx_pci.c
index da06a37..614b779 100644
--- a/kernel/drivers/can/sja1000/rtcan_plx_pci.c
+++ b/kernel/drivers/can/sja1000/rtcan_plx_pci.c
@@ -596,12 +596,16 @@ static struct pci_driver plx_pci_driver = {
 
 static int __init plx_pci_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        return pci_register_driver(&plx_pci_driver);
 }
 
 static void __exit plx_pci_exit(void)
 {
-       pci_unregister_driver(&plx_pci_driver);
+       if (realtime_core_enabled())
+               pci_unregister_driver(&plx_pci_driver);
 }
 
 module_init(plx_pci_init);
diff --git a/kernel/drivers/can/sja1000/rtcan_sja1000.c 
b/kernel/drivers/can/sja1000/rtcan_sja1000.c
index 35249ef..c7712ab 100644
--- a/kernel/drivers/can/sja1000/rtcan_sja1000.c
+++ b/kernel/drivers/can/sja1000/rtcan_sja1000.c
@@ -822,14 +822,17 @@ void rtcan_sja1000_unregister(struct rtcan_device *dev)
 
 int __init rtcan_sja_init(void)
 {
-    printk("RTCAN SJA1000 driver initialized\n");
+       if (realtime_core_enabled())
+               printk("RTCAN SJA1000 driver initialized\n");
+
     return 0;
 }
 
 
 void __exit rtcan_sja_exit(void)
 {
-    printk("%s removed\n", sja_ctrl_name);
+       if (realtime_core_enabled())
+               printk("%s removed\n", sja_ctrl_name);
 }
 
 module_init(rtcan_sja_init);
diff --git a/kernel/drivers/ipc/rtipc.c b/kernel/drivers/ipc/rtipc.c
index 9120994..20c2a74 100644
--- a/kernel/drivers/ipc/rtipc.c
+++ b/kernel/drivers/ipc/rtipc.c
@@ -251,6 +251,9 @@ int __init __rtipc_init(void)
 {
        int ret, n;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        for (n = 0; n < IPCPROTO_MAX; n++) {
                if (protocols[n] && protocols[n]->proto_init) {
                        ret = protocols[n]->proto_init();
@@ -266,6 +269,9 @@ void __exit __rtipc_exit(void)
 {
        int n;
 
+       if (!realtime_core_enabled())
+               return;
+
        rtdm_dev_unregister(&device, 1000);
 
        for (n = 0; n < IPCPROTO_MAX; n++) {
diff --git a/kernel/drivers/serial/16550A.c b/kernel/drivers/serial/16550A.c
index 3216ae0..ca92c4d 100644
--- a/kernel/drivers/serial/16550A.c
+++ b/kernel/drivers/serial/16550A.c
@@ -1117,6 +1117,9 @@ int __init rt_16550_init(void)
        int err;
        int i;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        rt_16550_pnp_init();
        rt_16550_pci_init();
 
@@ -1185,6 +1188,9 @@ void rt_16550_exit(void)
 {
        int i;
 
+       if (!realtime_core_enabled())
+               return;
+
        for (i = 0; i < MAX_DEVICES; i++)
                if (device[i]) {
                        rtdm_dev_unregister(device[i], 1000);
diff --git a/kernel/drivers/serial/mpc52xx_uart.c 
b/kernel/drivers/serial/mpc52xx_uart.c
index d31e972..cb1950d 100644
--- a/kernel/drivers/serial/mpc52xx_uart.c
+++ b/kernel/drivers/serial/mpc52xx_uart.c
@@ -1435,6 +1435,9 @@ static int __init rt_mpc52xx_uart_init(void)
 {
        int ret;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        printk(KERN_INFO "RTserial: MPC52xx PSC UART driver\n");
 
        rt_mpc52xx_uart_of_enumerate();
@@ -1452,7 +1455,8 @@ static int __init rt_mpc52xx_uart_init(void)
 
 static void __exit rt_mpc52xx_uart_exit(void)
 {
-       of_unregister_platform_driver(&rt_mpc52xx_uart_of_driver);
+       if (realtime_core_enabled())
+               of_unregister_platform_driver(&rt_mpc52xx_uart_of_driver);
 }
 
 module_init(rt_mpc52xx_uart_init);
diff --git a/kernel/drivers/serial/rt_imx_uart.c 
b/kernel/drivers/serial/rt_imx_uart.c
index 0ce1f1a..3831225 100644
--- a/kernel/drivers/serial/rt_imx_uart.c
+++ b/kernel/drivers/serial/rt_imx_uart.c
@@ -1540,12 +1540,16 @@ static struct platform_driver rt_imx_uart_driver = {
 
 static int __init rt_imx_uart_init(void)
 {
+       if (!realtime_core_enabled())
+               return 0;
+
        return platform_driver_register(&rt_imx_uart_driver);
 }
 
 static void __exit rt_imx_uart_exit(void)
 {
-       platform_driver_unregister(&rt_imx_uart_driver);
+       if (realtime_core_enabled())
+               platform_driver_unregister(&rt_imx_uart_driver);
 }
 
 module_init(rt_imx_uart_init);
diff --git a/kernel/drivers/testing/rtdmtest.c 
b/kernel/drivers/testing/rtdmtest.c
index 692faa8..c107d07 100644
--- a/kernel/drivers/testing/rtdmtest.c
+++ b/kernel/drivers/testing/rtdmtest.c
@@ -155,6 +155,9 @@ static int __init __rtdm_test_init(void)
        int dev = 0;
        int err;
 
+       if (!realtime_core_enabled())
+               return -ENODEV;
+
        while (1) {
                device[dev].proc_name = device[dev].device_name;
 
diff --git a/kernel/drivers/testing/switchtest.c 
b/kernel/drivers/testing/switchtest.c
index 4523917..f48c4e2 100644
--- a/kernel/drivers/testing/switchtest.c
+++ b/kernel/drivers/testing/switchtest.c
@@ -758,6 +758,9 @@ int __init __switchtest_init(void)
 {
        int err;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        fp_features = fp_detect();
 
        do {
@@ -774,7 +777,8 @@ int __init __switchtest_init(void)
 
 void __switchtest_exit(void)
 {
-       rtdm_dev_unregister(&device, 1000);
+       if (realtime_core_enabled())
+               rtdm_dev_unregister(&device, 1000);
 }
 
 module_init(__switchtest_init);
diff --git a/kernel/drivers/testing/timerbench.c 
b/kernel/drivers/testing/timerbench.c
index 6563fd5..efb5ca2 100644
--- a/kernel/drivers/testing/timerbench.c
+++ b/kernel/drivers/testing/timerbench.c
@@ -506,6 +506,9 @@ static int __init __timerbench_init(void)
 {
        int err;
 
+       if (!realtime_core_enabled())
+               return 0;
+
        do {
                snprintf(device.device_name, RTDM_MAX_DEVNAME_LEN,
                         "rttest-timerbench%d",
@@ -520,7 +523,8 @@ static int __init __timerbench_init(void)
 
 static void __timerbench_exit(void)
 {
-       rtdm_dev_unregister(&device, 1000);
+       if (realtime_core_enabled())
+               rtdm_dev_unregister(&device, 1000);
 }
 
 module_init(__timerbench_init);


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git

Reply via email to