summaryrefslogtreecommitdiffstats
path: root/mboxd_pnor_partition_table.cpp
diff options
context:
space:
mode:
authorDeepak Kodihalli <dkodihal@in.ibm.com>2017-04-29 13:01:49 -0500
committerDeepak Kodihalli <dkodihal@in.ibm.com>2017-06-27 08:40:32 -0500
commitb6a446f9070e6a8f044227ed74269aeb627cd1af (patch)
tree86463a62a1c185d8f7e0c74eb78b57bad4dfa1f4 /mboxd_pnor_partition_table.cpp
parent393821dd663f54384ea5b12cf30ab7944ceae5a6 (diff)
downloadphosphor-mboxd-b6a446f9070e6a8f044227ed74269aeb627cd1af.tar.gz
phosphor-mboxd-b6a446f9070e6a8f044227ed74269aeb627cd1af.zip
pnor: provide "C" interface to partition table
Change-Id: I35af6c4c43e9a43f6a21992bfb0c13542a2c8f0d Signed-off-by: Deepak Kodihalli <dkodihal@in.ibm.com>
Diffstat (limited to 'mboxd_pnor_partition_table.cpp')
-rw-r--r--mboxd_pnor_partition_table.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/mboxd_pnor_partition_table.cpp b/mboxd_pnor_partition_table.cpp
new file mode 100644
index 0000000..72a8953
--- /dev/null
+++ b/mboxd_pnor_partition_table.cpp
@@ -0,0 +1,52 @@
+#include "mboxd_pnor_partition_table.h"
+#include "mbox.h"
+#include "pnor_partition_table.hpp"
+
+struct vpnor_partition_table
+{
+ openpower::virtual_pnor::partition::Table* table = nullptr;
+};
+
+void vpnor_create_partition_table(struct mbox_context *context)
+{
+ if (context)
+ {
+ if (!context->vpnor)
+ {
+ context->vpnor = new vpnor_partition_table;
+ context->vpnor->table =
+ new openpower::virtual_pnor::partition::Table;
+ }
+ }
+}
+
+size_t vpnor_get_partition_table_size(const struct mbox_context *context)
+{
+ return context && context->vpnor ?
+ context->vpnor->table->size() : 0;
+}
+
+const struct pnor_partition_table* vpnor_get_partition_table(
+ const struct mbox_context *context)
+{
+ return context && context->vpnor ?
+ &(context->vpnor->table->getHostTable()) : nullptr;
+}
+
+const struct pnor_partition* vpnor_get_partition(
+ const struct mbox_context *context,
+ const size_t offset)
+{
+ return context && context->vpnor ?
+ &(context->vpnor->table->partition(offset)) : nullptr;
+}
+
+void vpnor_destroy_partition_table(struct mbox_context *context)
+{
+ if(context && context->vpnor)
+ {
+ delete context->vpnor->table;
+ delete context->vpnor;
+ context->vpnor = nullptr;
+ }
+}
OpenPOWER on IntegriCloud