diff options
-rw-r--r-- | README.md | 15 | ||||
-rw-r--r-- | mainloop.cpp | 7 |
2 files changed, 20 insertions, 2 deletions
@@ -10,3 +10,18 @@ To build this package, do the following steps: 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. +``` diff --git a/mainloop.cpp b/mainloop.cpp index bf2cacc..61de673 100644 --- a/mainloop.cpp +++ b/mainloop.cpp @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#include <functional> #include <iostream> #include <memory> #include <cstdlib> @@ -373,8 +374,10 @@ void MainLoop::run() { std::string busname{_prefix}; - busname.append(1, '.'); - busname.append(_instance); + busname.append(1, '-'); + busname.append( + std::to_string(std::hash<decltype(_devPath)>{}(_devPath))); + busname.append(".Hwmon1"); _bus.request_name(busname.c_str()); } |