linux/include/trace/events/rpm.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2
   3#undef TRACE_SYSTEM
   4#define TRACE_SYSTEM rpm
   5
   6#if !defined(_TRACE_RUNTIME_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
   7#define _TRACE_RUNTIME_POWER_H
   8
   9#include <linux/ktime.h>
  10#include <linux/tracepoint.h>
  11
  12struct device;
  13
  14/*
  15 * The rpm_internal events are used for tracing some important
  16 * runtime pm internal functions.
  17 */
  18DECLARE_EVENT_CLASS(rpm_internal,
  19
  20        TP_PROTO(struct device *dev, int flags),
  21
  22        TP_ARGS(dev, flags),
  23
  24        TP_STRUCT__entry(
  25                __string(       name,           dev_name(dev)   )
  26                __field(        int,            flags           )
  27                __field(        int ,           usage_count     )
  28                __field(        int ,           disable_depth   )
  29                __field(        int ,           runtime_auto    )
  30                __field(        int ,           request_pending )
  31                __field(        int ,           irq_safe        )
  32                __field(        int ,           child_count     )
  33        ),
  34
  35        TP_fast_assign(
  36                __assign_str(name, dev_name(dev));
  37                __entry->flags = flags;
  38                __entry->usage_count = atomic_read(
  39                        &dev->power.usage_count);
  40                __entry->disable_depth = dev->power.disable_depth;
  41                __entry->runtime_auto = dev->power.runtime_auto;
  42                __entry->request_pending = dev->power.request_pending;
  43                __entry->irq_safe = dev->power.irq_safe;
  44                __entry->child_count = atomic_read(
  45                        &dev->power.child_count);
  46        ),
  47
  48        TP_printk("%s flags-%x cnt-%-2d dep-%-2d auto-%-1d p-%-1d"
  49                        " irq-%-1d child-%d",
  50                        __get_str(name), __entry->flags,
  51                        __entry->usage_count,
  52                        __entry->disable_depth,
  53                        __entry->runtime_auto,
  54                        __entry->request_pending,
  55                        __entry->irq_safe,
  56                        __entry->child_count
  57                 )
  58);
  59DEFINE_EVENT(rpm_internal, rpm_suspend,
  60
  61        TP_PROTO(struct device *dev, int flags),
  62
  63        TP_ARGS(dev, flags)
  64);
  65DEFINE_EVENT(rpm_internal, rpm_resume,
  66
  67        TP_PROTO(struct device *dev, int flags),
  68
  69        TP_ARGS(dev, flags)
  70);
  71DEFINE_EVENT(rpm_internal, rpm_idle,
  72
  73        TP_PROTO(struct device *dev, int flags),
  74
  75        TP_ARGS(dev, flags)
  76);
  77DEFINE_EVENT(rpm_internal, rpm_usage,
  78
  79        TP_PROTO(struct device *dev, int flags),
  80
  81        TP_ARGS(dev, flags)
  82);
  83
  84TRACE_EVENT(rpm_return_int,
  85        TP_PROTO(struct device *dev, unsigned long ip, int ret),
  86        TP_ARGS(dev, ip, ret),
  87
  88        TP_STRUCT__entry(
  89                __string(       name,           dev_name(dev))
  90                __field(        unsigned long,          ip      )
  91                __field(        int,                    ret     )
  92        ),
  93
  94        TP_fast_assign(
  95                __assign_str(name, dev_name(dev));
  96                __entry->ip = ip;
  97                __entry->ret = ret;
  98        ),
  99
 100        TP_printk("%pS:%s ret=%d", (void *)__entry->ip, __get_str(name),
 101                __entry->ret)
 102);
 103
 104#endif /* _TRACE_RUNTIME_POWER_H */
 105
 106/* This part must be outside protection */
 107#include <trace/define_trace.h>
 108