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