heapless icon indicating copy to clipboard operation
heapless copied to clipboard

`heapless::pool` support for `x86_64`

Open ophilli opened this issue 2 years ago • 1 comments

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?

ophilli avatar Nov 29 '23 05:11 ophilli

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.

newAM avatar Nov 29 '23 05:11 newAM