LCOV - code coverage report
Current view: top level - include/trace/events - power.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 4 23 17.4 %
Date: 2014-02-18 Functions: 0 45 0.0 %
Branches: 5 440 1.1 %

           Branch data     Line data    Source code
       1                 :            : #undef TRACE_SYSTEM
       2                 :            : #define TRACE_SYSTEM power
       3                 :            : 
       4                 :            : #if !defined(_TRACE_POWER_H) || defined(TRACE_HEADER_MULTI_READ)
       5                 :            : #define _TRACE_POWER_H
       6                 :            : 
       7                 :            : #include <linux/ktime.h>
       8                 :            : #include <linux/pm_qos.h>
       9                 :            : #include <linux/tracepoint.h>
      10                 :            : 
      11   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(cpu,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
      12                 :            : 
      13                 :            :         TP_PROTO(unsigned int state, unsigned int cpu_id),
      14                 :            : 
      15                 :            :         TP_ARGS(state, cpu_id),
      16                 :            : 
      17                 :            :         TP_STRUCT__entry(
      18                 :            :                 __field(        u32,            state           )
      19                 :            :                 __field(        u32,            cpu_id          )
      20                 :            :         ),
      21                 :            : 
      22                 :            :         TP_fast_assign(
      23                 :            :                 __entry->state = state;
      24                 :            :                 __entry->cpu_id = cpu_id;
      25                 :            :         ),
      26                 :            : 
      27                 :            :         TP_printk("state=%lu cpu_id=%lu", (unsigned long)__entry->state,
      28                 :            :                   (unsigned long)__entry->cpu_id)
      29                 :            : );
      30                 :            : 
      31 [ -  + ][ #  # ]:   11187480 : DEFINE_EVENT(cpu, cpu_idle,
         [ #  # ][ -  + ]
         [ #  # ][ #  # ]
      32                 :            : 
      33                 :            :         TP_PROTO(unsigned int state, unsigned int cpu_id),
      34                 :            : 
      35                 :            :         TP_ARGS(state, cpu_id)
      36                 :            : );
      37                 :            : 
      38                 :            : /* This file can get included multiple times, TRACE_HEADER_MULTI_READ at top */
      39                 :            : #ifndef _PWR_EVENT_AVOID_DOUBLE_DEFINING
      40                 :            : #define _PWR_EVENT_AVOID_DOUBLE_DEFINING
      41                 :            : 
      42                 :            : #define PWR_EVENT_EXIT -1
      43                 :            : #endif
      44                 :            : 
      45   [ -  +  #  # ]:      12943 : DEFINE_EVENT(cpu, cpu_frequency,
                 [ #  # ]
      46                 :            : 
      47                 :            :         TP_PROTO(unsigned int frequency, unsigned int cpu_id),
      48                 :            : 
      49                 :            :         TP_ARGS(frequency, cpu_id)
      50                 :            : );
      51                 :            : 
      52   [ #  #  #  # ]:          0 : TRACE_EVENT(machine_suspend,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
      53                 :            : 
      54                 :            :         TP_PROTO(unsigned int state),
      55                 :            : 
      56                 :            :         TP_ARGS(state),
      57                 :            : 
      58                 :            :         TP_STRUCT__entry(
      59                 :            :                 __field(        u32,            state           )
      60                 :            :         ),
      61                 :            : 
      62                 :            :         TP_fast_assign(
      63                 :            :                 __entry->state = state;
      64                 :            :         ),
      65                 :            : 
      66                 :            :         TP_printk("state=%lu", (unsigned long)__entry->state)
      67                 :            : );
      68                 :            : 
      69 [ #  # ][ #  # ]:          0 : TRACE_EVENT(device_pm_report_time,
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
      70                 :            : 
      71                 :            :         TP_PROTO(struct device *dev, const char *pm_ops, s64 ops_time,
      72                 :            :                  char *pm_event_str, int error),
      73                 :            : 
      74                 :            :         TP_ARGS(dev, pm_ops, ops_time, pm_event_str, error),
      75                 :            : 
      76                 :            :         TP_STRUCT__entry(
      77                 :            :                 __string(device, dev_name(dev))
      78                 :            :                 __string(driver, dev_driver_string(dev))
      79                 :            :                 __string(parent, dev->parent ? dev_name(dev->parent) : "none")
      80                 :            :                 __string(pm_ops, pm_ops ? pm_ops : "none ")
      81                 :            :                 __string(pm_event_str, pm_event_str)
      82                 :            :                 __field(s64, ops_time)
      83                 :            :                 __field(int, error)
      84                 :            :         ),
      85                 :            : 
      86                 :            :         TP_fast_assign(
      87                 :            :                 const char *tmp = dev->parent ? dev_name(dev->parent) : "none";
      88                 :            :                 const char *tmp_i = pm_ops ? pm_ops : "none ";
      89                 :            : 
      90                 :            :                 __assign_str(device, dev_name(dev));
      91                 :            :                 __assign_str(driver, dev_driver_string(dev));
      92                 :            :                 __assign_str(parent, tmp);
      93                 :            :                 __assign_str(pm_ops, tmp_i);
      94                 :            :                 __assign_str(pm_event_str, pm_event_str);
      95                 :            :                 __entry->ops_time = ops_time;
      96                 :            :                 __entry->error = error;
      97                 :            :         ),
      98                 :            : 
      99                 :            :         /* ops_str has an extra space at the end */
     100                 :            :         TP_printk("%s %s parent=%s state=%s ops=%snsecs=%lld err=%d",
     101                 :            :                 __get_str(driver), __get_str(device), __get_str(parent),
     102                 :            :                 __get_str(pm_event_str), __get_str(pm_ops),
     103                 :            :                 __entry->ops_time, __entry->error)
     104                 :            : );
     105                 :            : 
     106 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(wakeup_source,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     107                 :            : 
     108                 :            :         TP_PROTO(const char *name, unsigned int state),
     109                 :            : 
     110                 :            :         TP_ARGS(name, state),
     111                 :            : 
     112                 :            :         TP_STRUCT__entry(
     113                 :            :                 __string(       name,           name            )
     114                 :            :                 __field(        u64,            state           )
     115                 :            :         ),
     116                 :            : 
     117                 :            :         TP_fast_assign(
     118                 :            :                 __assign_str(name, name);
     119                 :            :                 __entry->state = state;
     120                 :            :         ),
     121                 :            : 
     122                 :            :         TP_printk("%s state=0x%lx", __get_str(name),
     123                 :            :                 (unsigned long)__entry->state)
     124                 :            : );
     125                 :            : 
     126   [ -  +  #  # ]:      87232 : DEFINE_EVENT(wakeup_source, wakeup_source_activate,
                 [ #  # ]
     127                 :            : 
     128                 :            :         TP_PROTO(const char *name, unsigned int state),
     129                 :            : 
     130                 :            :         TP_ARGS(name, state)
     131                 :            : );
     132                 :            : 
     133   [ -  +  #  # ]:      87232 : DEFINE_EVENT(wakeup_source, wakeup_source_deactivate,
                 [ #  # ]
     134                 :            : 
     135                 :            :         TP_PROTO(const char *name, unsigned int state),
     136                 :            : 
     137                 :            :         TP_ARGS(name, state)
     138                 :            : );
     139                 :            : 
     140                 :            : /*
     141                 :            :  * The clock events are used for clock enable/disable and for
     142                 :            :  *  clock rate change
     143                 :            :  */
     144 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(clock,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     145                 :            : 
     146                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     147                 :            : 
     148                 :            :         TP_ARGS(name, state, cpu_id),
     149                 :            : 
     150                 :            :         TP_STRUCT__entry(
     151                 :            :                 __string(       name,           name            )
     152                 :            :                 __field(        u64,            state           )
     153                 :            :                 __field(        u64,            cpu_id          )
     154                 :            :         ),
     155                 :            : 
     156                 :            :         TP_fast_assign(
     157                 :            :                 __assign_str(name, name);
     158                 :            :                 __entry->state = state;
     159                 :            :                 __entry->cpu_id = cpu_id;
     160                 :            :         ),
     161                 :            : 
     162                 :            :         TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
     163                 :            :                 (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
     164                 :            : );
     165                 :            : 
     166                 :            : DEFINE_EVENT(clock, clock_enable,
     167                 :            : 
     168                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     169                 :            : 
     170                 :            :         TP_ARGS(name, state, cpu_id)
     171                 :            : );
     172                 :            : 
     173                 :            : DEFINE_EVENT(clock, clock_disable,
     174                 :            : 
     175                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     176                 :            : 
     177                 :            :         TP_ARGS(name, state, cpu_id)
     178                 :            : );
     179                 :            : 
     180                 :            : DEFINE_EVENT(clock, clock_set_rate,
     181                 :            : 
     182                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     183                 :            : 
     184                 :            :         TP_ARGS(name, state, cpu_id)
     185                 :            : );
     186                 :            : 
     187 [ #  # ][ #  # ]:          0 : TRACE_EVENT(clock_set_parent,
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     188                 :            : 
     189                 :            :         TP_PROTO(const char *name, const char *parent_name),
     190                 :            : 
     191                 :            :         TP_ARGS(name, parent_name),
     192                 :            : 
     193                 :            :         TP_STRUCT__entry(
     194                 :            :                 __string(       name,           name            )
     195                 :            :                 __string(       parent_name,    parent_name     )
     196                 :            :         ),
     197                 :            : 
     198                 :            :         TP_fast_assign(
     199                 :            :                 __assign_str(name, name);
     200                 :            :                 __assign_str(parent_name, parent_name);
     201                 :            :         ),
     202                 :            : 
     203                 :            :         TP_printk("%s parent=%s", __get_str(name), __get_str(parent_name))
     204                 :            : );
     205                 :            : 
     206                 :            : /*
     207                 :            :  * The power domain events are used for power domains transitions
     208                 :            :  */
     209 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(power_domain,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     210                 :            : 
     211                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     212                 :            : 
     213                 :            :         TP_ARGS(name, state, cpu_id),
     214                 :            : 
     215                 :            :         TP_STRUCT__entry(
     216                 :            :                 __string(       name,           name            )
     217                 :            :                 __field(        u64,            state           )
     218                 :            :                 __field(        u64,            cpu_id          )
     219                 :            :         ),
     220                 :            : 
     221                 :            :         TP_fast_assign(
     222                 :            :                 __assign_str(name, name);
     223                 :            :                 __entry->state = state;
     224                 :            :                 __entry->cpu_id = cpu_id;
     225                 :            : ),
     226                 :            : 
     227                 :            :         TP_printk("%s state=%lu cpu_id=%lu", __get_str(name),
     228                 :            :                 (unsigned long)__entry->state, (unsigned long)__entry->cpu_id)
     229                 :            : );
     230                 :            : 
     231                 :            : DEFINE_EVENT(power_domain, power_domain_target,
     232                 :            : 
     233                 :            :         TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id),
     234                 :            : 
     235                 :            :         TP_ARGS(name, state, cpu_id)
     236                 :            : );
     237                 :            : 
     238                 :            : /*
     239                 :            :  * The pm qos events are used for pm qos update
     240                 :            :  */
     241   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(pm_qos_request,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
     242                 :            : 
     243                 :            :         TP_PROTO(int pm_qos_class, s32 value),
     244                 :            : 
     245                 :            :         TP_ARGS(pm_qos_class, value),
     246                 :            : 
     247                 :            :         TP_STRUCT__entry(
     248                 :            :                 __field( int,                    pm_qos_class   )
     249                 :            :                 __field( s32,                    value          )
     250                 :            :         ),
     251                 :            : 
     252                 :            :         TP_fast_assign(
     253                 :            :                 __entry->pm_qos_class = pm_qos_class;
     254                 :            :                 __entry->value = value;
     255                 :            :         ),
     256                 :            : 
     257                 :            :         TP_printk("pm_qos_class=%s value=%d",
     258                 :            :                   __print_symbolic(__entry->pm_qos_class,
     259                 :            :                         { PM_QOS_CPU_DMA_LATENCY,       "CPU_DMA_LATENCY" },
     260                 :            :                         { PM_QOS_NETWORK_LATENCY,       "NETWORK_LATENCY" },
     261                 :            :                         { PM_QOS_NETWORK_THROUGHPUT,    "NETWORK_THROUGHPUT" }),
     262                 :            :                   __entry->value)
     263                 :            : );
     264                 :            : 
     265   [ #  #  #  # ]:          0 : DEFINE_EVENT(pm_qos_request, pm_qos_add_request,
                 [ #  # ]
     266                 :            : 
     267                 :            :         TP_PROTO(int pm_qos_class, s32 value),
     268                 :            : 
     269                 :            :         TP_ARGS(pm_qos_class, value)
     270                 :            : );
     271                 :            : 
     272   [ #  #  #  # ]:          0 : DEFINE_EVENT(pm_qos_request, pm_qos_update_request,
                 [ #  # ]
     273                 :            : 
     274                 :            :         TP_PROTO(int pm_qos_class, s32 value),
     275                 :            : 
     276                 :            :         TP_ARGS(pm_qos_class, value)
     277                 :            : );
     278                 :            : 
     279   [ #  #  #  # ]:          0 : DEFINE_EVENT(pm_qos_request, pm_qos_remove_request,
                 [ #  # ]
     280                 :            : 
     281                 :            :         TP_PROTO(int pm_qos_class, s32 value),
     282                 :            : 
     283                 :            :         TP_ARGS(pm_qos_class, value)
     284                 :            : );
     285                 :            : 
     286   [ #  #  #  # ]:          0 : TRACE_EVENT(pm_qos_update_request_timeout,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     287                 :            : 
     288                 :            :         TP_PROTO(int pm_qos_class, s32 value, unsigned long timeout_us),
     289                 :            : 
     290                 :            :         TP_ARGS(pm_qos_class, value, timeout_us),
     291                 :            : 
     292                 :            :         TP_STRUCT__entry(
     293                 :            :                 __field( int,                    pm_qos_class   )
     294                 :            :                 __field( s32,                    value          )
     295                 :            :                 __field( unsigned long,          timeout_us     )
     296                 :            :         ),
     297                 :            : 
     298                 :            :         TP_fast_assign(
     299                 :            :                 __entry->pm_qos_class = pm_qos_class;
     300                 :            :                 __entry->value = value;
     301                 :            :                 __entry->timeout_us = timeout_us;
     302                 :            :         ),
     303                 :            : 
     304                 :            :         TP_printk("pm_qos_class=%s value=%d, timeout_us=%ld",
     305                 :            :                   __print_symbolic(__entry->pm_qos_class,
     306                 :            :                         { PM_QOS_CPU_DMA_LATENCY,       "CPU_DMA_LATENCY" },
     307                 :            :                         { PM_QOS_NETWORK_LATENCY,       "NETWORK_LATENCY" },
     308                 :            :                         { PM_QOS_NETWORK_THROUGHPUT,    "NETWORK_THROUGHPUT" }),
     309                 :            :                   __entry->value, __entry->timeout_us)
     310                 :            : );
     311                 :            : 
     312   [ #  #  #  # ]:          0 : DECLARE_EVENT_CLASS(pm_qos_update,
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     313                 :            : 
     314                 :            :         TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value),
     315                 :            : 
     316                 :            :         TP_ARGS(action, prev_value, curr_value),
     317                 :            : 
     318                 :            :         TP_STRUCT__entry(
     319                 :            :                 __field( enum pm_qos_req_action, action         )
     320                 :            :                 __field( int,                    prev_value     )
     321                 :            :                 __field( int,                    curr_value     )
     322                 :            :         ),
     323                 :            : 
     324                 :            :         TP_fast_assign(
     325                 :            :                 __entry->action = action;
     326                 :            :                 __entry->prev_value = prev_value;
     327                 :            :                 __entry->curr_value = curr_value;
     328                 :            :         ),
     329                 :            : 
     330                 :            :         TP_printk("action=%s prev_value=%d curr_value=%d",
     331                 :            :                   __print_symbolic(__entry->action,
     332                 :            :                         { PM_QOS_ADD_REQ,       "ADD_REQ" },
     333                 :            :                         { PM_QOS_UPDATE_REQ,    "UPDATE_REQ" },
     334                 :            :                         { PM_QOS_REMOVE_REQ,    "REMOVE_REQ" }),
     335                 :            :                   __entry->prev_value, __entry->curr_value)
     336                 :            : );
     337                 :            : 
     338   [ #  #  #  # ]:          0 : DEFINE_EVENT(pm_qos_update, pm_qos_update_target,
                 [ #  # ]
     339                 :            : 
     340                 :            :         TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value),
     341                 :            : 
     342                 :            :         TP_ARGS(action, prev_value, curr_value)
     343                 :            : );
     344                 :            : 
     345 [ #  # ][ #  # ]:          0 : DEFINE_EVENT_PRINT(pm_qos_update, pm_qos_update_flags,
         [ #  # ][ #  # ]
                 [ #  # ]
           [ #  #  #  # ]
                 [ #  # ]
     346                 :            : 
     347                 :            :         TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value),
     348                 :            : 
     349                 :            :         TP_ARGS(action, prev_value, curr_value),
     350                 :            : 
     351                 :            :         TP_printk("action=%s prev_value=0x%x curr_value=0x%x",
     352                 :            :                   __print_symbolic(__entry->action,
     353                 :            :                         { PM_QOS_ADD_REQ,       "ADD_REQ" },
     354                 :            :                         { PM_QOS_UPDATE_REQ,    "UPDATE_REQ" },
     355                 :            :                         { PM_QOS_REMOVE_REQ,    "REMOVE_REQ" }),
     356                 :            :                   __entry->prev_value, __entry->curr_value)
     357                 :            : );
     358                 :            : 
     359 [ #  # ][ #  # ]:          0 : DECLARE_EVENT_CLASS(dev_pm_qos_request,
           [ #  #  #  # ]
                 [ #  # ]
           [ #  #  #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     360                 :            : 
     361                 :            :         TP_PROTO(const char *name, enum dev_pm_qos_req_type type,
     362                 :            :                  s32 new_value),
     363                 :            : 
     364                 :            :         TP_ARGS(name, type, new_value),
     365                 :            : 
     366                 :            :         TP_STRUCT__entry(
     367                 :            :                 __string( name,                    name         )
     368                 :            :                 __field( enum dev_pm_qos_req_type, type         )
     369                 :            :                 __field( s32,                      new_value    )
     370                 :            :         ),
     371                 :            : 
     372                 :            :         TP_fast_assign(
     373                 :            :                 __assign_str(name, name);
     374                 :            :                 __entry->type = type;
     375                 :            :                 __entry->new_value = new_value;
     376                 :            :         ),
     377                 :            : 
     378                 :            :         TP_printk("device=%s type=%s new_value=%d",
     379                 :            :                   __get_str(name),
     380                 :            :                   __print_symbolic(__entry->type,
     381                 :            :                         { DEV_PM_QOS_LATENCY,   "DEV_PM_QOS_LATENCY" },
     382                 :            :                         { DEV_PM_QOS_FLAGS,     "DEV_PM_QOS_FLAGS" }),
     383                 :            :                   __entry->new_value)
     384                 :            : );
     385                 :            : 
     386   [ #  #  #  # ]:          0 : DEFINE_EVENT(dev_pm_qos_request, dev_pm_qos_add_request,
                 [ #  # ]
     387                 :            : 
     388                 :            :         TP_PROTO(const char *name, enum dev_pm_qos_req_type type,
     389                 :            :                  s32 new_value),
     390                 :            : 
     391                 :            :         TP_ARGS(name, type, new_value)
     392                 :            : );
     393                 :            : 
     394   [ #  #  #  # ]:          0 : DEFINE_EVENT(dev_pm_qos_request, dev_pm_qos_update_request,
                 [ #  # ]
     395                 :            : 
     396                 :            :         TP_PROTO(const char *name, enum dev_pm_qos_req_type type,
     397                 :            :                  s32 new_value),
     398                 :            : 
     399                 :            :         TP_ARGS(name, type, new_value)
     400                 :            : );
     401                 :            : 
     402   [ #  #  #  # ]:          0 : DEFINE_EVENT(dev_pm_qos_request, dev_pm_qos_remove_request,
                 [ #  # ]
     403                 :            : 
     404                 :            :         TP_PROTO(const char *name, enum dev_pm_qos_req_type type,
     405                 :            :                  s32 new_value),
     406                 :            : 
     407                 :            :         TP_ARGS(name, type, new_value)
     408                 :            : );
     409                 :            : #endif /* _TRACE_POWER_H */
     410                 :            : 
     411                 :            : /* This part must be outside protection */
     412                 :            : #include <trace/define_trace.h>

Generated by: LCOV version 1.9