[Intel-gfx] [PATCH i-g-t] lib: add igt_debugfs_search

Thomas Wood thomas.wood at intel.com
Wed Sep 23 09:08:14 PDT 2015


Add igt_debugfs_search to search each line in a debugfs file for a
specified substring.

Signed-off-by: Thomas Wood <thomas.wood at intel.com>
---
 lib/igt_debugfs.c          | 31 +++++++++++++++++++++++++++++++
 lib/igt_debugfs.h          |  1 +
 tests/gem_ppgtt.c          | 35 ++---------------------------------
 tests/gem_tiled_swapping.c | 13 +------------
 4 files changed, 35 insertions(+), 45 deletions(-)

diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 5c13279..c603369 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -212,6 +212,37 @@ void __igt_debugfs_read(const char *filename, char *buf, int buf_size)
 	igt_assert(fclose(file) == 0);
 }
 
+/**
+ * igt_debugfs_search:
+ * @filename: file name
+ * @substring: string to search for in @filename
+ *
+ * Searches each line in @filename for the substring specified in @substring.
+ *
+ * Returns: True if the @substring is found to occur in @filename
+ */
+bool igt_debugfs_search(const char *filename, const char *substring)
+{
+	FILE *file;
+	size_t n = 0;
+	char *line = NULL;
+	bool matched = false;
+
+	file = igt_debugfs_fopen(filename, O_RDONLY);
+	igt_assert(file);
+
+	while (getline(&line, &n, file) >= 0) {
+		matched = (strstr(line, substring) != NULL);
+		if (matched)
+			break;
+	}
+
+	free(line);
+	fclose(file);
+
+	return matched;
+}
+
 /*
  * Pipe CRC
  */
diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
index 78cb5e1..ee9ff40 100644
--- a/lib/igt_debugfs.h
+++ b/lib/igt_debugfs.h
@@ -35,6 +35,7 @@ int igt_debugfs_open(const char *filename, int mode);
 FILE *igt_debugfs_fopen(const char *filename,
 			const char *mode);
 void __igt_debugfs_read(const char *filename, char *buf, int buf_size);
+bool igt_debugfs_search(const char *filename, const char *substring);
 
 /**
  * igt_debugfs_read:
diff --git a/tests/gem_ppgtt.c b/tests/gem_ppgtt.c
index 0b8e1ff..de295b9 100644
--- a/tests/gem_ppgtt.c
+++ b/tests/gem_ppgtt.c
@@ -266,37 +266,6 @@ static void flink_and_close(void)
 	close(fd2);
 }
 
-static bool grep_name(const char *fname, const char *match)
-{
-	int fd;
-	FILE *fh;
-	size_t n = 0;
-	char *line = NULL;
-	char *matched = NULL;
-
-	fd = igt_debugfs_open(fname, O_RDONLY);
-	igt_assert(fd >= 0);
-
-	fh = fdopen(fd, "r");
-	igt_assert(fh);
-
-	while (getline(&line, &n, fh) >= 0) {
-		matched = strstr(line, match);
-		if (line) {
-			free(line);
-			line = NULL;
-		}
-		if (matched)
-			break;
-	}
-
-	if (line)
-		free(line);
-	fclose(fh);
-
-	return matched != NULL;
-}
-
 static void flink_and_exit(void)
 {
 	uint32_t fd, fd2;
@@ -323,7 +292,7 @@ static void flink_and_exit(void)
 	gem_sync(fd2, flinked_bo);
 
 	/* Verify looking for string works OK. */
-	matched = grep_name("i915_gem_gtt", match);
+	matched = igt_debugfs_search("i915_gem_gtt", match);
 	igt_assert_eq(matched, true);
 
 	gem_close(fd2, flinked_bo);
@@ -338,7 +307,7 @@ retry:
 	/* The flinked bo VMA should have been cleared now, so list of VMAs
 	 * in debugfs should not contain the one for the imported object.
 	 */
-	matched = grep_name("i915_gem_gtt", match);
+	matched = igt_debugfs_search("i915_gem_gtt", match);
 	if (matched && retry++ < retries)
 		goto retry;
 
diff --git a/tests/gem_tiled_swapping.c b/tests/gem_tiled_swapping.c
index 537b53a..d232aee 100644
--- a/tests/gem_tiled_swapping.c
+++ b/tests/gem_tiled_swapping.c
@@ -157,19 +157,8 @@ static void thread_fini(struct thread *t)
 
 static void check_memory_layout(void)
 {
-	FILE *tiling_debugfs_file;
-	char *line = NULL;
-	size_t sz = 0;
-
-	tiling_debugfs_file = igt_debugfs_fopen("i915_swizzle_info", "r");
-	igt_assert(tiling_debugfs_file);
-
-	while (getline(&line, &sz, tiling_debugfs_file) > 0) {
-		if (strstr(line, "L-shaped") == NULL)
-			continue;
-
+	if (igt_debugfs_search("i915_swizzle_info", "L-shaped"))
 		igt_skip("L-shaped memory configuration detected\n");
-	}
 
 	igt_debug("normal memory configuration detected, continuing\n");
 }
-- 
2.4.3



More information about the Intel-gfx mailing list