12fcb9362SSeongJae Park /* SPDX-License-Identifier: GPL-2.0 */ 22fcb9362SSeongJae Park #undef TRACE_SYSTEM 32fcb9362SSeongJae Park #define TRACE_SYSTEM damon 42fcb9362SSeongJae Park 52fcb9362SSeongJae Park #if !defined(_TRACE_DAMON_H) || defined(TRACE_HEADER_MULTI_READ) 62fcb9362SSeongJae Park #define _TRACE_DAMON_H 72fcb9362SSeongJae Park 82fcb9362SSeongJae Park #include <linux/damon.h> 92fcb9362SSeongJae Park #include <linux/types.h> 102fcb9362SSeongJae Park #include <linux/tracepoint.h> 112fcb9362SSeongJae Park 12c603c630SSeongJae Park TRACE_EVENT_CONDITION(damos_before_apply, 13c603c630SSeongJae Park 14c603c630SSeongJae Park TP_PROTO(unsigned int context_idx, unsigned int scheme_idx, 15c603c630SSeongJae Park unsigned int target_idx, struct damon_region *r, 16c603c630SSeongJae Park unsigned int nr_regions, bool do_trace), 17c603c630SSeongJae Park 18c603c630SSeongJae Park TP_ARGS(context_idx, target_idx, scheme_idx, r, nr_regions, do_trace), 19c603c630SSeongJae Park 20c603c630SSeongJae Park TP_CONDITION(do_trace), 21c603c630SSeongJae Park 22c603c630SSeongJae Park TP_STRUCT__entry( 23c603c630SSeongJae Park __field(unsigned int, context_idx) 24c603c630SSeongJae Park __field(unsigned int, scheme_idx) 25c603c630SSeongJae Park __field(unsigned long, target_idx) 26c603c630SSeongJae Park __field(unsigned long, start) 27c603c630SSeongJae Park __field(unsigned long, end) 28c603c630SSeongJae Park __field(unsigned int, nr_accesses) 29c603c630SSeongJae Park __field(unsigned int, age) 30c603c630SSeongJae Park __field(unsigned int, nr_regions) 31c603c630SSeongJae Park ), 32c603c630SSeongJae Park 33c603c630SSeongJae Park TP_fast_assign( 34c603c630SSeongJae Park __entry->context_idx = context_idx; 35c603c630SSeongJae Park __entry->scheme_idx = scheme_idx; 36c603c630SSeongJae Park __entry->target_idx = target_idx; 37c603c630SSeongJae Park __entry->start = r->ar.start; 38c603c630SSeongJae Park __entry->end = r->ar.end; 39*a72217adSSeongJae Park __entry->nr_accesses = r->nr_accesses_bp / 10000; 40c603c630SSeongJae Park __entry->age = r->age; 41c603c630SSeongJae Park __entry->nr_regions = nr_regions; 42c603c630SSeongJae Park ), 43c603c630SSeongJae Park 44c603c630SSeongJae Park TP_printk("ctx_idx=%u scheme_idx=%u target_idx=%lu nr_regions=%u %lu-%lu: %u %u", 45c603c630SSeongJae Park __entry->context_idx, __entry->scheme_idx, 46c603c630SSeongJae Park __entry->target_idx, __entry->nr_regions, 47c603c630SSeongJae Park __entry->start, __entry->end, 48c603c630SSeongJae Park __entry->nr_accesses, __entry->age) 49c603c630SSeongJae Park ); 50c603c630SSeongJae Park 512fcb9362SSeongJae Park TRACE_EVENT(damon_aggregated, 522fcb9362SSeongJae Park 532d00946bSSeongJae Park TP_PROTO(unsigned int target_id, struct damon_region *r, 542d00946bSSeongJae Park unsigned int nr_regions), 552fcb9362SSeongJae Park 562d00946bSSeongJae Park TP_ARGS(target_id, r, nr_regions), 572fcb9362SSeongJae Park 582fcb9362SSeongJae Park TP_STRUCT__entry( 592fcb9362SSeongJae Park __field(unsigned long, target_id) 602fcb9362SSeongJae Park __field(unsigned int, nr_regions) 612fcb9362SSeongJae Park __field(unsigned long, start) 622fcb9362SSeongJae Park __field(unsigned long, end) 632fcb9362SSeongJae Park __field(unsigned int, nr_accesses) 64c46b0bb6SXin Hao __field(unsigned int, age) 652fcb9362SSeongJae Park ), 662fcb9362SSeongJae Park 672fcb9362SSeongJae Park TP_fast_assign( 6876fd0285SSeongJae Park __entry->target_id = target_id; 692fcb9362SSeongJae Park __entry->nr_regions = nr_regions; 702fcb9362SSeongJae Park __entry->start = r->ar.start; 712fcb9362SSeongJae Park __entry->end = r->ar.end; 722fcb9362SSeongJae Park __entry->nr_accesses = r->nr_accesses; 73c46b0bb6SXin Hao __entry->age = r->age; 742fcb9362SSeongJae Park ), 752fcb9362SSeongJae Park 76c46b0bb6SXin Hao TP_printk("target_id=%lu nr_regions=%u %lu-%lu: %u %u", 772fcb9362SSeongJae Park __entry->target_id, __entry->nr_regions, 78c46b0bb6SXin Hao __entry->start, __entry->end, 79c46b0bb6SXin Hao __entry->nr_accesses, __entry->age) 802fcb9362SSeongJae Park ); 812fcb9362SSeongJae Park 822fcb9362SSeongJae Park #endif /* _TRACE_DAMON_H */ 832fcb9362SSeongJae Park 842fcb9362SSeongJae Park /* This part must be outside protection */ 852fcb9362SSeongJae Park #include <trace/define_trace.h> 86