xref: /kernel/linux/linux-6.6/drivers/base/trace.h (revision 62306a36)
162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Device core Trace Support
462306a36Sopenharmony_ci * Copyright (C) 2021, Intel Corporation
562306a36Sopenharmony_ci *
662306a36Sopenharmony_ci * Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#undef TRACE_SYSTEM
1062306a36Sopenharmony_ci#define TRACE_SYSTEM dev
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#if !defined(__DEV_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
1362306a36Sopenharmony_ci#define __DEV_TRACE_H
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/device.h>
1662306a36Sopenharmony_ci#include <linux/tracepoint.h>
1762306a36Sopenharmony_ci#include <linux/types.h>
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciDECLARE_EVENT_CLASS(devres,
2062306a36Sopenharmony_ci	TP_PROTO(struct device *dev, const char *op, void *node, const char *name, size_t size),
2162306a36Sopenharmony_ci	TP_ARGS(dev, op, node, name, size),
2262306a36Sopenharmony_ci	TP_STRUCT__entry(
2362306a36Sopenharmony_ci		__string(devname, dev_name(dev))
2462306a36Sopenharmony_ci		__field(struct device *, dev)
2562306a36Sopenharmony_ci		__field(const char *, op)
2662306a36Sopenharmony_ci		__field(void *, node)
2762306a36Sopenharmony_ci		__field(const char *, name)
2862306a36Sopenharmony_ci		__field(size_t, size)
2962306a36Sopenharmony_ci	),
3062306a36Sopenharmony_ci	TP_fast_assign(
3162306a36Sopenharmony_ci		__assign_str(devname, dev_name(dev));
3262306a36Sopenharmony_ci		__entry->op = op;
3362306a36Sopenharmony_ci		__entry->node = node;
3462306a36Sopenharmony_ci		__entry->name = name;
3562306a36Sopenharmony_ci		__entry->size = size;
3662306a36Sopenharmony_ci	),
3762306a36Sopenharmony_ci	TP_printk("%s %3s %p %s (%zu bytes)", __get_str(devname),
3862306a36Sopenharmony_ci		  __entry->op, __entry->node, __entry->name, __entry->size)
3962306a36Sopenharmony_ci);
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciDEFINE_EVENT(devres, devres_log,
4262306a36Sopenharmony_ci	TP_PROTO(struct device *dev, const char *op, void *node, const char *name, size_t size),
4362306a36Sopenharmony_ci	TP_ARGS(dev, op, node, name, size)
4462306a36Sopenharmony_ci);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif /* __DEV_TRACE_H */
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci/* this part has to be here */
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
5162306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
5462306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci#include <trace/define_trace.h>
57