MCPcopy Index your code
hub / github.com/FrameworkComputer/framework-system / get_smbios

Function get_smbios

framework_lib/src/smbios.rs:230–253  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

228
229#[cfg(target_os = "freebsd")]
230pub fn get_smbios() -> Option<SmbiosStore> {
231 trace!("get_smbios() FreeBSD entry");
232 // Get the SMBIOS entrypoint address from the kernel environment
233 let addr_hex = kenv_get("hint.smbios.0.mem").ok()?;
234 let addr_hex = addr_hex.trim_start_matches("0x");
235 let addr = u64::from_str_radix(addr_hex, 16).unwrap();
236 trace!("SMBIOS Entrypoint Addr: {} 0x{:x}", addr_hex, addr);
237
238 let mut dev_mem = std::fs::File::open("/dev/mem").ok()?;
239 // Read enough bytes for either V2 (31 bytes) or V3 (24 bytes) entry point
240 let mut header_buf = [0u8; 32];
241 dev_mem.seek(SeekFrom::Start(addr)).ok()?;
242 dev_mem.read_exact(&mut header_buf).ok()?;
243
244 let entry = EntryPoint::search(&header_buf).ok()?;
245 let table_addr = entry.smbios_address();
246 let table_len = entry.smbios_len() as usize;
247
248 let mut table_data = vec![0u8; table_len];
249 dev_mem.seek(SeekFrom::Start(table_addr)).ok()?;
250 dev_mem.read_exact(&mut table_data).ok()?;
251
252 SmbiosStore::from_parts(&header_buf, table_data)
253}
254
255#[cfg(feature = "uefi")]
256pub fn get_smbios() -> Option<SmbiosStore> {

Callers 8

is_frameworkFunction · 0.85
get_product_nameFunction · 0.85
get_baseboard_versionFunction · 0.85
print_versionsFunction · 0.85
probably_has_nvidiaFunction · 0.85
compare_versionFunction · 0.85
smbios_infoFunction · 0.85
me_infoFunction · 0.85

Calls 2

kenv_getFunction · 0.85
smbios_dataFunction · 0.85

Tested by

no test coverage detected