Messages in this thread Patch in this message | | | From | Kamil Konieczny <> | Subject | [PATCH 3/7] devfreq: add clearing transitions stats in sysfs | Date | Wed, 13 Nov 2019 10:13:32 +0100 |
| |
Add new function trans_reset in sysfs for clearing transition table and time in states devfreq statistics.
Signed-off-by: Kamil Konieczny <k.konieczny@samsung.com> --- drivers/devfreq/devfreq.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c index ac04b5baef70..0a88055d1362 100644 --- a/drivers/devfreq/devfreq.c +++ b/drivers/devfreq/devfreq.c @@ -1445,6 +1445,31 @@ static ssize_t trans_stat_show(struct device *dev, } static DEVICE_ATTR_RO(trans_stat); +static void defvreq_stats_clear_table(struct devfreq *devfreq) +{ + unsigned int count = devfreq->profile->max_state; + + spin_lock(&devfreq->stats_lock); + memset(devfreq->time_in_state, 0, count * sizeof(u64)); + memset(devfreq->trans_table, 0, count * count * sizeof(int)); + devfreq->last_stat_updated = get_jiffies_64(); + devfreq->total_trans = 0; + spin_unlock(&devfreq->stats_lock); +} + +static ssize_t trans_reset_store(struct device *dev, + struct device_attribute *attr, + const char *buf, + size_t count) +{ + struct devfreq *devfreq = to_devfreq(dev); + + defvreq_stats_clear_table(devfreq); + + return count; +} +static DEVICE_ATTR_WO(trans_reset); + static struct attribute *devfreq_attrs[] = { &dev_attr_governor.attr, &dev_attr_available_governors.attr, @@ -1455,6 +1480,7 @@ static struct attribute *devfreq_attrs[] = { &dev_attr_min_freq.attr, &dev_attr_max_freq.attr, &dev_attr_trans_stat.attr, + &dev_attr_trans_reset.attr, NULL, }; ATTRIBUTE_GROUPS(devfreq); -- 2.24.0
| |