From 219b578bca04c93004e3f3942ce3079813f72724 Mon Sep 17 00:00:00 2001 From: Dhinakaran Pandiyan Date: Wed, 5 Sep 2018 14:15:55 -0700 Subject: lib/debugfs: Function to read debugfs with the directory already open MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tests/kms_frontbuffer_tracking and tests/kms_psr read debugfs nodes several times after opening the directory once. There is already an implementation of this in the kms_frontbuffer_tracking, moving that functionality to the library will allow us to share the code with kms_psr and kms_fbcon_fbt Signed-off-by: Dhinakaran Pandiyan Reviewed-by: José Roberto de Souza --- lib/igt_debugfs.c | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) (limited to 'lib/igt_debugfs.c') diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index 14753a9e..baedc225 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -262,26 +262,47 @@ int igt_debugfs_open(int device, const char *filename, int mode) return ret; } +/** + * igt_debugfs_simple_read: + * @filename: file name + * @buf: buffer where the contents will be stored, allocated by the caller + * @size: size of the buffer + * + * This function is similar to __igt_debugfs_read, the difference is that it + * expects the debugfs directory to be open and it's descriptor passed as the + * first argument. + * + * Returns: + * -errorno on failure or bytes read on success + */ +int igt_debugfs_simple_read(int dir, const char *filename, char *buf, int size) +{ + int len; + + len = igt_sysfs_read(dir, filename, buf, size - 1); + if (len < 0) + buf[0] = '\0'; + else + buf[len] = '\0'; + + return len; +} + /** * __igt_debugfs_read: * @filename: file name * @buf: buffer where the contents will be stored, allocated by the caller - * @buf_size: size of the buffer + * @size: size of the buffer * * This function opens the debugfs file, reads it, stores the content in the * provided buffer, then closes the file. Users should make sure that the buffer * provided is big enough to fit the whole file, plus one byte. */ -void __igt_debugfs_read(int fd, const char *filename, char *buf, int buf_size) +void __igt_debugfs_read(int fd, const char *filename, char *buf, int size) { - int dir; - int len; + int dir = igt_debugfs_dir(fd); - dir = igt_debugfs_dir(fd); - len = igt_sysfs_read(dir, filename, buf, buf_size - 1); - if (len < 0) - len = 0; - buf[len] = '\0'; + igt_debugfs_simple_read(dir, filename, buf, size); close(dir); } -- cgit v1.2.3