new file mode 100644
@@ -0,0 +1,32 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM damon
+
+#if !defined(_TRACE_DAMON_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_DAMON_H
+
+#include <linux/types.h>
+#include <linux/tracepoint.h>
+
+TRACE_EVENT(damon_write_rbuf,
+
+ TP_PROTO(void *buf, const ssize_t sz),
+
+ TP_ARGS(buf, sz),
+
+ TP_STRUCT__entry(
+ __dynamic_array(char, buf, sz)
+ ),
+
+ TP_fast_assign(
+ memcpy(__get_dynamic_array(buf), buf, sz);
+ ),
+
+ TP_printk("dat=%s", __print_hex(__get_dynamic_array(buf),
+ __get_dynamic_array_len(buf)))
+);
+
+#endif /* _TRACE_DAMON_H */
+
+/* This part must be outside protection */
+#include <trace/define_trace.h>
@@ -9,6 +9,8 @@
#define pr_fmt(fmt) "damon: " fmt
+#define CREATE_TRACE_POINTS
+
#include <linux/damon.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
@@ -20,6 +22,7 @@
#include <linux/sched/mm.h>
#include <linux/sched/task.h>
#include <linux/slab.h>
+#include <trace/events/damon.h>
#define damon_get_task_struct(t) \
(get_pid_task(find_vpid(t->pid), PIDTYPE_PID))
@@ -553,6 +556,7 @@ static void damon_flush_rbuffer(struct damon_ctx *ctx)
*/
static void damon_write_rbuf(struct damon_ctx *ctx, void *data, ssize_t size)
{
+ trace_damon_write_rbuf(data, size);
if (!ctx->rbuf_len || !ctx->rbuf)
return;
if (ctx->rbuf_offset + size > ctx->rbuf_len)