[PATCH 1/2] lib/igt_device: Extract helper setting device filter from fd
Lukasz Laguna <[email protected]> Thu, 23 Jul 2026 11:57:00 +0200
| Newsgroups | org.freedesktop.lists.igt-dev |
|---|---|
| Message-ID | <[email protected]> |
Helper sets device filter to the device corresponding to DRM device file descriptor. Move the implementation from core_hotunplug test into the library, so it can be reused in other tests. Signed-off-by: Lukasz Laguna <[email protected]> --- lib/igt_device.c | 22 ++++++++++++++++++++++ lib/igt_device.h | 1 + tests/core_hotunplug.c | 18 ++---------------- 3 files changed, 25 insertions(+), 16 deletions(-) diff --git a/lib/igt_device.c b/lib/igt_device.c index c617a98bc..b7227dc91 100644 --- a/lib/igt_device.c +++ b/lib/igt_device.c @@ -31,6 +31,7 @@ #endif #include "igt.h" #include "igt_device.h" +#include "igt_device_scan.h" #include "igt_sysfs.h" #include "igt_pci.h" @@ -351,3 +352,24 @@ igt_device_get_pci_upstream_port(int fd) return NULL; } + +/** + * igt_device_set_filter_from_fd: + * @fd: DRM device file descriptor + * + * Set device filter to the device corresponding to @fd. + */ +void igt_device_set_filter_from_fd(int fd) +{ + const char *filter_type = "sys:"; + char filter[strlen(filter_type) + PATH_MAX + 1]; + char *dst = stpcpy(filter, filter_type); + char path[PATH_MAX + 1]; + + igt_assert(igt_sysfs_path(fd, path, PATH_MAX)); + igt_ignore_warn(strncat(path, "/device", PATH_MAX - strlen(path))); + igt_assert(realpath(path, dst)); + + igt_device_filter_free_all(); + igt_assert_eq(igt_device_filter_add(filter), 1); +} diff --git a/lib/igt_device.h b/lib/igt_device.h index 781a72235..3ad08d3ee 100644 --- a/lib/igt_device.h +++ b/lib/igt_device.h @@ -38,4 +38,5 @@ struct pci_device *igt_device_get_pci_root_port(int fd); struct pci_device *igt_device_get_pci_upstream_port(int fd); void igt_device_get_pci_slot_name(int fd, char *pci_slot_name); +void igt_device_set_filter_from_fd(int fd); #endif /* __IGT_DEVICE_H__ */ diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c index 7c9dae1bf..c6e9d4854 100644 --- a/tests/core_hotunplug.c +++ b/tests/core_hotunplug.c @@ -35,6 +35,7 @@ #include "i915/gem_create.h" #include "i915/perf.h" #include "igt.h" +#include "igt_device.h" #include "igt_device_scan.h" #include "igt_kmod.h" #include "igt_sysfs.h" @@ -550,21 +551,6 @@ static void post_healthcheck(struct hotunplug *priv) cleanup(priv); } -static void set_filter_from_device(int fd) -{ - const char *filter_type = "sys:"; - char filter[strlen(filter_type) + PATH_MAX + 1]; - char *dst = stpcpy(filter, filter_type); - char path[PATH_MAX + 1]; - - igt_assert(igt_sysfs_path(fd, path, PATH_MAX)); - igt_ignore_warn(strncat(path, "/device", PATH_MAX - strlen(path))); - igt_assert(realpath(path, dst)); - - igt_device_filter_free_all(); - igt_assert_eq(igt_device_filter_add(filter), 1); -} - /* Subtests */ static void unbind_rebind(struct hotunplug *priv) @@ -713,7 +699,7 @@ int igt_main() } /* Make sure subtests always reopen the same device */ - set_filter_from_device(fd_drm); + igt_device_set_filter_from_fd(fd_drm); igt_assert_eq(close_device(fd_drm, "", "selected "), -1); -- 2.43.0