Skip to content

Commit 6bca433

Browse files
committed
Add a macro to make initialization easier
1 parent 8437c09 commit 6bca433

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

README.md

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ static HEAP: Heap = Heap::empty();
3131
#[entry]
3232
fn main() -> ! {
3333
// Initialize the allocator BEFORE you use it
34-
{
35-
use core::mem::MaybeUninit;
36-
const HEAP_SIZE: usize = 1024;
37-
static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
38-
unsafe { HEAP.init(&raw mut HEAP_MEM as usize, HEAP_SIZE) }
39-
}
34+
embedded_alloc::init!(HEAP, 1024);
4035

4136
// now the allocator is ready types like Box, Vec can be used.
4237

examples/global_alloc.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@ static HEAP: Heap = Heap::empty();
1717
#[entry]
1818
fn main() -> ! {
1919
// Initialize the allocator BEFORE you use it
20-
{
21-
use core::mem::MaybeUninit;
22-
const HEAP_SIZE: usize = 1024;
23-
static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
24-
unsafe { HEAP.init(&raw mut HEAP_MEM as usize, HEAP_SIZE) }
25-
}
20+
embedded_alloc::init!(HEAP, 1024);
2621

2722
let mut xs = Vec::new();
2823
xs.push(1);

src/lib.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,17 @@ mod tlsf;
1212
pub use llff::Heap as LlffHeap;
1313
#[cfg(feature = "tlsf")]
1414
pub use tlsf::Heap as TlsfHeap;
15+
16+
/// Init a heap with a static memory region.
17+
#[macro_export]
18+
macro_rules! init {
19+
($heap:ident, $size:expr) => {
20+
use core::mem::MaybeUninit;
21+
const HEAP_SIZE: usize = $size;
22+
static mut HEAP_MEM: [MaybeUninit<u8>; HEAP_SIZE] = [MaybeUninit::uninit(); HEAP_SIZE];
23+
#[allow(static_mut_refs)]
24+
unsafe {
25+
$heap.init(&raw mut HEAP_MEM as usize, HEAP_SIZE)
26+
}
27+
};
28+
}

0 commit comments

Comments
 (0)