static ssize_t trans_stat_show()

in devfreq.c [1679:1730]


static ssize_t trans_stat_show(struct device *dev,
			       struct device_attribute *attr, char *buf)
{
	struct devfreq *df = to_devfreq(dev);
	ssize_t len;
	int i, j;
	unsigned int max_state;

	if (!df->profile)
		return -EINVAL;
	max_state = df->profile->max_state;

	if (max_state == 0)
		return sprintf(buf, "Not Supported.\n");

	mutex_lock(&df->lock);
	if (!df->stop_polling &&
			devfreq_update_status(df, df->previous_freq)) {
		mutex_unlock(&df->lock);
		return 0;
	}
	mutex_unlock(&df->lock);

	len = sprintf(buf, "     From  :   To\n");
	len += sprintf(buf + len, "           :");
	for (i = 0; i < max_state; i++)
		len += sprintf(buf + len, "%10lu",
				df->profile->freq_table[i]);

	len += sprintf(buf + len, "   time(ms)\n");

	for (i = 0; i < max_state; i++) {
		if (df->profile->freq_table[i]
					== df->previous_freq) {
			len += sprintf(buf + len, "*");
		} else {
			len += sprintf(buf + len, " ");
		}
		len += sprintf(buf + len, "%10lu:",
				df->profile->freq_table[i]);
		for (j = 0; j < max_state; j++)
			len += sprintf(buf + len, "%10u",
				df->stats.trans_table[(i * max_state) + j]);

		len += sprintf(buf + len, "%10llu\n", (u64)
			jiffies64_to_msecs(df->stats.time_in_state[i]));
	}

	len += sprintf(buf + len, "Total transition : %u\n",
					df->stats.total_trans);
	return len;
}