[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: add ftrace support to a4l_dbg and a4l_info
Module: xenomai-forge Branch: next Commit: ef97407c68371abfb4fc4f1afdd9b3fa2686904a URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=ef97407c68371abfb4fc4f1afdd9b3fa2686904a Author: Jorge Ramirez-Ortiz Date: Tue Jun 24 16:42:59 2014 -0400 drivers/analogy: add ftrace support to a4l_dbg and a4l_info Enable ftrace support in the analogy debug config --- include/cobalt/kernel/rtdm/analogy/buffer.h| 14 ++-- include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h | 40 +++- kernel/drivers/analogy/Kconfig | 10 ++- kernel/drivers/analogy/buffer.c| 40 kernel/drivers/analogy/command.c |8 +-- kernel/drivers/analogy/device.c|5 +- kernel/drivers/analogy/driver.c|6 +- kernel/drivers/analogy/intel/parport.c |6 +- .../analogy/national_instruments/mio_common.c | 48 +- kernel/drivers/analogy/national_instruments/mite.c | 29 +++- .../drivers/analogy/national_instruments/ni_660x.c | 21 +++--- .../drivers/analogy/national_instruments/ni_670x.c | 18 ++--- .../drivers/analogy/national_instruments/pcimio.c |4 +- kernel/drivers/analogy/rtdm_interface.c|8 ++- kernel/drivers/analogy/sensoray/s526.c |2 +- kernel/drivers/analogy/testing/fake.c | 21 +++--- kernel/drivers/analogy/transfer.c |7 +- utils/analogy/cmd_read.c | 69 +--- utils/analogy/cmd_write.c |9 +-- 19 files changed, 175 insertions(+), 190 deletions(-) diff --git a/include/cobalt/kernel/rtdm/analogy/buffer.h b/include/cobalt/kernel/rtdm/analogy/buffer.h index 3003a4f..d4baefe 100644 --- a/include/cobalt/kernel/rtdm/analogy/buffer.h +++ b/include/cobalt/kernel/rtdm/analogy/buffer.h @@ -50,6 +50,7 @@ #define A4L_BUF_MAP_NR 9 #define A4L_BUF_MAP (1 << A4L_BUF_MAP_NR) + /* Buffer descriptor structure */ struct a4l_buffer { @@ -87,6 +88,13 @@ struct a4l_buffer { unsigned long wake_count; }; +static inline void __dump_buffer_counters(struct a4l_buffer *buf) +{ + __a4l_dbg(1, core_dbg, "a4l_buffer=0x%p, p=0x%p \n", buf, buf->buf); + __a4l_dbg(1, core_dbg, "end=%06ld, prd=%06ld, cns=%06ld, tmp=%06ld \n", + buf->end_count, buf->prd_count, buf->cns_count, buf->tmp_count); +} + /* --- Static inline functions related with user<->kernel data transfers --- */ @@ -191,13 +199,11 @@ static inline int __handle_event(struct a4l_buffer * buf) /* The event "End of acquisition" must not be cleaned before the complete flush of the buffer */ - if (test_bit(A4L_BUF_EOA_NR, &buf->flags)) { + if (test_bit(A4L_BUF_EOA_NR, &buf->flags)) ret = -ENOENT; - } - if (test_bit(A4L_BUF_ERROR_NR, &buf->flags)) { + if (test_bit(A4L_BUF_ERROR_NR, &buf->flags)) ret = -EPIPE; - } return ret; } diff --git a/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h b/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h index 2dffc89..8a0798c 100644 --- a/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h +++ b/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h @@ -36,22 +36,30 @@ #define RTDM_SUBCLASS_ANALOGY 0 -#define __a4l_err(fmt, args...) \ - rtdm_printk(KERN_ERR A4L_PROMPT fmt, ##args) +#define __a4l_err(fmt, args...) rtdm_printk(KERN_ERR A4L_PROMPT fmt, ##args) +#define __a4l_warn(fmt, args...) rtdm_printk(KERN_WARNING A4L_PROMPT fmt, ##args) -#define __a4l_warn(fmt, args...) \ - rtdm_printk(KERN_WARNING A4L_PROMPT fmt, ##args) - -#define __a4l_info(fmt, args...) \ - rtdm_printk(KERN_INFO A4L_PROMPT fmt, ##args) +#ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE +#define __a4l_info(fmt, args...) trace_printk(fmt, ##args) +#else +#define __a4l_info(fmt, args...) \ +rtdm_printk(KERN_INFO A4L_PROMPT "%s: " fmt, __FUNCTION__, ##args) +#endif #ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG - -#define __a4l_dbg(level, debug, fmt, args...) \ - do {\ - if ((debug) >= (level)) \ - rtdm_printk(KERN_DEBUG A4L_PROMPT fmt, ##args); \ +#ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE +#define __a4l_dbg(level, debug, fmt, args...) \ + do {\ + if ((debug) >= (level)) \ + trace_printk(fmt, ##args); \ + } while (0) +#else +#define __a4l_dbg(level, debug, fmt, args...) \ + do { \ + if ((debug) >= (level))
[Xenomai-git] Jorge Ramirez-Ortiz : drivers/analogy: add ftrace support to a4l_dbg and a4l_info
Module: xenomai-forge Branch: next Commit: a9a5cf6c1bbfa4f16d636c89f9827842db427e4e URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=a9a5cf6c1bbfa4f16d636c89f9827842db427e4e Author: Jorge Ramirez-Ortiz Date: Tue Jun 24 16:42:59 2014 -0400 drivers/analogy: add ftrace support to a4l_dbg and a4l_info Enable ftrace support in the analogy debug config --- include/cobalt/kernel/rtdm/analogy/buffer.h| 14 ++-- include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h | 40 +++- kernel/drivers/analogy/Kconfig | 10 ++- kernel/drivers/analogy/buffer.c| 40 kernel/drivers/analogy/command.c |8 +-- kernel/drivers/analogy/device.c|5 +- kernel/drivers/analogy/driver.c|6 +- kernel/drivers/analogy/intel/parport.c |6 +- .../analogy/national_instruments/mio_common.c | 48 +- kernel/drivers/analogy/national_instruments/mite.c | 29 +++- .../drivers/analogy/national_instruments/ni_660x.c | 21 +++--- .../drivers/analogy/national_instruments/ni_670x.c | 18 ++--- .../drivers/analogy/national_instruments/pcimio.c |4 +- kernel/drivers/analogy/rtdm_interface.c|8 ++- kernel/drivers/analogy/sensoray/s526.c |2 +- kernel/drivers/analogy/testing/fake.c | 21 +++--- kernel/drivers/analogy/transfer.c |7 +- utils/analogy/cmd_read.c | 69 +--- utils/analogy/cmd_write.c |9 +-- 19 files changed, 175 insertions(+), 190 deletions(-) diff --git a/include/cobalt/kernel/rtdm/analogy/buffer.h b/include/cobalt/kernel/rtdm/analogy/buffer.h index 3003a4f..d4baefe 100644 --- a/include/cobalt/kernel/rtdm/analogy/buffer.h +++ b/include/cobalt/kernel/rtdm/analogy/buffer.h @@ -50,6 +50,7 @@ #define A4L_BUF_MAP_NR 9 #define A4L_BUF_MAP (1 << A4L_BUF_MAP_NR) + /* Buffer descriptor structure */ struct a4l_buffer { @@ -87,6 +88,13 @@ struct a4l_buffer { unsigned long wake_count; }; +static inline void __dump_buffer_counters(struct a4l_buffer *buf) +{ + __a4l_dbg(1, core_dbg, "a4l_buffer=0x%p, p=0x%p \n", buf, buf->buf); + __a4l_dbg(1, core_dbg, "end=%06ld, prd=%06ld, cns=%06ld, tmp=%06ld \n", + buf->end_count, buf->prd_count, buf->cns_count, buf->tmp_count); +} + /* --- Static inline functions related with user<->kernel data transfers --- */ @@ -191,13 +199,11 @@ static inline int __handle_event(struct a4l_buffer * buf) /* The event "End of acquisition" must not be cleaned before the complete flush of the buffer */ - if (test_bit(A4L_BUF_EOA_NR, &buf->flags)) { + if (test_bit(A4L_BUF_EOA_NR, &buf->flags)) ret = -ENOENT; - } - if (test_bit(A4L_BUF_ERROR_NR, &buf->flags)) { + if (test_bit(A4L_BUF_ERROR_NR, &buf->flags)) ret = -EPIPE; - } return ret; } diff --git a/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h b/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h index 2dffc89..8a0798c 100644 --- a/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h +++ b/include/cobalt/kernel/rtdm/analogy/rtdm_helpers.h @@ -36,22 +36,30 @@ #define RTDM_SUBCLASS_ANALOGY 0 -#define __a4l_err(fmt, args...) \ - rtdm_printk(KERN_ERR A4L_PROMPT fmt, ##args) +#define __a4l_err(fmt, args...) rtdm_printk(KERN_ERR A4L_PROMPT fmt, ##args) +#define __a4l_warn(fmt, args...) rtdm_printk(KERN_WARNING A4L_PROMPT fmt, ##args) -#define __a4l_warn(fmt, args...) \ - rtdm_printk(KERN_WARNING A4L_PROMPT fmt, ##args) - -#define __a4l_info(fmt, args...) \ - rtdm_printk(KERN_INFO A4L_PROMPT fmt, ##args) +#ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE +#define __a4l_info(fmt, args...) trace_printk(fmt, ##args) +#else +#define __a4l_info(fmt, args...) \ +rtdm_printk(KERN_INFO A4L_PROMPT "%s: " fmt, __FUNCTION__, ##args) +#endif #ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG - -#define __a4l_dbg(level, debug, fmt, args...) \ - do {\ - if ((debug) >= (level)) \ - rtdm_printk(KERN_DEBUG A4L_PROMPT fmt, ##args); \ +#ifdef CONFIG_XENO_DRIVERS_ANALOGY_DEBUG_FTRACE +#define __a4l_dbg(level, debug, fmt, args...) \ + do {\ + if ((debug) >= (level)) \ + trace_printk(fmt, ##args); \ + } while (0) +#else +#define __a4l_dbg(level, debug, fmt, args...) \ + do { \ + if ((debug) >= (level))