2013-06-12 20:52:10 +03:00
/*
* Copyright ( c ) 2005 - 2011 Atheros Communications Inc .
* Copyright ( c ) 2011 - 2013 Qualcomm Atheros , Inc .
*
* Permission to use , copy , modify , and / or distribute this software for any
* purpose with or without fee is hereby granted , provided that the above
* copyright notice and this permission notice appear in all copies .
*
* THE SOFTWARE IS PROVIDED " AS IS " AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS . IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL , DIRECT , INDIRECT , OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE , DATA OR PROFITS , WHETHER IN AN
* ACTION OF CONTRACT , NEGLIGENCE OR OTHER TORTIOUS ACTION , ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE .
*/
# if !defined(_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)
# include <linux/tracepoint.h>
2014-09-02 11:00:21 +03:00
# include "core.h"
2013-06-12 20:52:10 +03:00
2014-11-05 19:14:31 +05:30
# if !defined(_TRACE_H_)
2015-04-10 13:02:28 +00:00
static inline u32 ath10k_frm_hdr_len ( const void * buf , size_t len )
2014-11-05 19:14:31 +05:30
{
2014-11-27 08:42:11 +01:00
const struct ieee80211_hdr * hdr = buf ;
2015-04-10 13:02:28 +00:00
/* In some rare cases (e.g. fcs error) device reports frame buffer
* shorter than what frame header implies ( e . g . len = 0 ) . The buffer
* can still be accessed so do a simple min ( ) to guarantee caller
* doesn ' t get value greater than len .
*/
return min_t ( u32 , len , ieee80211_hdrlen ( hdr - > frame_control ) ) ;
2014-11-05 19:14:31 +05:30
}
# endif
2013-06-12 20:52:10 +03:00
# define _TRACE_H_
/* create empty functions when tracing is disabled */
# if !defined(CONFIG_ATH10K_TRACING)
# undef TRACE_EVENT
# define TRACE_EVENT(name, proto, ...) \
static inline void trace_ # # name ( proto ) { }
# undef DECLARE_EVENT_CLASS
# define DECLARE_EVENT_CLASS(...)
# undef DEFINE_EVENT
# define DEFINE_EVENT(evt_class, name, proto, ...) \
static inline void trace_ # # name ( proto ) { }
# endif /* !CONFIG_ATH10K_TRACING || __CHECKER__ */
# undef TRACE_SYSTEM
# define TRACE_SYSTEM ath10k
2015-04-01 22:53:19 +03:00
# define ATH10K_MSG_MAX 400
2013-06-12 20:52:10 +03:00
DECLARE_EVENT_CLASS ( ath10k_log_event ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , struct va_format * vaf ) ,
TP_ARGS ( ar , vaf ) ,
2013-06-12 20:52:10 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-06-12 20:52:10 +03:00
__dynamic_array ( char , msg , ATH10K_MSG_MAX )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-06-12 20:52:10 +03:00
WARN_ON_ONCE ( vsnprintf ( __get_dynamic_array ( msg ) ,
ATH10K_MSG_MAX ,
vaf - > fmt ,
* vaf - > va ) > = ATH10K_MSG_MAX ) ;
) ,
2014-09-02 11:00:21 +03:00
TP_printk (
" %s %s %s " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__get_str ( msg )
)
2013-06-12 20:52:10 +03:00
) ;
DEFINE_EVENT ( ath10k_log_event , ath10k_log_err ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , struct va_format * vaf ) ,
TP_ARGS ( ar , vaf )
2013-06-12 20:52:10 +03:00
) ;
DEFINE_EVENT ( ath10k_log_event , ath10k_log_warn ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , struct va_format * vaf ) ,
TP_ARGS ( ar , vaf )
2013-06-12 20:52:10 +03:00
) ;
DEFINE_EVENT ( ath10k_log_event , ath10k_log_info ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , struct va_format * vaf ) ,
TP_ARGS ( ar , vaf )
2013-06-12 20:52:10 +03:00
) ;
TRACE_EVENT ( ath10k_log_dbg ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , unsigned int level , struct va_format * vaf ) ,
TP_ARGS ( ar , level , vaf ) ,
2013-06-12 20:52:10 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-06-12 20:52:10 +03:00
__field ( unsigned int , level )
__dynamic_array ( char , msg , ATH10K_MSG_MAX )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-06-12 20:52:10 +03:00
__entry - > level = level ;
WARN_ON_ONCE ( vsnprintf ( __get_dynamic_array ( msg ) ,
ATH10K_MSG_MAX ,
vaf - > fmt ,
* vaf - > va ) > = ATH10K_MSG_MAX ) ;
) ,
2014-09-02 11:00:21 +03:00
TP_printk (
" %s %s %s " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__get_str ( msg )
)
2013-06-12 20:52:10 +03:00
) ;
TRACE_EVENT ( ath10k_log_dbg_dump ,
2014-09-02 11:00:21 +03:00
TP_PROTO ( struct ath10k * ar , const char * msg , const char * prefix ,
2013-06-12 20:52:10 +03:00
const void * buf , size_t buf_len ) ,
2014-09-02 11:00:21 +03:00
TP_ARGS ( ar , msg , prefix , buf , buf_len ) ,
2013-06-12 20:52:10 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-06-12 20:52:10 +03:00
__string ( msg , msg )
__string ( prefix , prefix )
__field ( size_t , buf_len )
__dynamic_array ( u8 , buf , buf_len )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-06-12 20:52:10 +03:00
__assign_str ( msg , msg ) ;
__assign_str ( prefix , prefix ) ;
__entry - > buf_len = buf_len ;
memcpy ( __get_dynamic_array ( buf ) , buf , buf_len ) ;
) ,
TP_printk (
2014-09-02 11:00:21 +03:00
" %s %s %s/%s \n " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__get_str ( prefix ) ,
__get_str ( msg )
2013-06-12 20:52:10 +03:00
)
) ;
TRACE_EVENT ( ath10k_wmi_cmd ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , int id , const void * buf , size_t buf_len ,
int ret ) ,
2013-06-12 20:52:10 +03:00
2014-09-02 11:00:21 +03:00
TP_ARGS ( ar , id , buf , buf_len , ret ) ,
2013-06-12 20:52:10 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-06-12 20:52:10 +03:00
__field ( unsigned int , id )
__field ( size_t , buf_len )
__dynamic_array ( u8 , buf , buf_len )
2013-09-19 09:44:09 +02:00
__field ( int , ret )
2013-06-12 20:52:10 +03:00
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-06-12 20:52:10 +03:00
__entry - > id = id ;
__entry - > buf_len = buf_len ;
2013-09-13 14:16:54 +02:00
__entry - > ret = ret ;
2013-06-12 20:52:10 +03:00
memcpy ( __get_dynamic_array ( buf ) , buf , buf_len ) ;
) ,
TP_printk (
2014-09-02 11:00:21 +03:00
" %s %s id %d len %zu ret %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
2013-06-12 20:52:10 +03:00
__entry - > id ,
2013-09-13 14:16:54 +02:00
__entry - > buf_len ,
__entry - > ret
2013-06-12 20:52:10 +03:00
)
) ;
TRACE_EVENT ( ath10k_wmi_event ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , int id , const void * buf , size_t buf_len ) ,
2013-06-12 20:52:10 +03:00
2014-09-02 11:00:21 +03:00
TP_ARGS ( ar , id , buf , buf_len ) ,
2013-06-12 20:52:10 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-06-12 20:52:10 +03:00
__field ( unsigned int , id )
__field ( size_t , buf_len )
__dynamic_array ( u8 , buf , buf_len )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-06-12 20:52:10 +03:00
__entry - > id = id ;
__entry - > buf_len = buf_len ;
memcpy ( __get_dynamic_array ( buf ) , buf , buf_len ) ;
) ,
TP_printk (
2014-09-02 11:00:21 +03:00
" %s %s id %d len %zu " ,
__get_str ( driver ) ,
__get_str ( device ) ,
2013-06-12 20:52:10 +03:00
__entry - > id ,
__entry - > buf_len
)
) ;
2013-09-03 11:43:55 +03:00
TRACE_EVENT ( ath10k_htt_stats ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * buf , size_t buf_len ) ,
2013-09-03 11:43:55 +03:00
2014-09-02 11:00:21 +03:00
TP_ARGS ( ar , buf , buf_len ) ,
2013-09-03 11:43:55 +03:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2013-09-03 11:43:55 +03:00
__field ( size_t , buf_len )
__dynamic_array ( u8 , buf , buf_len )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2013-09-03 11:43:55 +03:00
__entry - > buf_len = buf_len ;
memcpy ( __get_dynamic_array ( buf ) , buf , buf_len ) ;
) ,
TP_printk (
2014-09-02 11:00:21 +03:00
" %s %s len %zu " ,
__get_str ( driver ) ,
__get_str ( device ) ,
2013-09-03 11:43:55 +03:00
__entry - > buf_len
)
) ;
2014-01-03 12:59:26 +02:00
TRACE_EVENT ( ath10k_wmi_dbglog ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * buf , size_t buf_len ) ,
2014-01-03 12:59:26 +02:00
2014-09-02 11:00:21 +03:00
TP_ARGS ( ar , buf , buf_len ) ,
2014-01-03 12:59:26 +02:00
TP_STRUCT__entry (
2014-09-02 11:00:21 +03:00
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
2014-01-03 12:59:26 +02:00
__field ( size_t , buf_len )
__dynamic_array ( u8 , buf , buf_len )
) ,
TP_fast_assign (
2014-09-02 11:00:21 +03:00
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2014-01-03 12:59:26 +02:00
__entry - > buf_len = buf_len ;
memcpy ( __get_dynamic_array ( buf ) , buf , buf_len ) ;
) ,
TP_printk (
2014-09-02 11:00:21 +03:00
" %s %s len %zu " ,
__get_str ( driver ) ,
__get_str ( device ) ,
2014-01-03 12:59:26 +02:00
__entry - > buf_len
)
) ;
2014-10-03 08:02:40 +03:00
TRACE_EVENT ( ath10k_htt_pktlog ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * buf , u16 buf_len ) ,
2014-10-03 08:02:40 +03:00
TP_ARGS ( ar , buf , buf_len ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u16 , buf_len )
__dynamic_array ( u8 , pktlog , buf_len )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > buf_len = buf_len ;
memcpy ( __get_dynamic_array ( pktlog ) , buf , buf_len ) ;
) ,
TP_printk (
" %s %s size %hu " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > buf_len
)
) ;
2014-10-03 08:02:54 +03:00
TRACE_EVENT ( ath10k_htt_tx ,
TP_PROTO ( struct ath10k * ar , u16 msdu_id , u16 msdu_len ,
u8 vdev_id , u8 tid ) ,
TP_ARGS ( ar , msdu_id , msdu_len , vdev_id , tid ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u16 , msdu_id )
__field ( u16 , msdu_len )
__field ( u8 , vdev_id )
__field ( u8 , tid )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > msdu_id = msdu_id ;
__entry - > msdu_len = msdu_len ;
__entry - > vdev_id = vdev_id ;
__entry - > tid = tid ;
) ,
TP_printk (
" %s %s msdu_id %d msdu_len %d vdev_id %d tid %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > msdu_id ,
__entry - > msdu_len ,
__entry - > vdev_id ,
__entry - > tid
)
) ;
TRACE_EVENT ( ath10k_txrx_tx_unref ,
TP_PROTO ( struct ath10k * ar , u16 msdu_id ) ,
TP_ARGS ( ar , msdu_id ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u16 , msdu_id )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > msdu_id = msdu_id ;
) ,
TP_printk (
" %s %s msdu_id %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > msdu_id
)
) ;
2014-10-06 22:39:06 +05:30
2014-11-05 19:14:31 +05:30
DECLARE_EVENT_CLASS ( ath10k_hdr_event ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-10-06 22:39:06 +05:30
TP_ARGS ( ar , data , len ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( size_t , len )
2015-04-10 13:02:28 +00:00
__dynamic_array ( u8 , data , ath10k_frm_hdr_len ( data , len ) )
2014-10-06 22:39:06 +05:30
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2015-04-10 13:02:28 +00:00
__entry - > len = ath10k_frm_hdr_len ( data , len ) ;
2014-11-05 19:14:31 +05:30
memcpy ( __get_dynamic_array ( data ) , data , __entry - > len ) ;
2014-10-06 22:39:06 +05:30
) ,
TP_printk (
" %s %s len %zu \n " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > len
)
) ;
2014-11-05 19:14:31 +05:30
DECLARE_EVENT_CLASS ( ath10k_payload_event ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-11-05 19:14:31 +05:30
TP_ARGS ( ar , data , len ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( size_t , len )
2015-04-10 13:02:28 +00:00
__dynamic_array ( u8 , payload , ( len -
ath10k_frm_hdr_len ( data , len ) ) )
2014-11-05 19:14:31 +05:30
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
2015-04-10 13:02:28 +00:00
__entry - > len = len - ath10k_frm_hdr_len ( data , len ) ;
2014-11-05 19:14:31 +05:30
memcpy ( __get_dynamic_array ( payload ) ,
2015-04-10 13:02:28 +00:00
data + ath10k_frm_hdr_len ( data , len ) , __entry - > len ) ;
2014-11-05 19:14:31 +05:30
) ,
TP_printk (
" %s %s len %zu \n " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > len
)
2014-10-06 22:39:06 +05:30
) ;
2014-11-05 19:14:31 +05:30
DEFINE_EVENT ( ath10k_hdr_event , ath10k_tx_hdr ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-10-06 22:39:06 +05:30
TP_ARGS ( ar , data , len )
) ;
2014-11-05 19:14:31 +05:30
DEFINE_EVENT ( ath10k_payload_event , ath10k_tx_payload ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-10-06 22:39:06 +05:30
TP_ARGS ( ar , data , len )
) ;
2014-11-05 19:14:31 +05:30
DEFINE_EVENT ( ath10k_hdr_event , ath10k_rx_hdr ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-10-06 22:39:06 +05:30
TP_ARGS ( ar , data , len )
) ;
2014-10-23 17:04:28 +03:00
2014-11-05 19:14:31 +05:30
DEFINE_EVENT ( ath10k_payload_event , ath10k_rx_payload ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-10-23 17:04:28 +03:00
TP_ARGS ( ar , data , len )
) ;
2014-11-05 19:14:31 +05:30
TRACE_EVENT ( ath10k_htt_rx_desc ,
2014-11-27 08:42:11 +01:00
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
2014-11-05 19:14:31 +05:30
TP_ARGS ( ar , data , len ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u16 , len )
__dynamic_array ( u8 , rxdesc , len )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > len = len ;
memcpy ( __get_dynamic_array ( rxdesc ) , data , len ) ;
) ,
TP_printk (
" %s %s rxdesc len %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > len
)
) ;
2015-01-24 12:14:47 +02:00
TRACE_EVENT ( ath10k_wmi_diag_container ,
TP_PROTO ( struct ath10k * ar ,
u8 type ,
u32 timestamp ,
u32 code ,
u16 len ,
const void * data ) ,
TP_ARGS ( ar , type , timestamp , code , len , data ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u8 , type )
__field ( u32 , timestamp )
__field ( u32 , code )
__field ( u16 , len )
__dynamic_array ( u8 , data , len )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > type = type ;
__entry - > timestamp = timestamp ;
__entry - > code = code ;
__entry - > len = len ;
memcpy ( __get_dynamic_array ( data ) , data , len ) ;
) ,
TP_printk (
" %s %s diag container type %hhu timestamp %u code %u len %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > type ,
__entry - > timestamp ,
__entry - > code ,
__entry - > len
)
) ;
2015-01-24 12:14:47 +02:00
TRACE_EVENT ( ath10k_wmi_diag ,
TP_PROTO ( struct ath10k * ar , const void * data , size_t len ) ,
TP_ARGS ( ar , data , len ) ,
TP_STRUCT__entry (
__string ( device , dev_name ( ar - > dev ) )
__string ( driver , dev_driver_string ( ar - > dev ) )
__field ( u16 , len )
__dynamic_array ( u8 , data , len )
) ,
TP_fast_assign (
__assign_str ( device , dev_name ( ar - > dev ) ) ;
__assign_str ( driver , dev_driver_string ( ar - > dev ) ) ;
__entry - > len = len ;
memcpy ( __get_dynamic_array ( data ) , data , len ) ;
) ,
TP_printk (
" %s %s tlv diag len %d " ,
__get_str ( driver ) ,
__get_str ( device ) ,
__entry - > len
)
) ;
2013-06-12 20:52:10 +03:00
# endif /* _TRACE_H_ || TRACE_HEADER_MULTI_READ*/
/* we don't want to use include/trace/events */
# undef TRACE_INCLUDE_PATH
# define TRACE_INCLUDE_PATH .
# undef TRACE_INCLUDE_FILE
# define TRACE_INCLUDE_FILE trace
/* This part must be outside protection */
# include <trace/define_trace.h>