Skip to content

Commit 798be4f

Browse files
committed
Relax the MultiwriteNorFlash to only need clearing of words
1 parent 163dfc5 commit 798be4f

File tree

8 files changed

+126
-95
lines changed

8 files changed

+126
-95
lines changed

src/cache/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ pub(crate) trait PrivateCacheImpl: Invalidate {
9696
&mut self,
9797
flash_range: Range<u32>,
9898
item_address: u32,
99-
item_header: &ItemHeader,
99+
item_header: &ItemHeader<S>,
100100
) {
101101
self.mark_dirty();
102102
self.page_pointers()
@@ -108,7 +108,7 @@ pub(crate) trait PrivateCacheImpl: Invalidate {
108108
&mut self,
109109
flash_range: Range<u32>,
110110
item_address: u32,
111-
item_header: &ItemHeader,
111+
item_header: &ItemHeader<S>,
112112
) {
113113
self.mark_dirty();
114114
self.page_pointers()

src/cache/page_pointers.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@ pub(crate) trait PagePointersCache: Debug {
1414
&mut self,
1515
flash_range: Range<u32>,
1616
item_address: u32,
17-
item_header: &ItemHeader,
17+
item_header: &ItemHeader<S>,
1818
);
1919
fn notice_item_erased<S: NorFlash>(
2020
&mut self,
2121
flash_range: Range<u32>,
2222
item_address: u32,
23-
item_header: &ItemHeader,
23+
item_header: &ItemHeader<S>,
2424
);
2525

2626
fn notice_page_state(&mut self, page_index: usize, new_state: PageState);
@@ -89,11 +89,11 @@ impl<const PAGE_COUNT: usize> PagePointersCache for CachedPagePointers<PAGE_COUN
8989
&mut self,
9090
flash_range: Range<u32>,
9191
item_address: u32,
92-
item_header: &ItemHeader,
92+
item_header: &ItemHeader<S>,
9393
) {
9494
let page_index = calculate_page_index::<S>(flash_range, item_address);
9595

96-
let next_item_address = item_header.next_item_address::<S>(item_address);
96+
let next_item_address = item_header.next_item_address(item_address);
9797

9898
// We only care about the furthest written item, so discard if this is an earlier item
9999
if let Some(first_item_after_written) = self.first_item_after_written(page_index) {
@@ -109,7 +109,7 @@ impl<const PAGE_COUNT: usize> PagePointersCache for CachedPagePointers<PAGE_COUN
109109
&mut self,
110110
flash_range: Range<u32>,
111111
item_address: u32,
112-
item_header: &ItemHeader,
112+
item_header: &ItemHeader<S>,
113113
) {
114114
let page_index = calculate_page_index::<S>(flash_range.clone(), item_address);
115115

@@ -120,7 +120,7 @@ impl<const PAGE_COUNT: usize> PagePointersCache for CachedPagePointers<PAGE_COUN
120120

121121
if item_address == next_unerased_item {
122122
self.after_erased_pointers[page_index] =
123-
NonZeroU32::new(item_header.next_item_address::<S>(item_address));
123+
NonZeroU32::new(item_header.next_item_address(item_address));
124124
}
125125
}
126126

@@ -155,15 +155,15 @@ impl PagePointersCache for UncachedPagePointers {
155155
&mut self,
156156
_flash_range: Range<u32>,
157157
_item_address: u32,
158-
_item_header: &ItemHeader,
158+
_item_header: &ItemHeader<S>,
159159
) {
160160
}
161161

162162
fn notice_item_erased<S: NorFlash>(
163163
&mut self,
164164
_flash_range: Range<u32>,
165165
_item_address: u32,
166-
_item_header: &ItemHeader,
166+
_item_header: &ItemHeader<S>,
167167
) {
168168
}
169169

src/cache/tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ mod queue_tests {
2323
reads: 594934,
2424
writes: 6299,
2525
bytes_read: 2766058,
26-
bytes_written: 53299
26+
bytes_written: 45299,
2727
}
2828
);
2929
}
@@ -37,7 +37,7 @@ mod queue_tests {
3737
reads: 308740,
3838
writes: 6299,
3939
bytes_read: 2479864,
40-
bytes_written: 53299
40+
bytes_written: 45299
4141
}
4242
);
4343
}
@@ -51,7 +51,7 @@ mod queue_tests {
5151
reads: 211172,
5252
writes: 6299,
5353
bytes_read: 1699320,
54-
bytes_written: 53299
54+
bytes_written: 45299
5555
}
5656
);
5757
}

0 commit comments

Comments
 (0)