mirror of
https://github.com/rust-embedded/heapless.git
synced 2025-09-27 04:20:24 +00:00

this reduces the chances of hitting the 32-bit address space issue on x86_64 instead of (always) using a static ANCHOR variable located in .bss we lazily initialize the ANCHOR variable using the value passed to the first `Ptr::new` invocation. In practice, this means the very first `Pool::grow` (on x86_64) call is guaranteed to work (use the given memory). Follow up `grow` invocations are *more likely* to work (but not guaranteed) *if* all given memory comes from the heap. We still need an ANCHOR in .bss as a fallback because it's possible to allocate ZST on a pool without calling `Pool::grow` (= the lazily init ANCHOR is never initialized *but* it can be read)
heapless
static
friendly data structures that don't require dynamic memory allocation
Documentation
Change log
Tests
# run all
cargo test --features 'serde','x86-sync-pool'
# run only for example histbuf tests
cargo test histbuf --features 'serde','x86-sync-pool'
License
Licensed under either of
-
Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
-
MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Description
Languages
Rust
100%