aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-08-19 23:35:18 -0700
committerChristian Cunningham <cc@localhost>2022-08-19 23:35:18 -0700
commitdc3326c21dad5fc72eff6804d1c9b1d673a79a12 (patch)
treea4219d9f665a1f4088bc57fdb6dc2c25a8be31bc
parent37038b21c3805de5c2117b2bd6e7397e16c999a3 (diff)
Fixed allocation bug
-rw-r--r--src/kernel.rs5
-rw-r--r--src/mem/alloc.rs16
2 files changed, 8 insertions, 13 deletions
diff --git a/src/kernel.rs b/src/kernel.rs
index e3e9166..321f34c 100644
--- a/src/kernel.rs
+++ b/src/kernel.rs
@@ -17,7 +17,6 @@
#![no_std]
extern crate alloc;
-use alloc::boxed::Box;
mod mem;
mod console;
@@ -28,7 +27,6 @@ mod sync;
mod uart;
use crate::console::console;
use crate::mem::alloc::*;
-//use crate::sync::interface::Mutex;
/// # Initialization Code
///
@@ -42,9 +40,6 @@ unsafe fn kernel_init() -> ! {
console().init().unwrap();
U64_QUEUE_ALLOCATOR.init();
ALLOCATOR.init();
- //ALLOCATOR.lock(|qa| {
- // qa.init();
- //});
kernel_main()
}
diff --git a/src/mem/alloc.rs b/src/mem/alloc.rs
index 927c00d..65e85eb 100644
--- a/src/mem/alloc.rs
+++ b/src/mem/alloc.rs
@@ -198,7 +198,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
panic!("No cells to allocate!");
}
Some(elem) => {
- return &mut (*(*elem).inner() as u8) as *mut u8;
+ return (*elem).inner() as *mut u16 as *mut u8;
}
}
}
@@ -208,7 +208,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
panic!("No cells to allocate!");
}
Some(elem) => {
- return &mut (*(*elem).inner() as u8) as *mut u8;
+ return (*elem).inner() as *mut u32 as *mut u8;
}
}
}
@@ -218,7 +218,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
panic!("No cells to allocate!");
}
Some(elem) => {
- return &mut (*(*elem).inner() as u8) as *mut u8;
+ return (*elem).inner() as *mut u64 as *mut u8;
}
}
}
@@ -228,7 +228,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
panic!("No cells to allocate!");
}
Some(elem) => {
- return &mut (*(*elem).inner() as u8) as *mut u8;
+ return (*elem).inner() as *mut u128 as *mut u8;
}
}
}
@@ -254,7 +254,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
2 => {
U16_GRAND_ALLOC.inner.lock(|pool| {
for idx in 2..pool.len() {
- if &mut (*pool[idx].inner() as u8) as *mut u8 == ptr {
+ if pool[idx].inner() as *mut u16 as *mut u8 == ptr {
U16_GRAND_ALLOC.free(&mut pool[idx]);
return;
}
@@ -265,7 +265,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
4 => {
U32_GRAND_ALLOC.inner.lock(|pool| {
for idx in 2..pool.len() {
- if &mut (*pool[idx].inner() as u8) as *mut u8 == ptr {
+ if pool[idx].inner() as *mut u32 as *mut u8 == ptr {
U32_GRAND_ALLOC.free(&mut pool[idx]);
return;
}
@@ -276,7 +276,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
8 => {
U64_GRAND_ALLOC.inner.lock(|pool| {
for idx in 2..pool.len() {
- if &mut (*pool[idx].inner() as u8) as *mut u8 == ptr {
+ if pool[idx].inner() as *mut u64 as *mut u8 == ptr {
U64_GRAND_ALLOC.free(&mut pool[idx]);
return;
}
@@ -287,7 +287,7 @@ unsafe impl GlobalAlloc for GrandAllocator {
16 => {
U128_GRAND_ALLOC.inner.lock(|pool| {
for idx in 2..pool.len() {
- if &mut (*pool[idx].inner() as u8) as *mut u8 == ptr {
+ if pool[idx].inner() as *mut u128 as *mut u8 == ptr {
U128_GRAND_ALLOC.free(&mut pool[idx]);
return;
}