2008-07-17 17:16:48 +02:00
/*
* Copyright IBM Corp . 2008
*
* Author : Jan Glauber ( jang @ linux . vnet . ibm . com )
*/
# ifndef QDIO_DEBUG_H
# define QDIO_DEBUG_H
# include <asm/debug.h>
# include <asm/qdio.h>
# include "qdio.h"
2008-12-25 13:38:46 +01:00
/* that gives us 15 characters in the text event views */
# define QDIO_DBF_LEN 16
extern debug_info_t * qdio_dbf_setup ;
extern debug_info_t * qdio_dbf_error ;
# define DBF_ERR 3 /* error conditions */
# define DBF_WARN 4 /* warning conditions */
# define DBF_INFO 6 /* informational */
# undef DBF_EVENT
# undef DBF_ERROR
# undef DBF_DEV_EVENT
# define DBF_EVENT(text...) \
2008-07-17 17:16:48 +02:00
do { \
2008-12-25 13:38:46 +01:00
char debug_buffer [ QDIO_DBF_LEN ] ; \
snprintf ( debug_buffer , QDIO_DBF_LEN , text ) ; \
debug_text_event ( qdio_dbf_setup , DBF_ERR , debug_buffer ) ; \
2008-07-17 17:16:48 +02:00
} while ( 0 )
2008-12-25 13:38:46 +01:00
2012-09-11 13:42:06 +02:00
static inline void DBF_HEX ( void * addr , int len )
{
while ( len > 0 ) {
debug_event ( qdio_dbf_setup , DBF_ERR , addr , len ) ;
len - = qdio_dbf_setup - > buf_size ;
addr + = qdio_dbf_setup - > buf_size ;
}
}
2008-07-17 17:16:48 +02:00
2008-12-25 13:38:46 +01:00
# define DBF_ERROR(text...) \
do { \
char debug_buffer [ QDIO_DBF_LEN ] ; \
snprintf ( debug_buffer , QDIO_DBF_LEN , text ) ; \
debug_text_event ( qdio_dbf_error , DBF_ERR , debug_buffer ) ; \
} while ( 0 )
2008-07-17 17:16:48 +02:00
2012-09-11 13:42:06 +02:00
static inline void DBF_ERROR_HEX ( void * addr , int len )
{
while ( len > 0 ) {
debug_event ( qdio_dbf_error , DBF_ERR , addr , len ) ;
len - = qdio_dbf_error - > buf_size ;
addr + = qdio_dbf_error - > buf_size ;
}
}
2008-07-17 17:16:48 +02:00
2008-12-25 13:38:46 +01:00
# define DBF_DEV_EVENT(level, device, text...) \
do { \
char debug_buffer [ QDIO_DBF_LEN ] ; \
2013-09-18 17:21:34 +02:00
if ( debug_level_enabled ( device - > debug_area , level ) ) { \
2008-12-25 13:38:46 +01:00
snprintf ( debug_buffer , QDIO_DBF_LEN , text ) ; \
debug_text_event ( device - > debug_area , level , debug_buffer ) ; \
} \
} while ( 0 )
2008-07-17 17:16:48 +02:00
2012-09-11 13:42:06 +02:00
static inline void DBF_DEV_HEX ( struct qdio_irq * dev , void * addr ,
int len , int level )
{
while ( len > 0 ) {
debug_event ( dev - > debug_area , level , addr , len ) ;
len - = dev - > debug_area - > buf_size ;
addr + = dev - > debug_area - > buf_size ;
}
}
2008-07-17 17:16:48 +02:00
2014-06-12 14:24:45 +02:00
int qdio_allocate_dbf ( struct qdio_initialize * init_data ,
2008-12-25 13:38:46 +01:00
struct qdio_irq * irq_ptr ) ;
2008-07-17 17:16:48 +02:00
void qdio_setup_debug_entries ( struct qdio_irq * irq_ptr ,
struct ccw_device * cdev ) ;
2013-02-26 13:08:34 +01:00
void qdio_shutdown_debug_entries ( struct qdio_irq * irq_ptr ) ;
2008-07-17 17:16:48 +02:00
int qdio_debug_init ( void ) ;
void qdio_debug_exit ( void ) ;
2008-12-25 13:38:46 +01:00
2008-07-17 17:16:48 +02:00
# endif