aboutsummaryrefslogtreecommitdiff
path: root/embassy-executor/src/lib.rs
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-11-24 22:39:08 +0100
committerDario Nieuwenhuis <[email protected]>2023-11-24 23:52:09 +0100
commit996c3c1f7e389b1e7d26ca6f02524fff3d63212e (patch)
tree8e09c42e79abb4e2d14d03a5466afef3707a730a /embassy-executor/src/lib.rs
parent171cdb94c7906670723b0965ca66d72a2352ac73 (diff)
executor: make task arena size configurable.
Diffstat (limited to 'embassy-executor/src/lib.rs')
-rw-r--r--embassy-executor/src/lib.rs10
1 files changed, 7 insertions, 3 deletions
diff --git a/embassy-executor/src/lib.rs b/embassy-executor/src/lib.rs
index ac7dbb035..d8ac4893b 100644
--- a/embassy-executor/src/lib.rs
+++ b/embassy-executor/src/lib.rs
@@ -40,6 +40,11 @@ pub mod raw;
40mod spawner; 40mod spawner;
41pub use spawner::*; 41pub use spawner::*;
42 42
43mod config {
44 #![allow(unused)]
45 include!(concat!(env!("OUT_DIR"), "/config.rs"));
46}
47
43/// Implementation details for embassy macros. 48/// Implementation details for embassy macros.
44/// Do not use. Used for macros and HALs only. Not covered by semver guarantees. 49/// Do not use. Used for macros and HALs only. Not covered by semver guarantees.
45#[doc(hidden)] 50#[doc(hidden)]
@@ -86,7 +91,7 @@ pub mod _export {
86 let align_offset = (ptr as usize).next_multiple_of(layout.align()) - (ptr as usize); 91 let align_offset = (ptr as usize).next_multiple_of(layout.align()) - (ptr as usize);
87 92
88 if align_offset + layout.size() > bytes_left { 93 if align_offset + layout.size() > bytes_left {
89 panic!("arena full"); 94 panic!("embassy-executor: task arena is full. You must increase the arena size, see the documentation for details: https://docs.embassy.dev/embassy-executor/");
90 } 95 }
91 96
92 let res = unsafe { ptr.add(align_offset) }; 97 let res = unsafe { ptr.add(align_offset) };
@@ -98,8 +103,7 @@ pub mod _export {
98 } 103 }
99 } 104 }
100 105
101 const ARENA_SIZE: usize = 16 * 1024; 106 static ARENA: Arena<{ crate::config::TASK_ARENA_SIZE }> = Arena::new();
102 static ARENA: Arena<ARENA_SIZE> = Arena::new();
103 107
104 pub struct TaskPoolRef { 108 pub struct TaskPoolRef {
105 // type-erased `&'static mut TaskPool<F, N>` 109 // type-erased `&'static mut TaskPool<F, N>`