From b0d1b6efacda3db0eadfeef43d145e88dcb5ba7d Mon Sep 17 00:00:00 2001 From: Sam Leffler Date: Thu, 23 Jun 2022 03:13:34 +0000 Subject: [PATCH] kata_object_alloc_in_cnode: misc fixups - optimize CNode size calc - remove an extranous map_err that hid the true error Change-Id: I63a43dff7c242d49f2f968abdde4134ac300d0b1 GitOrigin-RevId: 9e8e9ec4b3bb33dca53ee45aed231836dec7d6e4 --- .../MemoryManager/kata-memory-interface/src/lib.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/apps/system/components/MemoryManager/kata-memory-interface/src/lib.rs b/apps/system/components/MemoryManager/kata-memory-interface/src/lib.rs index 820ffbc..e9b982c 100644 --- a/apps/system/components/MemoryManager/kata-memory-interface/src/lib.rs +++ b/apps/system/components/MemoryManager/kata-memory-interface/src/lib.rs @@ -424,18 +424,14 @@ pub fn kata_object_alloc_in_cnode( objs: Vec, ) -> Result { fn next_log2(value: usize) -> usize { - let mut size_bits = 0; - while value > (1 << size_bits) { - size_bits += 1; - } - size_bits + // NB: BITS & leading_zeros return u32 + (1 + usize::BITS - usize::leading_zeros(value)) as usize } // NB: CNode size depends on how many objects are requested. let cnode_depth = next_log2(objs.iter().map(|od| od.count).sum()); // Request a top-level CNode. - let cnode = kata_cnode_alloc(cnode_depth) - .map_err(|_| MemoryManagerError::MmeAllocFailed)?; + let cnode = kata_cnode_alloc(cnode_depth)?; // Now construct the request for |objs| with |cnode| as the container. let request = ObjDescBundle::new(