From 40f481037ef98442b061e310a04ee5e110120f72 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Mon, 7 Aug 2023 01:07:09 +0200 Subject: vppinfra: add clib_file_get_resolved_basename more generic version of clib_sysfs_link_to_name with support for format strings... Type: improvement Change-Id: I0cb263748970378c661415196eb7e08450370677 Signed-off-by: Damjan Marion --- src/vlib/linux/pci.c | 13 ++++--------- src/vlib/linux/vfio.c | 6 ++---- src/vlib/linux/vmbus.c | 6 ++---- 3 files changed, 8 insertions(+), 17 deletions(-) (limited to 'src/vlib') diff --git a/src/vlib/linux/pci.c b/src/vlib/linux/pci.c index e94fee1bcbd..9661827ea0d 100644 --- a/src/vlib/linux/pci.c +++ b/src/vlib/linux/pci.c @@ -293,16 +293,13 @@ vlib_pci_get_device_info (vlib_main_t * vm, vlib_pci_addr_t * addr, goto error; di->revision = tmp; - vec_reset_length (f); - f = format (f, "%v/driver%c", dev_dir_name, 0); - di->driver_name = clib_sysfs_link_to_name ((char *) f); + di->driver_name = + clib_file_get_resolved_basename ("%v/driver", dev_dir_name); if (!di->driver_name) di->driver_name = format (0, "%c", 0); di->iommu_group = -1; - vec_reset_length (f); - f = format (f, "%v/iommu_group%c", dev_dir_name, 0); - tmpstr = clib_sysfs_link_to_name ((char *) f); + tmpstr = clib_file_get_resolved_basename ("%v/iommu_group", dev_dir_name); if (tmpstr) { di->iommu_group = atoi ((char *) tmpstr); @@ -506,9 +503,7 @@ vlib_pci_bind_to_uio (vlib_main_t *vm, vlib_pci_addr_t *addr, } } - s = format (s, "%v/driver%c", dev_dir_name, 0); - driver_name = clib_sysfs_link_to_name ((char *) s); - vec_reset_length (s); + driver_name = clib_file_get_resolved_basename ("%v/driver", dev_dir_name); if (driver_name && ((strcmp ("vfio-pci", (char *) driver_name) == 0) || diff --git a/src/vlib/linux/vfio.c b/src/vlib/linux/vfio.c index dc68c52db02..ee04081d767 100644 --- a/src/vlib/linux/vfio.c +++ b/src/vlib/linux/vfio.c @@ -185,10 +185,8 @@ linux_vfio_group_get_device_fd (vlib_pci_addr_t * addr, int *fdp, int fd; *is_noiommu = 0; - s = - format (s, "/sys/bus/pci/devices/%U/iommu_group%c", format_vlib_pci_addr, - addr, 0); - tmpstr = clib_sysfs_link_to_name ((char *) s); + tmpstr = clib_file_get_resolved_basename ( + "/sys/bus/pci/devices/%U/iommu_group", format_vlib_pci_addr, addr); if (tmpstr) { iommu_group = atoi ((char *) tmpstr); diff --git a/src/vlib/linux/vmbus.c b/src/vlib/linux/vmbus.c index aae11a1fefb..b0663819a45 100644 --- a/src/vlib/linux/vmbus.c +++ b/src/vlib/linux/vmbus.c @@ -253,16 +253,14 @@ vlib_vmbus_bind_to_uio (vlib_vmbus_addr_t * addr) static int uio_new_id_needed = 1; struct dirent *e; struct ifreq ifr; - u8 *s, *driver_name; + u8 *s = 0, *driver_name; DIR *dir; int fd; dev_dir_name = format (0, "%s/%U", sysfs_vmbus_dev_path, format_vlib_vmbus_addr, addr); - s = format (0, "%v/driver%c", dev_dir_name, 0); - driver_name = clib_sysfs_link_to_name ((char *) s); - vec_reset_length (s); + driver_name = clib_file_get_resolved_basename ("%v/driver", dev_dir_name); /* skip if not using the Linux kernel netvsc driver */ if (!driver_name || strcmp ("hv_netvsc", (char *) driver_name) != 0) -- cgit 1.2.3-korg