Document that atomics in psram don't work (#3379)

This commit is contained in:
Dániel Buga 2025-04-14 11:33:00 +02:00 committed by GitHub
parent 11ba2509d2
commit e697c62cfd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -28,14 +28,21 @@ macro_rules! heap_allocator {
/// Initialize a global heap allocator backed by PSRAM
///
/// You need a SoC which supports PSRAM
/// and activate the feature to enable it. You need to pass the PSRAM peripheral
/// and the psram module path.
/// You need a SoC which supports PSRAM and activate the feature to enable
/// it. You need to pass the PSRAM peripheral and the psram module path.
///
/// # Usage
///
/// ```rust, no_run
/// esp_alloc::psram_allocator!(peripherals.PSRAM, hal::psram);
/// ```
///
/// # ⚠️ Limitations
///
/// On ESP32, ESP32-S2 and ESP32-S3 the atomic instructions do not work
/// correctly when the memory they access is located in PSRAM. This means that
/// the allocator must not be used to allocate `Atomic*` types - either directly
/// or indirectly. Be very careful when using PSRAM in your global allocator.
#[macro_export]
macro_rules! psram_allocator {
($peripheral:expr, $psram_module:path) => {{