summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md15
-rw-r--r--mainloop.cpp7
2 files changed, 20 insertions, 2 deletions
diff --git a/README.md b/README.md
index 8ac88a2..b6fce54 100644
--- a/README.md
+++ b/README.md
@@ -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());
}
OpenPOWER on IntegriCloud