Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4b254ff5 authored by Ruchi Kandoi's avatar Ruchi Kandoi
Browse files

uid_cputime: Extends the cputime functionality to report power per uid



/proc/uid_cputime/show_uid_stats shows a third field power for each of
the uids. It represents the power in the units (uAusec)

Change-Id: I52fdc5e59647e9dc97561a26d56f462a2689ba9c
Signed-off-by: default avatarRuchi Kandoi <kandoiruchi@google.com>
parent 141aa174
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -38,6 +38,8 @@ struct uid_entry {
	cputime_t stime;
	cputime_t active_utime;
	cputime_t active_stime;
	unsigned long long active_power;
	unsigned long long power;
	struct hlist_node hash;
};

@@ -83,6 +85,7 @@ static int uid_stat_show(struct seq_file *m, void *v)
	hash_for_each(hash_table, bkt, uid_entry, hash) {
		uid_entry->active_stime = 0;
		uid_entry->active_utime = 0;
		uid_entry->active_power = 0;
	}

	read_lock(&tasklist_lock);
@@ -100,6 +103,7 @@ static int uid_stat_show(struct seq_file *m, void *v)
		task_cputime_adjusted(task, &utime, &stime);
		uid_entry->active_utime += utime;
		uid_entry->active_stime += stime;
		uid_entry->active_power += task->cpu_power;
	}
	read_unlock(&tasklist_lock);

@@ -108,9 +112,12 @@ static int uid_stat_show(struct seq_file *m, void *v)
							uid_entry->active_utime;
		cputime_t total_stime = uid_entry->stime +
							uid_entry->active_stime;
		seq_printf(m, "%d: %u %u\n", uid_entry->uid,
		unsigned long long total_power = uid_entry->power +
							uid_entry->active_power;
		seq_printf(m, "%d: %u %u %llu\n", uid_entry->uid,
						cputime_to_usecs(total_utime),
						cputime_to_usecs(total_stime));
						cputime_to_usecs(total_stime),
						total_power);
	}

	mutex_unlock(&uid_lock);
@@ -203,6 +210,7 @@ static int process_notifier(struct notifier_block *self,
	task_cputime_adjusted(task, &utime, &stime);
	uid_entry->utime += utime;
	uid_entry->stime += stime;
	uid_entry->power += task->cpu_power;

exit:
	mutex_unlock(&uid_lock);