X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Flock.h;h=8c1389dfa65d96ce660fcbe0e7ec9a78014e4e77;hb=13ab8b0a749053960f81a4924a3ed27775518f94;hp=75101f69e22972404ea5cbe23af6c7d7ea6a7391;hpb=b283666ff19841a28b0448c6a867beb2f809f11a;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/lock.h b/instrumentation/events/lttng-module/lock.h index 75101f69..8c1389df 100644 --- a/instrumentation/events/lttng-module/lock.h +++ b/instrumentation/events/lttng-module/lock.h @@ -1,5 +1,15 @@ +#include + #undef TRACE_SYSTEM +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,33)) #define TRACE_SYSTEM lock +#else +#define TRACE_SYSTEM lockdep +#define TRACE_INCLUDE_FILE lock +#if defined(_TRACE_LOCKDEP_H) +#define _TRACE_LOCK_H +#endif +#endif #if !defined(_TRACE_LOCK_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_LOCK_H @@ -20,21 +30,31 @@ TRACE_EVENT(lock_acquire, TP_STRUCT__entry( __field(unsigned int, flags) __string(name, lock->name) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) __field(void *, lockdep_addr) +#endif ), TP_fast_assign( - tp_assign(flags, (trylock ? 1 : 0) | (read ? 2 : 0)); - tp_strcpy(name, lock->name); - tp_assign(lockdep_addr, lock); + tp_assign(flags, (trylock ? 1 : 0) | (read ? 2 : 0)) + tp_strcpy(name, lock->name) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + tp_assign(lockdep_addr, lock) +#endif ), +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) TP_printk("%p %s%s%s", __entry->lockdep_addr, +#else + TP_printk("%s%s%s", +#endif (__entry->flags & 1) ? "try " : "", (__entry->flags & 2) ? "read " : "", __get_str(name)) ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) + DECLARE_EVENT_CLASS(lock, TP_PROTO(struct lockdep_map *lock, unsigned long ip), @@ -47,8 +67,8 @@ DECLARE_EVENT_CLASS(lock, ), TP_fast_assign( - tp_strcpy(name, lock->name); - tp_assign(lockdep_addr, lock); + tp_strcpy(name, lock->name) + tp_assign(lockdep_addr, lock) ), TP_printk("%p %s", __entry->lockdep_addr, __get_str(name)) @@ -78,6 +98,107 @@ DEFINE_EVENT(lock, lock_acquired, ) #endif + +#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */ + +TRACE_EVENT(lock_release, + + TP_PROTO(struct lockdep_map *lock, int nested, unsigned long ip), + + TP_ARGS(lock, nested, ip), + + TP_STRUCT__entry( + __string( name, lock->name ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + __field( void *, lockdep_addr ) +#endif + ), + + TP_fast_assign( + tp_strcpy(name, lock->name) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + tp_assign(lockdep_addr, lock) +#endif + ), + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + TP_printk("%p %s", __entry->lockdep_addr, __get_str(name)) +#else + TP_printk("%s", __get_str(name)) +#endif +) + +#ifdef CONFIG_LOCK_STAT + +TRACE_EVENT(lock_contended, + + TP_PROTO(struct lockdep_map *lock, unsigned long ip), + + TP_ARGS(lock, ip), + + TP_STRUCT__entry( + __string( name, lock->name ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + __field( void *, lockdep_addr ) +#endif + ), + + TP_fast_assign( + tp_strcpy(name, lock->name) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + tp_assign(lockdep_addr, lock) +#endif + ), + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + TP_printk("%p %s", __entry->lockdep_addr, __get_str(name)) +#else + TP_printk("%s", __get_str(name)) +#endif +) + +TRACE_EVENT(lock_acquired, + + TP_PROTO(struct lockdep_map *lock, unsigned long ip, s64 waittime), + + TP_ARGS(lock, ip, waittime), + + TP_STRUCT__entry( + __string( name, lock->name ) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + __field( s64, wait_nsec ) + __field( void *, lockdep_addr ) +#else + __field(unsigned long, wait_usec) + __field(unsigned long, wait_nsec_rem) +#endif + ), + + TP_fast_assign( + tp_strcpy(name, lock->name) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + tp_assign(wait_nsec, waittime) + tp_assign(lockdep_addr, lock) +#else + tp_assign(wait_usec, (unsigned long)waittime) + tp_assign(wait_nsec_rem, do_div(waittime, NSEC_PER_USEC)) +#endif + ), + +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34)) + TP_printk("%p %s (%llu ns)", __entry->lockdep_addr, + __get_str(name), __entry->wait_nsec) +#else + TP_printk("%s (%lu.%03lu us)", + __get_str(name), + __entry->wait_usec, __entry->wait_nsec_rem) +#endif +) + +#endif + +#endif /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35)) */ + #endif #endif /* _TRACE_LOCK_H */