summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorOscar Mateo <oscar.mateo@intel.com>2013-11-04 16:30:47 +0000
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-11-04 18:05:37 +0100
commit5f0ab94c3fca1437f10812e88136f82c3396a99e (patch)
tree3b32156e0565028f96b5a4ff6785d1b4c42a998e /lib
parenta97402e89ac492e2cbdd4b194638a7c0e898a4a3 (diff)
lib: Add igt_drop_caches_set()
This is basically a "drop cache" interface to the igt_debugfs facilities. Also, update existing users. Signed-off-by: Oscar Mateo <oscar.mateo@intel.com> Cc: Damien Lespiau <damien.lespiau@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'lib')
-rw-r--r--lib/igt_debugfs.c28
-rw-r--r--lib/igt_debugfs.h15
2 files changed, 43 insertions, 0 deletions
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 0319effc..fc274fd8 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -316,3 +316,31 @@ igt_pipe_crc_get_crcs(igt_pipe_crc_t *pipe_crc, int n_crcs,
*out_crcs = crcs;
}
+
+/*
+ * Drop caches
+ */
+
+int igt_drop_caches_set(uint64_t val)
+{
+ igt_debugfs_t debugfs;
+ int fd;
+ char data[19];
+ size_t nbytes;
+ int ret = -1;
+
+ sprintf(data, "0x%" PRIx64, val);
+
+ igt_debugfs_init(&debugfs);
+ fd = igt_debugfs_open(&debugfs, "i915_gem_drop_caches", O_WRONLY);
+
+ if (fd >= 0)
+ {
+ nbytes = write(fd, data, strlen(data) + 1);
+ if (nbytes == strlen(data) + 1)
+ ret = 0;
+ close(fd);
+ }
+
+ return ret;
+}
diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
index c2810ee3..02f4afa2 100644
--- a/lib/igt_debugfs.h
+++ b/lib/igt_debugfs.h
@@ -79,4 +79,19 @@ void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc);
void igt_pipe_crc_get_crcs(igt_pipe_crc_t *pipe_crc, int n_crcs,
igt_crc_t **out_crcs);
+/*
+ * Drop caches
+ */
+
+#define DROP_UNBOUND 0x1
+#define DROP_BOUND 0x2
+#define DROP_RETIRE 0x4
+#define DROP_ACTIVE 0x8
+#define DROP_ALL (DROP_UNBOUND | \
+ DROP_BOUND | \
+ DROP_RETIRE | \
+ DROP_ACTIVE)
+
+int igt_drop_caches_set(uint64_t val);
+
#endif /* __IGT_DEBUGFS_H__ */