heapless
heapless copied to clipboard
`heapless::pool` support for `x86_64`
I'm working on a no_std project targeting some armv7 CPUs. I would like to use heapless::pool but I am having issues because it is not available on my x86_64 host at test / lint time.
https://github.com/rust-embedded/heapless/blob/c7c731d3587a46a35d7bc316434eee7bab9c4180/src/lib.rs#L119-L120
In the docs there is a mention that it is available on ARM architectures which instruction set include the LDREX, CLREX and STREX instructions, and 32-bit x86, but it is unclear why x86_64 is no longer supported. It seems that x86_64 support was removed in https://github.com/rust-embedded/heapless/pull/315 last year.
What is limiting pool support such that it is available on x86 but not x86_64?
It's a good question. I tried to compile it on x86_64 with the x86 implementation to see what happens and 6 tests fail with signal: 11, SIGSEV: invalid memory reference.
I assume to support x86_64 we just need a backend implementation for the Treiber stack. This isn't something I have the time to investigate furthur at the moment sadly.