summaryrefslogtreecommitdiffstats
path: root/mboxd_pnor_partition_table.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mboxd_pnor_partition_table.cpp')
-rw-r--r--mboxd_pnor_partition_table.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/mboxd_pnor_partition_table.cpp b/mboxd_pnor_partition_table.cpp
index e58b019..db53dc8 100644
--- a/mboxd_pnor_partition_table.cpp
+++ b/mboxd_pnor_partition_table.cpp
@@ -26,17 +26,17 @@ int init_vpnor(struct mbox_context *context)
strncpy(context->paths.patch_loc, PARTITION_FILES_PATCH_LOC, PATH_MAX);
context->paths.prsv_loc[PATH_MAX - 1] = '\0';
- rc = vpnor_create_partition_table_from_path(context,
- PARTITION_FILES_RO_LOC);
+ rc = init_vpnor_from_paths(context);
if (rc < 0)
+ {
return rc;
+ }
}
return 0;
}
-int vpnor_create_partition_table_from_path(struct mbox_context *context,
- const char *path)
+int init_vpnor_from_paths(struct mbox_context *context)
{
namespace err = sdbusplus::xyz::openbmc_project::Common::Error;
namespace fs = std::experimental::filesystem;
@@ -44,14 +44,11 @@ int vpnor_create_partition_table_from_path(struct mbox_context *context,
if (context && !context->vpnor)
{
- fs::path dir(path);
try
{
context->vpnor = new vpnor_partition_table;
context->vpnor->table =
- new openpower::virtual_pnor::partition::Table(
- std::move(dir), 1 << context->erase_size_shift,
- context->flash_size);
+ new openpower::virtual_pnor::partition::Table(context);
}
catch (vpnor::TocEntryError &e)
{
@@ -87,17 +84,14 @@ int vpnor_copy_bootloader_partition(const struct mbox_context *context)
try
{
- openpower::virtual_pnor::partition::Table blTable(
- fs::path{PARTITION_FILES_RO_LOC}, eraseSize, pnorSize);
-
vpnor_partition_table vtbl{};
- vtbl.table = &blTable;
- struct mbox_context local
- {
- };
+ struct mbox_context local = *context;
local.vpnor = &vtbl;
local.block_size_shift = log_2(eraseSize);
- memcpy(&local.paths, &context->paths, sizeof(local.paths));
+
+ openpower::virtual_pnor::partition::Table blTable(&local);
+
+ vtbl.table = &blTable;
size_t tocOffset = 0;
OpenPOWER on IntegriCloud