fan-monitor: use sd_notify(READY=1)

After the fans have initialized their Functional inventory
property, send systemd the READY notification.  If the service
which runs this application is of type = notify, then systemd
will hold off starting any dependent services until this is sent.

In our case, we want phosphor-fan-control --control to not be
started until this notification is done.

Change-Id: Iec87418ce308aa9ca81a47c20039ade7e8fe66c3
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/monitor/main.cpp b/monitor/main.cpp
index 5da6a5b..b9c1d81 100644
--- a/monitor/main.cpp
+++ b/monitor/main.cpp
@@ -15,6 +15,7 @@
  */
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/bus.hpp>
+#include <systemd/sd-daemon.h>
 #include "event.hpp"
 #include "fan.hpp"
 #include "fan_defs.hpp"
@@ -48,6 +49,15 @@
         fans.emplace_back(std::make_unique<Fan>(bus, eventPtr, fanDef));
     }
 
+    //Tell systemd we are initialized
+    r = sd_notify(0, "READY=1");
+    if (r < 1) // 0 = nothing sent, < 0 is a failure
+    {
+        log<level::ERR>("sd_notify did not send anything",
+                        entry("ERROR=%d", r));
+        return -1;
+    }
+
     r = sd_event_loop(eventPtr.get());
     if (r < 0)
     {