Retry on ENODATA errors

A particular device in a particular system is known to fail
with an ENODATA errno when another entity is using the same
path to access it.  Add it to the retry list so that
phosphor-hwmon will retry and hopefully be able to get a
clean read.  Even for devices where this contention isn't
the case, the code may as well retry as opposed to trying
once and giving up.

Resolves openbmc/openbmc#2645

Change-Id: Ib7aaaa14be33a33794a8c62d6991f77ab65a2ffa
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
1 file changed
tree: 5c2d7a92f02ca6f699a7c1bbe7de400929309930
  1. msl/
  2. test/
  3. .gitignore
  4. argument.cpp
  5. argument.hpp
  6. bootstrap.sh
  7. configure.ac
  8. env.cpp
  9. env.hpp
  10. fan_speed.cpp
  11. fan_speed.hpp
  12. hwmon.hpp
  13. interface.hpp
  14. LICENSE
  15. mainloop.cpp
  16. mainloop.hpp
  17. Makefile.am
  18. readd.cpp
  19. README.iio.md
  20. README.md
  21. sensorset.cpp
  22. sensorset.hpp
  23. sysfs.cpp
  24. sysfs.hpp
  25. targets.hpp
  26. thresholds.hpp
  27. util.hpp
README.md

Exposes generic hwmon entries as DBus objects.

To Build

To build this package, do the following steps:

    1. ./bootstrap.sh
    2. ./configure ${CONFIGURE_FLAGS}
    3. make

To full clean the repository again run `./bootstrap.sh clean`.

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 an autoconf
configurable prefix (BUSNAME_PREFIX, xyz.openbmc_project by default),
ID is a std::hash of the /sys/devices path backing the hwmon class
instance, and N is the implemented phosphor-hwmon D-Bus API version.