2009-07-13 06:33:21 +04:00
# undef TRACE_SYSTEM
2009-11-13 12:06:34 +03:00
# define TRACE_SYSTEM lock
2009-07-13 06:33:21 +04:00
2009-11-13 12:06:34 +03:00
# if !defined(_TRACE_LOCK_H) || defined(TRACE_HEADER_MULTI_READ)
# define _TRACE_LOCK_H
2009-03-04 14:32:55 +03:00
# include <linux/lockdep.h>
# include <linux/tracepoint.h>
2009-04-10 16:54:16 +04:00
# ifdef CONFIG_LOCKDEP
2009-04-24 19:05:52 +04:00
TRACE_EVENT ( lock_acquire ,
2009-04-10 16:54:16 +04:00
TP_PROTO ( struct lockdep_map * lock , unsigned int subclass ,
int trylock , int read , int check ,
struct lockdep_map * next_lock , unsigned long ip ) ,
2009-04-24 19:05:52 +04:00
2009-04-10 16:54:16 +04:00
TP_ARGS ( lock , subclass , trylock , read , check , next_lock , ip ) ,
2009-04-24 19:05:52 +04:00
TP_STRUCT__entry (
__field ( unsigned int , flags )
__string ( name , lock - > name )
2010-01-30 14:43:32 +03:00
__field ( void * , lockdep_addr )
2009-04-24 19:05:52 +04:00
) ,
TP_fast_assign (
__entry - > flags = ( trylock ? 1 : 0 ) | ( read ? 2 : 0 ) ;
__assign_str ( name , lock - > name ) ;
2010-01-30 14:43:32 +03:00
__entry - > lockdep_addr = lock ;
2009-04-24 19:05:52 +04:00
) ,
2010-01-30 14:43:32 +03:00
TP_printk ( " %p %s%s%s " , __entry - > lockdep_addr ,
( __entry - > flags & 1 ) ? " try " : " " ,
2009-04-24 19:05:52 +04:00
( __entry - > flags & 2 ) ? " read " : " " ,
__get_str ( name ) )
) ;
2010-05-08 08:36:02 +04:00
DECLARE_EVENT_CLASS ( lock ,
2009-04-24 19:05:52 +04:00
2010-05-08 08:24:25 +04:00
TP_PROTO ( struct lockdep_map * lock , unsigned long ip ) ,
2009-04-24 19:05:52 +04:00
2010-05-08 08:24:25 +04:00
TP_ARGS ( lock , ip ) ,
2009-04-24 19:05:52 +04:00
TP_STRUCT__entry (
2010-05-08 08:36:02 +04:00
__string ( name , lock - > name )
__field ( void * , lockdep_addr )
2009-04-24 19:05:52 +04:00
) ,
TP_fast_assign (
__assign_str ( name , lock - > name ) ;
2010-01-30 14:43:32 +03:00
__entry - > lockdep_addr = lock ;
2009-04-24 19:05:52 +04:00
) ,
2010-05-08 08:36:02 +04:00
TP_printk ( " %p %s " , __entry - > lockdep_addr , __get_str ( name ) )
2009-04-24 19:05:52 +04:00
) ;
2009-04-10 16:54:16 +04:00
2010-05-08 08:36:02 +04:00
DEFINE_EVENT ( lock , lock_release ,
2009-04-24 19:05:52 +04:00
2009-04-10 16:54:16 +04:00
TP_PROTO ( struct lockdep_map * lock , unsigned long ip ) ,
2009-04-24 19:05:52 +04:00
2010-05-08 08:36:02 +04:00
TP_ARGS ( lock , ip )
) ;
2009-04-24 19:05:52 +04:00
2010-05-08 08:36:02 +04:00
# ifdef CONFIG_LOCK_STAT
2009-04-24 19:05:52 +04:00
2010-05-08 08:36:02 +04:00
DEFINE_EVENT ( lock , lock_contended ,
2009-04-10 16:54:16 +04:00
2010-05-08 08:16:11 +04:00
TP_PROTO ( struct lockdep_map * lock , unsigned long ip ) ,
2009-04-10 16:54:16 +04:00
2010-05-08 08:36:02 +04:00
TP_ARGS ( lock , ip )
) ;
2009-04-10 16:54:16 +04:00
2010-05-08 08:36:02 +04:00
DEFINE_EVENT ( lock , lock_acquired ,
2010-01-30 14:43:32 +03:00
2010-05-08 08:36:02 +04:00
TP_PROTO ( struct lockdep_map * lock , unsigned long ip ) ,
TP_ARGS ( lock , ip )
2009-04-10 16:54:16 +04:00
) ;
2009-03-04 14:32:55 +03:00
# endif
2009-04-10 16:54:16 +04:00
# endif
2009-11-13 12:06:34 +03:00
# endif /* _TRACE_LOCK_H */
2009-04-10 17:36:00 +04:00
/* This part must be outside protection */
# include <trace/define_trace.h>