Module: xenomai-head Branch: master Commit: c7823ea6fa347842bdbbe105bb46d1e8dae34cc3 URL: http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=c7823ea6fa347842bdbbe105bb46d1e8dae34cc3
Author: Alexis Berlemont <berlemont.h...@free.fr> Date: Sun Jun 21 23:59:58 2009 +0200 Properly implement debug traces --- include/comedi/os_facilities.h | 27 +++++++++++++++--------- ksrc/drivers/comedi/Kconfig | 19 +++++++++++++++++ ksrc/drivers/comedi/buffer.c | 21 +++++++++++-------- ksrc/drivers/comedi/command.c | 21 ++++++++++--------- ksrc/drivers/comedi/device.c | 37 +++++++++++++++++---------------- ksrc/drivers/comedi/driver.c | 6 ++-- ksrc/drivers/comedi/rtdm_interface.c | 17 ++++++++++----- ksrc/drivers/comedi/testing/fake.c | 2 +- ksrc/drivers/comedi/testing/loop.c | 4 +- ksrc/drivers/comedi/transfer.c | 20 +++++++++++------- 10 files changed, 107 insertions(+), 67 deletions(-) diff --git a/include/comedi/os_facilities.h b/include/comedi/os_facilities.h index 2e895ec..2f326c2 100644 --- a/include/comedi/os_facilities.h +++ b/include/comedi/os_facilities.h @@ -54,12 +54,23 @@ #define __comedi_warn(fmt, args...) \ rtdm_printk(KERN_WARNING COMEDI_PROMPT fmt, ##args) -#ifdef COMEDI_DEBUG #define __comedi_info(fmt, args...) \ rtdm_printk(KERN_INFO COMEDI_PROMPT fmt, ##args) -#else /* !COMEDI_DEBUG */ -#define __comedi_info(fmt, args...) -#endif /* COMEDI_DEBUG */ + +#ifdef CONFIG_XENO_DRIVERS_COMEDI_DEBUG + +#define __comedi_dbg(level, debug, fmt, args...) \ + do { \ + if ((debug) >= (level)) \ + rtdm_printk(KERN_DEBUG COMEDI_PROMPT fmt, ##args); \ + } while (0) + +#define core_dbg CONFIG_XENO_DRIVERS_COMEDI_DEBUG_LEVEL + +#else /* !CONFIG_XENO_DRIVERS_COMEDI_DEBUG */ + +#define __comedi_dbg(level, debug, fmt, args...) +#endif /* CONFIG_XENO_DRIVERS_COMEDI_DEBUG */ #define __comedi_dev_name(dev) \ (dev->driver == NULL) ? "unattached dev" : dev->driver->board_name @@ -73,12 +84,8 @@ #define comedi_info(dev, fmt, args...) \ __comedi_info("%s: " fmt, __comedi_dev_name(dev), ##args) -#define comedi_debug(level, debug, dev, fmt, args...) \ - do { \ - if (debug >= (level)) \ - rtdm_printk(KERN_DEBUG COMEDI_PROMPT "%s: " fmt, \ - __comedi_dev_name(dev), ##args); \ - } while (0) +#define comedi_dbg(level, debug, dev, fmt, args...) \ + __comedi_dbg(level, debug, "%s: " fmt, __comedi_dev_name(dev), ##args) /* --- Allocation / MMU section --- */ diff --git a/ksrc/drivers/comedi/Kconfig b/ksrc/drivers/comedi/Kconfig index 55c1928..993d33f 100644 --- a/ksrc/drivers/comedi/Kconfig +++ b/ksrc/drivers/comedi/Kconfig @@ -11,6 +11,25 @@ config XENO_DRIVERS_COMEDI This driver stack is a port of the original COMEDI framework over the RTDM interface. +config XENO_DRIVERS_COMEDI_DEBUG + bool "Comedi debug trace" + default y + help + + Enable debugging traces in Comedi so as to monitor Comedi's + core and drivers behaviours. + +config XENO_DRIVERS_COMEDI_DEBUG_LEVEL + int "Comedi core debug level threshold" + default 0 + help + + Define the level above which the debugging traces will not be + displayed. + + WARNING: this threshold is only applied on the Comedi + core. That will not affect the driver. + source drivers/xenomai/comedi/testing/Kconfig source drivers/xenomai/comedi/intel/Kconfig source drivers/xenomai/comedi/national_instruments/Kconfig diff --git a/ksrc/drivers/comedi/buffer.c b/ksrc/drivers/comedi/buffer.c index 07e983e..2555a0a 100644 --- a/ksrc/drivers/comedi/buffer.c +++ b/ksrc/drivers/comedi/buffer.c @@ -317,7 +317,9 @@ int comedi_ioctl_mmap(comedi_cxt_t * cxt, void *arg) comedi_mmap_t map_cfg; comedi_dev_t *dev; int ret; - __comedi_info("comedi_ioctl_mmap: minor=%d\n", comedi_get_minor(cxt)); + + __comedi_dbg(1, core_dbg, + "comedi_ioctl_mmap: minor=%d\n", comedi_get_minor(cxt)); dev = comedi_get_dev(cxt); @@ -374,8 +376,8 @@ int comedi_ioctl_bufcfg(comedi_cxt_t * cxt, void *arg) comedi_dev_t *dev = comedi_get_dev(cxt); comedi_bufcfg_t buf_cfg; - __comedi_info("comedi_ioctl_bufcfg: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_bufcfg: minor=%d\n", comedi_get_minor(cxt)); /* Basic checking */ if (!test_bit(COMEDI_DEV_ATTACHED, &dev->flags)) @@ -422,8 +424,8 @@ int comedi_ioctl_bufinfo(comedi_cxt_t * cxt, void *arg) unsigned long tmp_cnt; int ret; - __comedi_info("comedi_ioctl_bufinfo: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_bufinfo: minor=%d\n", comedi_get_minor(cxt)); /* Basic checking */ if (!test_bit(COMEDI_DEV_ATTACHED, &dev->flags)) @@ -452,8 +454,8 @@ int comedi_ioctl_bufinfo(comedi_cxt_t * cxt, void *arg) /* Retrieves the data amount to read */ tmp_cnt = info.rw_count = __count_to_get(buf); - __comedi_info("comedi_ioctl_bufinfo: count to read=%lu\n", - tmp_cnt); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_bufinfo: count to read=%lu\n", tmp_cnt); if ((ret < 0 && ret != -ENOENT) || (ret == -ENOENT && tmp_cnt == 0)) { @@ -483,8 +485,9 @@ int comedi_ioctl_bufinfo(comedi_cxt_t * cxt, void *arg) /* Retrieves the data amount which is writable */ info.rw_count = __count_to_put(buf); - __comedi_info("comedi_ioctl_bufinfo: count to write=%lu\n", - info.rw_count); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_bufinfo: count to write=%lu\n", + info.rw_count); } else return -EINVAL; diff --git a/ksrc/drivers/comedi/command.c b/ksrc/drivers/comedi/command.c index d205db3..0ad63e9 100644 --- a/ksrc/drivers/comedi/command.c +++ b/ksrc/drivers/comedi/command.c @@ -62,13 +62,13 @@ int comedi_fill_cmddesc(comedi_cxt_t * cxt, comedi_cmd_t * desc, void *arg) desc->chan_descs = tmpchans; - __comedi_info("comedi_fill_cmddesc: desc dump\n"); - __comedi_info("\t->idx_subd=%u\n", desc->idx_subd); - __comedi_info("\t->flags=%lu\n", desc->flags); - __comedi_info("\t->nb_chan=%u\n", desc->nb_chan); - __comedi_info("\t->chan_descs=0x%x\n", *desc->chan_descs); - __comedi_info("\t->data_len=%u\n", desc->data_len); - __comedi_info("\t->pdata=0x%p\n", desc->data); + __comedi_dbg(1, core_dbg, "comedi_fill_cmddesc: desc dump\n"); + __comedi_dbg(1, core_dbg, "\t->idx_subd=%u\n", desc->idx_subd); + __comedi_dbg(1, core_dbg, "\t->flags=%lu\n", desc->flags); + __comedi_dbg(1, core_dbg, "\t->nb_chan=%u\n", desc->nb_chan); + __comedi_dbg(1, core_dbg, "\t->chan_descs=0x%x\n", *desc->chan_descs); + __comedi_dbg(1, core_dbg, "\t->data_len=%u\n", desc->data_len); + __comedi_dbg(1, core_dbg, "\t->pdata=0x%p\n", desc->data); out_cmddesc: @@ -92,8 +92,8 @@ int comedi_check_cmddesc(comedi_cxt_t * cxt, comedi_cmd_t * desc) int ret = 0; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_check_cmddesc: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_check_cmddesc: minor=%d\n", comedi_get_minor(cxt)); if (desc->idx_subd >= dev->transfer.nb_subd) { __comedi_err("comedi_check_cmddesc: " @@ -253,7 +253,8 @@ int comedi_ioctl_cmd(comedi_cxt_t * cxt, void *arg) comedi_cmd_t *cmd_desc = NULL; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_ioctl_cmd: minor=%d\n", comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_cmd: minor=%d\n", comedi_get_minor(cxt)); /* Allocates the command */ cmd_desc = (comedi_cmd_t *) comedi_kmalloc(sizeof(comedi_cmd_t)); diff --git a/ksrc/drivers/comedi/device.c b/ksrc/drivers/comedi/device.c index 39e1324..6c30f4c 100644 --- a/ksrc/drivers/comedi/device.c +++ b/ksrc/drivers/comedi/device.c @@ -202,8 +202,8 @@ int comedi_fill_lnkdesc(comedi_cxt_t * cxt, char *tmpname = NULL; void *tmpopts = NULL; - __comedi_info("comedi_fill_lnkdesc: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_fill_lnkdesc: minor=%d\n", comedi_get_minor(cxt)); ret = comedi_copy_from_user(cxt, link_arg, arg, sizeof(comedi_lnkdesc_t)); @@ -279,8 +279,8 @@ int comedi_fill_lnkdesc(comedi_cxt_t * cxt, void comedi_free_lnkdesc(comedi_cxt_t * cxt, comedi_lnkdesc_t * link_arg) { - __comedi_info("comedi_free_lnkdesc: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_free_lnkdesc: minor=%d\n", comedi_get_minor(cxt)); if (link_arg->bname != NULL) comedi_kfree(link_arg->bname); @@ -295,14 +295,15 @@ int comedi_assign_driver(comedi_cxt_t * cxt, int ret = 0; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_assign_driver: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_assign_driver: minor=%d\n", comedi_get_minor(cxt)); dev->driver = drv; if (drv->privdata_size == 0) - __comedi_info - ("comedi_assign_driver: warning! the field priv will not be usable\n"); + __comedi_dbg(1, core_dbg, + "comedi_assign_driver: warning! " + "the field priv will not be usable\n"); else { INIT_LIST_HEAD(&dev->subdvsq); @@ -341,8 +342,8 @@ int comedi_release_driver(comedi_cxt_t * cxt) unsigned long flags; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_release_driver: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_release_driver: minor=%d\n", comedi_get_minor(cxt)); comedi_lock_irqsave(&dev->lock, flags); @@ -378,8 +379,8 @@ int comedi_device_attach(comedi_cxt_t * cxt, void *arg) comedi_lnkdesc_t link_arg; comedi_drv_t *drv = NULL; - __comedi_info("comedi_device_attach: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_device_attach: minor=%d\n", comedi_get_minor(cxt)); if ((ret = comedi_fill_lnkdesc(cxt, &link_arg, arg)) != 0) goto out_attach; @@ -399,8 +400,8 @@ int comedi_device_detach(comedi_cxt_t * cxt) { comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_device_detach: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_device_detach: minor=%d\n", comedi_get_minor(cxt)); if (dev->driver == NULL) return -ENXIO; @@ -414,8 +415,8 @@ int comedi_ioctl_devcfg(comedi_cxt_t * cxt, void *arg) { int ret = 0; - __comedi_info("comedi_ioctl_devcfg: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_devcfg: minor=%d\n", comedi_get_minor(cxt)); if (comedi_test_rt() != 0) return -EPERM; @@ -460,8 +461,8 @@ int comedi_ioctl_devinfo(comedi_cxt_t * cxt, void *arg) comedi_dvinfo_t info; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_ioctl_devinfo: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_ioctl_devinfo: minor=%d\n", comedi_get_minor(cxt)); memset(&info, 0, sizeof(comedi_dvinfo_t)); diff --git a/ksrc/drivers/comedi/driver.c b/ksrc/drivers/comedi/driver.c index 3907ec7..3b7c6fa 100644 --- a/ksrc/drivers/comedi/driver.c +++ b/ksrc/drivers/comedi/driver.c @@ -40,7 +40,7 @@ int comedi_lct_drv(char *pin, comedi_drv_t ** pio) struct list_head *this; int ret = -EINVAL; - __comedi_info("comedi_lct_drv: name=%s\n", pin); + __comedi_dbg(1, core_dbg, "comedi_lct_drv: name=%s\n", pin); /* Goes through the linked list so as to find a driver instance with the same name */ @@ -62,7 +62,7 @@ int comedi_lct_drv(char *pin, comedi_drv_t ** pio) int comedi_register_drv(comedi_drv_t * drv) { - __comedi_info("comedi_add_drv: name=%s\n", drv->board_name); + __comedi_dbg(1, core_dbg, "comedi_add_drv: name=%s\n", drv->board_name); if (comedi_lct_drv(drv->board_name, NULL) != 0) { list_add(&drv->list, &comedi_drvs); @@ -73,7 +73,7 @@ int comedi_register_drv(comedi_drv_t * drv) int comedi_unregister_drv(comedi_drv_t * drv) { - __comedi_info("comedi_rm_drv: name=%s\n", drv->board_name); + __comedi_dbg(1, core_dbg, "comedi_rm_drv: name=%s\n", drv->board_name); if (comedi_lct_drv(drv->board_name, NULL) == 0) { /* Here, we consider the argument is pointing diff --git a/ksrc/drivers/comedi/rtdm_interface.c b/ksrc/drivers/comedi/rtdm_interface.c index 5e2ef92..5843d11 100644 --- a/ksrc/drivers/comedi/rtdm_interface.c +++ b/ksrc/drivers/comedi/rtdm_interface.c @@ -124,7 +124,8 @@ int comedi_rt_open(struct rtdm_dev_context *context, comedi_init_cxt(context, user_info, &cxt); comedi_set_dev(&cxt); - __comedi_info("comedi_rt_open: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, + "comedi_rt_open: minor=%d\n", comedi_get_minor(&cxt)); return 0; } @@ -136,7 +137,8 @@ int comedi_rt_close(struct rtdm_dev_context *context, comedi_init_cxt(context, user_info, &cxt); comedi_set_dev(&cxt); - __comedi_info("comedi_rt_close: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, + "comedi_rt_close: minor=%d\n", comedi_get_minor(&cxt)); return 0; } @@ -151,7 +153,8 @@ ssize_t comedi_rt_read(struct rtdm_dev_context * context, comedi_set_dev(&cxt); dev = comedi_get_dev(&cxt); - __comedi_info("comedi_rt_read: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, + "comedi_rt_read: minor=%d\n", comedi_get_minor(&cxt)); if (nbytes == 0) return 0; @@ -170,7 +173,7 @@ ssize_t comedi_rt_write(struct rtdm_dev_context * context, comedi_set_dev(&cxt); dev = comedi_get_dev(&cxt); - __comedi_info("comedi_rt_write: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, "comedi_rt_write: minor=%d\n", comedi_get_minor(&cxt)); if (nbytes == 0) return 0; @@ -186,7 +189,8 @@ int comedi_rt_ioctl(struct rtdm_dev_context *context, comedi_init_cxt(context, user_info, &cxt); comedi_set_dev(&cxt); - __comedi_info("comedi_rt_ioctl: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, + "comedi_rt_ioctl: minor=%d\n", comedi_get_minor(&cxt)); return comedi_ioctl_functions[_IOC_NR(request)] (&cxt, arg); } @@ -202,7 +206,8 @@ int comedi_rt_select(struct rtdm_dev_context *context, called */ comedi_init_cxt(context, NULL, &cxt); comedi_set_dev(&cxt); - __comedi_info("comedi_rt_select: minor=%d\n", comedi_get_minor(&cxt)); + __comedi_dbg(1, core_dbg, + "comedi_rt_select: minor=%d\n", comedi_get_minor(&cxt)); return comedi_select(&cxt, selector, type, fd_index); } diff --git a/ksrc/drivers/comedi/testing/fake.c b/ksrc/drivers/comedi/testing/fake.c index 05e1900..d40a9d6 100644 --- a/ksrc/drivers/comedi/testing/fake.c +++ b/ksrc/drivers/comedi/testing/fake.c @@ -153,7 +153,7 @@ int test_cmd(comedi_subd_t *subd, comedi_cmd_t *cmd) comedi_dev_t *dev = subd->dev; tstprv_t *priv = (tstprv_t *)dev->priv; - comedi_info(dev, "test_cmd: begin (subd=%d)\n",idx_subd); + comedi_info(dev, "test_cmd: begin (subd=%d)\n", subd->idx); priv->scan_period_ns=cmd->scan_begin_arg; priv->convert_period_ns=(cmd->convert_src==TRIG_TIMER)? diff --git a/ksrc/drivers/comedi/testing/loop.c b/ksrc/drivers/comedi/testing/loop.c index 4f618fb..ac0c2a4 100644 --- a/ksrc/drivers/comedi/testing/loop.c +++ b/ksrc/drivers/comedi/testing/loop.c @@ -107,7 +107,7 @@ int loop_cmd(comedi_subd_t *subd, comedi_cmd_t *cmd) { lpprv_t *priv = (lpprv_t *)subd->dev->priv; - comedi_info(dev, "loop_cmd: (subd=%d)\n",idx_subd); + comedi_info(subd->dev, "loop_cmd: (subd=%d)\n", subd->idx); priv->loop_running = 1; @@ -120,7 +120,7 @@ int loop_cancel(comedi_subd_t *subd) { lpprv_t *priv=(lpprv_t *)subd->dev->priv; - comedi_info(dev, "loop_cancel: (subd=%d)\n",idx_subd); + comedi_info(subd->dev, "loop_cancel: (subd=%d)\n", subd->idx); priv->loop_running=0; diff --git a/ksrc/drivers/comedi/transfer.c b/ksrc/drivers/comedi/transfer.c index 5d549a7..f5a8705 100644 --- a/ksrc/drivers/comedi/transfer.c +++ b/ksrc/drivers/comedi/transfer.c @@ -39,8 +39,9 @@ int comedi_cleanup_transfer(comedi_cxt_t * cxt) comedi_trf_t *tsf; int i; - __comedi_info("comedi_cleanup_transfer: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_cleanup_transfer: minor=%d\n", + comedi_get_minor(cxt)); dev = comedi_get_dev(cxt); tsf = &dev->transfer; @@ -87,8 +88,9 @@ int comedi_setup_transfer(comedi_cxt_t * cxt) struct list_head *this; int i = 0, ret = 0; - __comedi_info("comedi_setup_transfer: minor=%d\n", - comedi_get_minor(cxt)); + __comedi_dbg(1, core_dbg, + "comedi_setup_transfer: minor=%d\n", + comedi_get_minor(cxt)); dev = comedi_get_dev(cxt); tsf = &dev->transfer; @@ -177,8 +179,9 @@ int comedi_reserve_transfer(comedi_cxt_t * cxt, int idx_subd) { comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_reserve_transfer: minor=%d idx=%d\n", - comedi_get_minor(cxt), idx_subd); + __comedi_dbg(1, core_dbg, + "comedi_reserve_transfer: minor=%d idx=%d\n", + comedi_get_minor(cxt), idx_subd); if (test_and_set_bit(COMEDI_TSF_BUSY, &(dev->transfer.status[idx_subd]))) @@ -192,8 +195,9 @@ int comedi_init_transfer(comedi_cxt_t * cxt, comedi_cmd_t * cmd) int i; comedi_dev_t *dev = comedi_get_dev(cxt); - __comedi_info("comedi_init_transfer: minor=%d idx=%d\n", - comedi_get_minor(cxt), cmd->idx_subd); + __comedi_dbg(1, core_dbg, + "comedi_init_transfer: minor=%d idx=%d\n", + comedi_get_minor(cxt), cmd->idx_subd); /* Checks if the transfer system has to work in bulk mode */ if (cmd->flags & COMEDI_CMD_BULK) _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git