X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=instrumentation%2Fevents%2Flttng-module%2Flock.h;h=8c1389dfa65d96ce660fcbe0e7ec9a78014e4e77;hb=7c68b363332170e4db100327ecc9e09b8a79cf29;hp=e2c1c7a4a310792f5f687784a6da06b2a6e7e571;hpb=83788d81815146024200cba5aa46c705a05d6b99;p=lttng-modules.git diff --git a/instrumentation/events/lttng-module/lock.h b/instrumentation/events/lttng-module/lock.h index e2c1c7a4..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) +#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), @@ -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 */