[go: up one dir, main page]

aboutsummaryrefslogtreecommitdiffstats
path: root/i915-watt.c
diff options
context:
space:
mode:
Diffstat (limited to 'i915-watt.c')
-rw-r--r--i915-watt.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/i915-watt.c b/i915-watt.c
new file mode 100644
index 0000000..bfbb64b
--- /dev/null
+++ b/i915-watt.c
@@ -0,0 +1,31 @@
+#include <stdio.h>
+#include <stdint.h>
+#include <inttypes.h>
+#include <unistd.h>
+
+int main(int argc, char *argv[])
+{
+ FILE *f;
+ uint64_t this_microjoules, last_microjoules = ~UINT64_C(0);
+
+ setbuf(stdout, NULL);
+ f = fopen("/sys/kernel/debug/dri/0/i915_energy_uJ", "r");
+ if (!f) {
+ perror("fopen(/sys/kernel/debug/dri/0/i915_energy_uJ)");
+ return 1;
+ }
+
+ printf("Measuring...");
+ for (;;) {
+ if (fscanf(f, "%" PRIu64, &this_microjoules) != 1) {
+ perror("fscanf");
+ return 1;
+ }
+ rewind(f);
+ if (last_microjoules != ~UINT64_C(0))
+ printf("\x1b[0G\x1b[0K%.2f W", (double)(this_microjoules - last_microjoules) / 1000000.0);
+ last_microjoules = this_microjoules;
+ sleep(1);
+ }
+ return 0;
+}