Skip to content

Commit d864ce7

Browse files
committed
uefi: use MemoryMapMeta in MemoryMap
This prepares the next commit.
1 parent 098fb77 commit d864ce7

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

uefi/src/table/boot.rs

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -234,20 +234,21 @@ impl BootServices {
234234
pub fn memory_map(&self, mt: MemoryType) -> Result<MemoryMap> {
235235
let mut buffer = MemoryMapBackingMemory::new(mt)?;
236236

237+
let meta = self.get_memory_map(buffer.as_mut_slice())?;
237238
let MemoryMapMeta {
238239
map_size,
239240
map_key,
240241
desc_size,
241242
desc_version,
242-
} = self.get_memory_map(buffer.as_mut_slice())?;
243+
} = meta;
243244

244245
let len = map_size / desc_size;
245246
assert_eq!(map_size % desc_size, 0);
246247
assert_eq!(desc_version, MemoryDescriptor::VERSION);
247248
Ok(MemoryMap {
248249
key: map_key,
249250
buf: buffer,
250-
desc_size,
251+
meta,
251252
len,
252253
})
253254
}
@@ -1812,27 +1813,20 @@ pub struct MemoryMap {
18121813
/// Backing memory, properly initialized at this point.
18131814
buf: MemoryMapBackingMemory,
18141815
key: MemoryMapKey,
1815-
/// Usually bound to the size of a [`MemoryDescriptor`] but can indicate if
1816-
/// this field is ever extended by a new UEFI standard.
1817-
desc_size: usize,
1816+
meta: MemoryMapMeta,
18181817
len: usize,
18191818
}
18201819

18211820
impl MemoryMap {
18221821
/// Creates a [`MemoryMap`] from the give initialized memory map behind
18231822
/// the buffer and the reported `desc_size` from UEFI.
18241823
pub(crate) fn from_initialized_mem(buf: MemoryMapBackingMemory, meta: MemoryMapMeta) -> Self {
1825-
let MemoryMapMeta {
1826-
map_size,
1827-
desc_size,
1828-
..
1829-
} = meta;
1830-
assert!(desc_size >= mem::size_of::<MemoryDescriptor>());
1831-
let len = map_size / desc_size;
1824+
assert!(meta.desc_size >= mem::size_of::<MemoryDescriptor>());
1825+
let len = meta.entry_count();
18321826
MemoryMap {
18331827
key: MemoryMapKey(0),
18341828
buf,
1835-
desc_size,
1829+
meta,
18361830
len,
18371831
}
18381832
}
@@ -1914,15 +1908,15 @@ impl MemoryMap {
19141908

19151909
unsafe {
19161910
ptr::swap_nonoverlapping(
1917-
base.add(index1 * self.desc_size),
1918-
base.add(index2 * self.desc_size),
1919-
self.desc_size,
1911+
base.add(index1 * self.meta.desc_size),
1912+
base.add(index2 * self.meta.desc_size),
1913+
self.meta.desc_size,
19201914
);
19211915
}
19221916
}
19231917

19241918
fn get_element_phys_addr(&self, index: usize) -> PhysicalAddress {
1925-
let offset = index.checked_mul(self.desc_size).unwrap();
1919+
let offset = index.checked_mul(self.meta.desc_size).unwrap();
19261920
let elem = unsafe { &*self.buf.as_ptr().add(offset).cast::<MemoryDescriptor>() };
19271921
elem.phys_start
19281922
}
@@ -1954,7 +1948,7 @@ impl MemoryMap {
19541948
&*self
19551949
.buf
19561950
.as_ptr()
1957-
.add(self.desc_size * index)
1951+
.add(self.meta.desc_size * index)
19581952
.cast::<MemoryDescriptor>()
19591953
};
19601954

@@ -1972,7 +1966,7 @@ impl MemoryMap {
19721966
&mut *self
19731967
.buf
19741968
.as_mut_ptr()
1975-
.add(self.desc_size * index)
1969+
.add(self.meta.desc_size * index)
19761970
.cast::<MemoryDescriptor>()
19771971
};
19781972

0 commit comments

Comments
 (0)