Provide option to always use device path

The application has the ability to use either the 'OF_FULLNAME' udev
environment variable or the udev device path as the path to the config
file, though it defaults to OF_FULLNAME if it's there.

The disadvantage of using OF_FULLNAME is that the file name then has to
match what someone manually typed into the device tree for the system,
for example mydevice@72.conf.  The device path method, on the other
hand, has a file name that matches the stable I2C details, such as
7-0052.conf.

To force phosphor-hwmon to always use the device path for its config and
avoid being dependent on the device tree name, this commits adds a new
--always-use-devpath meson option.

When enabled, it add an '|| true' into the start_hwmon.sh script to
force it down the path to use the device path when starting the hwmon
service.

Tested:
When disabled, diffed start_hwmon.sh to that built from previous HEAD
and the files matched.

When enabled, start_hwmon.sh now has
```
if [ -z "${path}" ] || true
```

and app now uses device path for config file path.

Change-Id: I5a03ebb6e6e967bc663ec747941258173dfd3363
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
3 files changed
tree: a3ee440de8cbfb097394c2366e0c07a6b865d745
  1. msl/
  2. subprojects/
  3. test/
  4. tools/
  5. .clang-format
  6. .gitignore
  7. .lcovrc
  8. .shellcheck
  9. 70-hwmon.rules
  10. 70-iio.rules
  11. average.cpp
  12. average.hpp
  13. env.cpp
  14. env.hpp
  15. fan_pwm.cpp
  16. fan_pwm.hpp
  17. fan_speed.cpp
  18. fan_speed.hpp
  19. gpio_handle.cpp
  20. gpio_handle.hpp
  21. hwmon.cpp
  22. hwmon.hpp
  23. hwmonio.cpp
  24. hwmonio.hpp
  25. interface.hpp
  26. LICENSE
  27. mainloop.cpp
  28. mainloop.hpp
  29. meson.build
  30. meson.options
  31. OWNERS
  32. phosphor-hwmon.conf
  33. readd.cpp
  34. README.iio.md
  35. README.md
  36. sensor.cpp
  37. sensor.hpp
  38. sensorset.cpp
  39. sensorset.hpp
  40. start_hwmon.sh.in
  41. sysfs.cpp
  42. sysfs.hpp
  43. targets.hpp
  44. thresholds.hpp
  45. types.hpp
  46. util.hpp
  47. xyz.openbmc_project.Hwmon@.service
README.md

phosphor-hwmon

Exposes generic hwmon entries as DBus objects. More information can be found at Sensor Architecture

To Build

To build this package, do the following steps:

  1. meson setup build
  2. ninja -C build

To clean the repository run rm -rf build.

D-Bus bus names

To enable the use of Linux features like cgroups prioritization and udev/systemd control, one instance of phosphor-hwmon is intended to be run per hwmon sysfs class instance.

This requires an algorithm for selecting a stable, well-known D-Bus busname.

The algorithm is <PREFIX>-<ID>.Hwmon<N> where PREFIX is a meson configurable prefix (BUSNAME_PREFIX=xyz.openbmc_project by default), ID is either a std::hash of the /sys/devices path backing the hwmon class instance or provided suffix value from the command line, and N is the implemented phosphor-hwmon D-Bus API version.