Optionally compile with trace_printk support

This commit is contained in:
Martin Troxler 2011-01-12 14:56:53 +01:00
parent e4722b4475
commit 85822a6242
4 changed files with 98 additions and 9 deletions

View File

@ -46,6 +46,10 @@
#endif // KERNEL_VERSION(2,6,24)
#endif // __KERNEL__
#ifdef CONFIG_TRACING
//#define USE_TRACE_PRINTK
#endif
/******************************************************************************
* EtherCAT master
*****************************************************************************/

View File

@ -58,7 +58,11 @@
/** Set to 1 to enable external datagram injection debugging.
*/
#ifdef USE_TRACE_PRINTK
#define DEBUG_INJECT 1
#else
#define DEBUG_INJECT 0
#endif
#ifdef EC_HAVE_CYCLES
@ -682,7 +686,7 @@ void ec_master_inject_fsm_datagrams(
if (queue_size <= master->max_queue_size) {
list_del_init(&datagram->queue);
#if DEBUG_INJECT
EC_MASTER_DBG(master, 0, "Injecting fsm datagram %p"
EC_MASTER_DBG(master, 2, "Injecting fsm datagram %p"
" size=%zu, queue_size=%zu\n", datagram,
datagram->data_size, queue_size);
#endif
@ -730,7 +734,7 @@ void ec_master_inject_fsm_datagrams(
}
#if DEBUG_INJECT
else {
EC_MASTER_DBG(master, 0, "Deferred injecting"
EC_MASTER_DBG(master, 2, "Deferred injecting"
" of fsm datagram %p"
" size=%zu, queue_size=%zu\n",
datagram, datagram->data_size, queue_size);
@ -801,7 +805,7 @@ void ec_master_queue_fsm_datagram(
}
#if DEBUG_INJECT
EC_MASTER_DBG(master, 0, "Requesting fsm datagram %p size=%zu\n",
EC_MASTER_DBG(master, 2, "Requesting fsm datagram %p size=%zu\n",
datagram, datagram->data_size);
#endif
@ -894,8 +898,8 @@ void ec_master_send_datagrams(ec_master_t *master /**< EtherCAT master */)
list_add_tail(&datagram->sent, &sent_datagrams);
datagram->index = master->datagram_index++;
EC_MASTER_DBG(master, 2, "adding datagram 0x%02X\n",
datagram->index);
EC_MASTER_DBG(master, 2, "adding datagram %p i=0x%02X size=%zu\n",datagram,
datagram->index,datagram_size);
// set "datagram following" flag in previous frame
if (follows_word)
@ -921,8 +925,8 @@ void ec_master_send_datagrams(ec_master_t *master /**< EtherCAT master */)
unsigned int frame_offset = domain_fmmu->logical_start_address-datagram_address;
memcpy(frame_datagram_data+frame_offset, domain_data, domain_fmmu->data_size);
if (unlikely(master->debug_level > 1)) {
EC_DBG("sending dg 0x%02X fmmu %u fp=%u dp=%zu size=%u\n",
datagram->index, i,frame_offset,domain_data-datagram->data,domain_fmmu->data_size);
EC_DBG("sending dg %p i=0x%02X fmmu %u fp=%u dp=%zu size=%u\n",
datagram,datagram->index, i,frame_offset,domain_data-datagram->data,domain_fmmu->data_size);
ec_print_data(domain_data, domain_fmmu->data_size);
}
}
@ -1097,8 +1101,9 @@ void ec_master_receive_datagrams(ec_master_t *master, /**< EtherCAT master */
unsigned int frame_offset = domain_fmmu->logical_start_address-datagram_address;
memcpy(domain_data, frame_datagram_data+frame_offset, domain_fmmu->data_size);
if (unlikely(master->debug_level > 1)) {
EC_DBG("receiving dg 0x%02X fmmu %u fp=%u dp=%zu size=%u\n",
datagram->index, i,frame_offset,domain_data-datagram->data,domain_fmmu->data_size);
EC_DBG("receiving dg %p i=0x%02X fmmu %u fp=%u dp=%zu size=%u\n",
datagram,datagram->index, i,
frame_offset,domain_data-datagram->data,domain_fmmu->data_size);
ec_print_data(domain_data, domain_fmmu->data_size);
}
}
@ -1122,6 +1127,8 @@ void ec_master_receive_datagrams(ec_master_t *master, /**< EtherCAT master */
datagram->cycles_received = master->main_device.cycles_poll;
#endif
datagram->jiffies_received = master->main_device.jiffies_poll;
EC_MASTER_DBG(master, 2, "removing datagram %p i=0x%02X\n",datagram,
datagram->index);
list_del_init(&datagram->queue);
}
}

View File

@ -61,8 +61,16 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_MASTER_INFO(master, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT %u: " fmt, master->index, ##args); \
printk(KERN_INFO "EtherCAT %u: " fmt, master->index, ##args); \
} while (0)
#else
#define EC_MASTER_INFO(master, fmt, args...) \
printk(KERN_INFO "EtherCAT %u: " fmt, master->index, ##args)
#endif
/** Convenience macro for printing master-specific errors to syslog.
*
@ -73,8 +81,16 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_MASTER_ERR(master, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT ERROR %u: " fmt, master->index, ##args); \
printk(KERN_ERR "EtherCAT ERROR %u: " fmt, master->index, ##args); \
} while (0)
#else
#define EC_MASTER_ERR(master, fmt, args...) \
printk(KERN_ERR "EtherCAT ERROR %u: " fmt, master->index, ##args)
#endif
/** Convenience macro for printing master-specific warnings to syslog.
*
@ -85,8 +101,16 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_MASTER_WARN(master, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT WARNING %u: " fmt, master->index, ##args); \
printk(KERN_WARNING "EtherCAT WARNING %u: " fmt, master->index, ##args); \
} while (0)
#else
#define EC_MASTER_WARN(master, fmt, args...) \
printk(KERN_WARNING "EtherCAT WARNING %u: " fmt, master->index, ##args)
#endif
/** Convenience macro for printing master-specific debug messages to syslog.
*
@ -97,6 +121,17 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_MASTER_DBG(master, level, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT DEBUG%u %u: " fmt, \
level,master->index, ##args); \
if (master->debug_level >= level) { \
printk(KERN_DEBUG "EtherCAT DEBUG %u: " fmt, \
master->index, ##args); \
} \
} while (0)
#else
#define EC_MASTER_DBG(master, level, fmt, args...) \
do { \
if (master->debug_level >= level) { \
@ -104,6 +139,7 @@
master->index, ##args); \
} \
} while (0)
#endif
/*****************************************************************************/

View File

@ -59,9 +59,19 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_SLAVE_INFO(slave, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args); \
printk(KERN_INFO "EtherCAT %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args); \
} while (0)
#else
#define EC_SLAVE_INFO(slave, fmt, args...) \
printk(KERN_INFO "EtherCAT %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args)
#endif
/** Convenience macro for printing slave-specific errors to syslog.
*
@ -73,9 +83,19 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_SLAVE_ERR(slave, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT ERROR %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args); \
printk(KERN_ERR "EtherCAT ERROR %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args); \
} while (0)
#else
#define EC_SLAVE_ERR(slave, fmt, args...) \
printk(KERN_ERR "EtherCAT ERROR %u-%u: " fmt, slave->master->index, \
slave->ring_position, ##args)
#endif
/** Convenience macro for printing slave-specific warnings to syslog.
*
@ -87,9 +107,19 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_SLAVE_WARN(slave, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT WARNING %u-%u: " fmt, \
slave->master->index, slave->ring_position, ##args); \
printk(KERN_WARNING "EtherCAT WARNING %u-%u: " fmt, \
slave->master->index, slave->ring_position, ##args); \
} while (0)
#else
#define EC_SLAVE_WARN(slave, fmt, args...) \
printk(KERN_WARNING "EtherCAT WARNING %u-%u: " fmt, \
slave->master->index, slave->ring_position, ##args)
#endif
/** Convenience macro for printing slave-specific debug messages to syslog.
*
@ -101,6 +131,17 @@
* \param fmt format string (like in printf())
* \param args arguments (optional)
*/
#ifdef USE_TRACE_PRINTK
#define EC_SLAVE_DBG(slave, level, fmt, args...) \
do { \
__trace_printk(_THIS_IP_,"EtherCAT DEBUG%u %u-%u: " fmt, \
level,slave->master->index, slave->ring_position, ##args); \
if (slave->master->debug_level >= level) { \
printk(KERN_DEBUG "EtherCAT DEBUG %u-%u: " fmt, \
slave->master->index, slave->ring_position, ##args); \
} \
} while (0)
#else
#define EC_SLAVE_DBG(slave, level, fmt, args...) \
do { \
if (slave->master->debug_level >= level) { \
@ -108,6 +149,7 @@
slave->master->index, slave->ring_position, ##args); \
} \
} while (0)
#endif
/*****************************************************************************/