Populate timestamps with microsecond precision

xyz.openbmc_project.Time.EpochTime is defined as time elapsed since the
epoch in microseconds.

xyz.openbmc_project.Common.Progress.StartTime and
xyz.openbmc_project.Common.Progress.CompletedTime are similarly
defined as microseconds.

Change timestamps that are currently captured in seconds to
microseconds.

Tested:

Check xyz.openbmc_project.Time.EpochTime,
xyz.openbmc_project.Common.Progress.StartTime, and
xyz.openbmc_project.Common.Progress.CompletedTime timestamps of dump
entries.

Example:
busctl introspect xyz.openbmc_project.Dump.Manager /xyz/openbmc_project/dump/bmc/entry/1

Signed-off-by: Claire Weinan <cweinan@google.com>
Change-Id: I6ea220af07f06ad79de0b62b24ce6cd5ba5fd33d
diff --git a/dump-extensions/openpower-dumps/dump_manager_resource.cpp b/dump-extensions/openpower-dumps/dump_manager_resource.cpp
index e4cb346..a151961 100644
--- a/dump-extensions/openpower-dumps/dump_manager_resource.cpp
+++ b/dump-extensions/openpower-dumps/dump_manager_resource.cpp
@@ -26,7 +26,10 @@
 void Manager::notify(uint32_t dumpId, uint64_t size)
 {
     // Get the timestamp
-    std::time_t timeStamp = std::time(nullptr);
+    uint64_t timeStamp =
+        std::chrono::duration_cast<std::chrono::microseconds>(
+            std::chrono::system_clock::now().time_since_epoch())
+            .count();
 
     // If there is an entry with invalid id update that.
     // If there a completed one with same source id ignore it
@@ -128,7 +131,10 @@
     auto id = lastEntryId + 1;
     auto idString = std::to_string(id);
     auto objPath = std::filesystem::path(baseEntryPath) / idString;
-    std::time_t timeStamp = std::time(nullptr);
+    uint64_t timeStamp =
+        std::chrono::duration_cast<std::chrono::microseconds>(
+            std::chrono::system_clock::now().time_since_epoch())
+            .count();
 
     std::string vspString;
     auto iter = params.find(
diff --git a/dump-extensions/openpower-dumps/dump_manager_system.cpp b/dump-extensions/openpower-dumps/dump_manager_system.cpp
index e8e8953..7310dec 100644
--- a/dump-extensions/openpower-dumps/dump_manager_system.cpp
+++ b/dump-extensions/openpower-dumps/dump_manager_system.cpp
@@ -26,7 +26,10 @@
 {
 
     // Get the timestamp
-    std::time_t timeStamp = std::time(nullptr);
+    uint64_t timeStamp =
+        std::chrono::duration_cast<std::chrono::microseconds>(
+            std::chrono::system_clock::now().time_since_epoch())
+            .count();
 
     // System dump can get created due to a fault in server
     // or by request from user. A system dump by fault is
@@ -107,7 +110,10 @@
     auto id = lastEntryId + 1;
     auto idString = std::to_string(id);
     auto objPath = std::filesystem::path(baseEntryPath) / idString;
-    std::time_t timeStamp = std::time(nullptr);
+    uint64_t timeStamp =
+        std::chrono::duration_cast<std::chrono::microseconds>(
+            std::chrono::system_clock::now().time_since_epoch())
+            .count();
 
     try
     {
diff --git a/dump_manager_bmc.cpp b/dump_manager_bmc.cpp
index ef128df..66f780d 100644
--- a/dump_manager_bmc.cpp
+++ b/dump_manager_bmc.cpp
@@ -53,7 +53,11 @@
 
     try
     {
-        std::time_t timeStamp = std::time(nullptr);
+        uint64_t timeStamp =
+            std::chrono::duration_cast<std::chrono::microseconds>(
+                std::chrono::system_clock::now().time_since_epoch())
+                .count();
+
         entries.insert(std::make_pair(
             id, std::make_unique<bmc::Entry>(
                     bus, objPath.c_str(), id, timeStamp, 0, std::string(),