pw_kvs: de-inline FlashPartition constructor
This is so that we can safely use PW_DCHECK
Change-Id: Id29b7ebfbef012ee892255d9eac735044a49f311
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/21041
Commit-Queue: Paul Mathieu <paulmathieu@google.com>
Reviewed-by: David Rogers <davidrogers@google.com>
diff --git a/pw_kvs/flash_memory.cc b/pw_kvs/flash_memory.cc
index ceb2d3e..1f663c4 100644
--- a/pw_kvs/flash_memory.cc
+++ b/pw_kvs/flash_memory.cc
@@ -41,6 +41,28 @@
return result;
}
+FlashPartition::FlashPartition(
+ FlashMemory* flash,
+ uint32_t start_sector_index,
+ uint32_t sector_count,
+ uint32_t alignment_bytes, // Defaults to flash alignment
+ PartitionPermission permission)
+
+ : flash_(*flash),
+ start_sector_index_(start_sector_index),
+ sector_count_(sector_count),
+ alignment_bytes_(
+ alignment_bytes == 0
+ ? flash_.alignment_bytes()
+ : std::max(alignment_bytes, uint32_t(flash_.alignment_bytes()))),
+ permission_(permission) {
+ uint32_t misalignment = (alignment_bytes_ % flash_.alignment_bytes());
+ PW_DCHECK_UINT_EQ(misalignment,
+ 0,
+ "Flash partition alignmentmust be a multiple of the flash "
+ "memory alignment");
+}
+
Status FlashPartition::Erase(Address address, size_t num_sectors) {
if (permission_ == PartitionPermission::kReadOnly) {
return Status::PermissionDenied();
diff --git a/pw_kvs/public/pw_kvs/flash_memory.h b/pw_kvs/public/pw_kvs/flash_memory.h
index 029fba2..0590e56 100644
--- a/pw_kvs/public/pw_kvs/flash_memory.h
+++ b/pw_kvs/public/pw_kvs/flash_memory.h
@@ -169,22 +169,7 @@
uint32_t start_sector_index,
uint32_t sector_count,
uint32_t alignment_bytes = 0, // Defaults to flash alignment
- PartitionPermission permission = PartitionPermission::kReadAndWrite)
- : flash_(*flash),
- start_sector_index_(start_sector_index),
- sector_count_(sector_count),
- alignment_bytes_(alignment_bytes == 0
- ? flash_.alignment_bytes()
- : std::max(alignment_bytes,
- uint32_t(flash_.alignment_bytes()))),
- permission_(permission) {
- uint32_t misalignment = (alignment_bytes_ % flash_.alignment_bytes());
- PW_DCHECK_UINT_EQ(
- misalignment,
- 0,
- "Flash partition alignmentmust be a multiple of the flash "
- "memory alignment");
- }
+ PartitionPermission permission = PartitionPermission::kReadAndWrite);
// Creates a FlashPartition that uses the entire flash with its alignment.
// TODO(pwbug/246): This can be constexpr when tokenized asserts are fixed.