vpnor: add API to get partition entry by name
Change-Id: I1f86c646c6629a6a42788821e469d36f55c92264
Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
diff --git a/pnor_partition_table.cpp b/pnor_partition_table.cpp
index 1168d2d..36f0765 100644
--- a/pnor_partition_table.cpp
+++ b/pnor_partition_table.cpp
@@ -1,6 +1,8 @@
#include "pnor_partition_table.hpp"
#include "common.h"
#include "config.h"
+#include "xyz/openbmc_project/Common/error.hpp"
+#include <phosphor-logging/elog-errors.hpp>
#include <syslog.h>
#include <endian.h>
#include <regex>
@@ -12,6 +14,9 @@
namespace virtual_pnor
{
+using namespace phosphor::logging;
+using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+
namespace partition
{
@@ -192,6 +197,24 @@
return p;
}
+const pnor_partition& Table::partition(const std::string& name) const
+{
+ const decltype(auto) table = getNativeTable();
+
+ for (decltype(numParts) i{}; i < numParts; ++i)
+ {
+ if (name == table.partitions[i].data.name)
+ {
+ return table.partitions[i];
+ }
+ }
+
+ MSG_ERR("Partition %s not found", name.c_str());
+ elog<InternalFailure>();
+ static pnor_partition p{};
+ return p;
+}
+
} // namespace partition
PartitionTable endianFixup(const PartitionTable& in)