Add igt_debugfs_search to search each line in a debugfs file for a specified substring.
Signed-off-by: Thomas Wood <thomas.w...@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 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx