diff options
-rw-r--r-- | sysfs.cpp | 38 | ||||
-rw-r--r-- | sysfs.hpp | 13 | ||||
-rw-r--r-- | test/Makefile.am | 6 |
3 files changed, 57 insertions, 0 deletions
@@ -19,6 +19,7 @@ #include <experimental/filesystem> #include <fstream> #include <memory> +#include <phosphor-logging/log.hpp> #include <thread> #include "sysfs.hpp" @@ -238,6 +239,43 @@ std::string findHwmonFromOFPath(const std::string& ofNode) return emptyString; } +std::string findHwmonFromDevPath(const std::string& devPath) +{ + fs::path p{"/sys"}; + p /= devPath; + p /= "hwmon"; + + try + { + //This path is also used as a filesystem path to an environment + //file, and that has issues with ':'s in the path so they've + //been converted to '--'s. Convert them back now. + size_t pos = 0; + std::string path = p; + while ((pos = path.find("--")) != std::string::npos) + { + path.replace(pos, 2, ":"); + } + + for (const auto& hwmonInst : fs::directory_iterator(path)) + { + if ((hwmonInst.path().filename().string().find("hwmon") != + std::string::npos)) + { + return hwmonInst.path(); + } + } + } + catch (const std::exception& e) + { + using namespace phosphor::logging; + log<level::ERR>( + "Unable to find hwmon directory from the dev path", + entry("PATH=%s", devPath.c_str())); + } + return emptyString; +} + namespace hwmonio { @@ -51,6 +51,19 @@ std::string findPhandleMatch( */ std::string findHwmonFromOFPath(const std::string& ofNode); +/** @brief Find hwmon instances from a device path + * + * Look for a matching hwmon instance given a device path that + * starts with /devices. This path is the DEVPATH udev attribute + * for the device except it has the '/hwmon/hwmonN' stripped off. + * + * @param[in] devPath - The device path. + * + * @return - The hwmon instance path or an empty + * string if no match is found. + */ +std::string findHwmonFromDevPath(const std::string& devPath); + /** @brief Return the path to use for a call out. * * Return an empty string if a callout path cannot be diff --git a/test/Makefile.am b/test/Makefile.am index 0825659..a52a992 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -11,6 +11,8 @@ find_callout_path_LDFLAGS = \ -static find_callout_path_LDADD = \ -lstdc++fs \ + $(SDBUSPLUS_LIBS) \ + $(PHOSPHOR_LOGGING_LIBS) \ ${top_builddir}/sysfs.o find_callout_path_CXXFLAGS = @@ -21,6 +23,8 @@ find_hwmon_LDFLAGS = \ -static find_hwmon_LDADD = \ -lstdc++fs \ + $(SDBUSPLUS_LIBS) \ + $(PHOSPHOR_LOGGING_LIBS) \ ${top_builddir}/sysfs.o find_hwmon_CXXFLAGS = @@ -31,6 +35,8 @@ hwmonio_LDFLAGS = \ -static hwmonio_LDADD = \ -lstdc++fs \ + $(SDBUSPLUS_LIBS) \ + $(PHOSPHOR_LOGGING_LIBS) \ ${top_builddir}/sysfs.o hwmonio_CXXFLAGS = |