diff options
-rw-r--r-- | lib/igt_debugfs.c | 39 | ||||
-rw-r--r-- | lib/igt_debugfs.h | 3 | ||||
-rw-r--r-- | tests/kms_frontbuffer_tracking.c | 7 |
3 files changed, 34 insertions, 15 deletions
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 @@ -263,25 +263,46 @@ int igt_debugfs_open(int device, const char *filename, int mode) } /** + * 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); } diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h index db634a82..ff8612dc 100644 --- a/lib/igt_debugfs.h +++ b/lib/igt_debugfs.h @@ -37,7 +37,8 @@ char *igt_debugfs_path(int device, char *path, int pathlen); int igt_debugfs_dir(int device); int igt_debugfs_open(int fd, const char *filename, int mode); -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 igt_debugfs_simple_read(int dir, const char *filename, char *buf, int size); bool igt_debugfs_search(int fd, const char *filename, const char *substring); /** diff --git a/tests/kms_frontbuffer_tracking.c b/tests/kms_frontbuffer_tracking.c index 921aaffc..eab84926 100644 --- a/tests/kms_frontbuffer_tracking.c +++ b/tests/kms_frontbuffer_tracking.c @@ -720,12 +720,9 @@ static void set_mode_for_params(struct modeset_params *params) static void __debugfs_read(const char *param, char *buf, int len) { - len = igt_sysfs_read(drm.debugfs, param, buf, len - 1); - if (len < 0) { + len = igt_debugfs_simple_read(drm.debugfs, param, buf, len); + if (len < 0) igt_assert_eq(len, -ENODEV); - len = 0; - } - buf[len] = '\0'; } static int __debugfs_write(const char *param, char *buf, int len) |