diff options
-rw-r--r-- | src/mem/alloc.rs | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/src/mem/alloc.rs b/src/mem/alloc.rs index 65e85eb..74f5f1d 100644 --- a/src/mem/alloc.rs +++ b/src/mem/alloc.rs @@ -43,6 +43,10 @@ impl<T> QueueItem<'_,T> { pub fn inner(&mut self) -> &mut T { &mut self.data } + /// # Get pointer to inner data + pub fn ptr(&mut self) -> *mut u8 { + self.inner() as *mut T as *mut u8 + } } /// # Sharing Thread Safety for QueueItem unsafe impl<T> Send for QueueItem<'_,T> {} @@ -188,7 +192,7 @@ unsafe impl GlobalAlloc for GrandAllocator { panic!("No cells to allocate!"); } Some(elem) => { - return (*elem).inner() as *mut u8; + return (*elem).ptr(); } } } @@ -198,7 +202,7 @@ unsafe impl GlobalAlloc for GrandAllocator { panic!("No cells to allocate!"); } Some(elem) => { - return (*elem).inner() as *mut u16 as *mut u8; + return (*elem).ptr(); } } } @@ -208,7 +212,7 @@ unsafe impl GlobalAlloc for GrandAllocator { panic!("No cells to allocate!"); } Some(elem) => { - return (*elem).inner() as *mut u32 as *mut u8; + return (*elem).ptr(); } } } @@ -218,7 +222,7 @@ unsafe impl GlobalAlloc for GrandAllocator { panic!("No cells to allocate!"); } Some(elem) => { - return (*elem).inner() as *mut u64 as *mut u8; + return (*elem).ptr(); } } } @@ -228,7 +232,7 @@ unsafe impl GlobalAlloc for GrandAllocator { panic!("No cells to allocate!"); } Some(elem) => { - return (*elem).inner() as *mut u128 as *mut u8; + return (*elem).ptr(); } } } @@ -254,7 +258,7 @@ unsafe impl GlobalAlloc for GrandAllocator { 2 => { U16_GRAND_ALLOC.inner.lock(|pool| { for idx in 2..pool.len() { - if pool[idx].inner() as *mut u16 as *mut u8 == ptr { + if pool[idx].ptr() == ptr { U16_GRAND_ALLOC.free(&mut pool[idx]); return; } @@ -265,7 +269,7 @@ unsafe impl GlobalAlloc for GrandAllocator { 4 => { U32_GRAND_ALLOC.inner.lock(|pool| { for idx in 2..pool.len() { - if pool[idx].inner() as *mut u32 as *mut u8 == ptr { + if pool[idx].ptr() == ptr { U32_GRAND_ALLOC.free(&mut pool[idx]); return; } @@ -276,7 +280,7 @@ unsafe impl GlobalAlloc for GrandAllocator { 8 => { U64_GRAND_ALLOC.inner.lock(|pool| { for idx in 2..pool.len() { - if pool[idx].inner() as *mut u64 as *mut u8 == ptr { + if pool[idx].ptr() == ptr { U64_GRAND_ALLOC.free(&mut pool[idx]); return; } @@ -287,7 +291,7 @@ unsafe impl GlobalAlloc for GrandAllocator { 16 => { U128_GRAND_ALLOC.inner.lock(|pool| { for idx in 2..pool.len() { - if pool[idx].inner() as *mut u128 as *mut u8 == ptr { + if pool[idx].ptr() == ptr { U128_GRAND_ALLOC.free(&mut pool[idx]); return; } |