After reviewing lots of drivers and seeing sloppy string handling resorted to AI assistance to unify and consolidate the parsing of sysfs values. Many drivers open code this with similar pattern but lacked any coherent error handling. The kernel API is consistent and won't give bad data, but it make sense to check for garbage.
Add one set of routines in EAL that build the path from a printf style format and convert with strtoul()/strtol(), then convert the existing callers. Note: existing eal_parse_sysfs_value() goes away with this. It was exported as a stable symbol, which was a mistake: the eal_ prefix and the private eal_filesystem.h both say it is internal, and nothing outside the tree should have been calling it. The new code does export rte_sysfs_parse_XXX are marked with as internal use only. Stephen Hemminger (9): eal: add common sysfs value routines dma/idxd: use common sysfs routines common/ionic: use common sysfs routines bus/vmbus: use common sysfs routines power: use common sysfs routines drivers/bus: remove duplicate sysfs string helpers common/mlx5: use common sysfs routines net/mlx5: use common sysfs routines net/mana: use common sysfs routines app/test/test_eal_fs.c | 135 ++++++++++--- drivers/bus/auxiliary/linux/auxiliary.c | 13 +- drivers/bus/cdx/cdx.c | 7 +- drivers/bus/pci/linux/pci.c | 44 ++--- drivers/bus/platform/platform.c | 43 +--- drivers/bus/vmbus/linux/vmbus_bus.c | 64 ++---- drivers/bus/vmbus/linux/vmbus_uio.c | 24 +-- drivers/common/cnxk/roc_model.c | 40 +--- drivers/common/cnxk/roc_platform.h | 3 +- drivers/common/ionic/ionic_common_uio.c | 63 ++---- .../common/mlx5/linux/mlx5_common_auxiliary.c | 13 +- drivers/common/mlx5/linux/mlx5_common_os.c | 39 ++-- drivers/dma/idxd/idxd_bus.c | 80 ++------ drivers/net/af_xdp/rte_eth_af_xdp.c | 13 +- drivers/net/mana/mana.c | 14 +- drivers/net/mlx5/linux/mlx5_ethdev_os.c | 17 +- drivers/net/mlx5/linux/mlx5_os.c | 13 +- drivers/power/acpi/acpi_cpufreq.c | 21 +- drivers/power/amd_pstate/amd_pstate_cpufreq.c | 63 +----- drivers/power/cppc/cppc_cpufreq.c | 69 +------ .../power/intel_pstate/intel_pstate_cpufreq.c | 99 ++-------- drivers/power/intel_uncore/intel_uncore.c | 32 +-- lib/eal/common/eal_filesystem.h | 4 +- lib/eal/include/meson.build | 1 + lib/eal/include/rte_sysfs.h | 121 ++++++++++++ lib/eal/linux/eal_hugepage_info.c | 32 +-- lib/eal/linux/eal_lcore.c | 18 +- lib/eal/unix/eal_filesystem.c | 31 --- lib/eal/unix/eal_unix_sysfs.c | 187 ++++++++++++++++++ lib/eal/unix/meson.build | 1 + lib/power/power_common.c | 46 ++--- lib/power/power_common.h | 6 + lib/power/rte_power_qos.c | 29 +-- 33 files changed, 639 insertions(+), 746 deletions(-) create mode 100644 lib/eal/include/rte_sysfs.h create mode 100644 lib/eal/unix/eal_unix_sysfs.c -- 2.53.0

