utils: Refactor findFiles()

The findFiles() iterates the directory recursively. For CPU sensor it
was using depth 6 to iterate the PECI devices, and it results in
iterating all the devices in /sys/bus/platform because it contains a
symlink of `subsystem` to `/sys/bus/platform`.

Refactor this function and make sure it skips iterating if a subdir does
not match the regex.

Tested: On g220a, the iterated files reduce from about 40000 to 400,
        and the function execution time reduces from 30s+ to about 0.5s.

Signed-off-by: Lei YU <yulei.sh@bytedance.com>
Change-Id: I7eada897a0f2c76c405a4efc0a081e00b48070e1
2 files changed
tree: 51c6660eb41aa2f789c9b682f61de825c1cd2677
  1. include/
  2. service_files/
  3. src/
  4. subprojects/
  5. tests/
  6. .clang-format
  7. .clang-ignore
  8. .clang-tidy
  9. .gitignore
  10. Jenkinsfile
  11. LICENSE
  12. MAINTAINERS
  13. meson.build
  14. meson_options.txt
  15. OWNERS
  16. README.md
README.md

dbus-sensors

dbus-sensors is a collection of sensor applications that provide the xyz.openbmc_project.Sensor collection of interfaces. They read sensor values from hwmon, d-bus, or direct driver access to provide readings. Some advance non-sensor features such as fan presence, pwm control, and automatic cpu detection (x86) are also supported.

key features

  • runtime re-configurable from d-bus (entity-manager or the like)

  • isolated: each sensor type is isolated into its own daemon, so a bug in one sensor is unlikely to affect another, and single sensor modifications are possible

  • async single-threaded: uses sdbusplus/asio bindings

  • multiple data inputs: hwmon, d-bus, direct driver access

sensor documentation