ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
1432115 Топик полностью
Nikolay_Po (03.05.2024 18:26, просмотров: 144) ответил POV на Ха, прикольное
Статья по ссылке оставила вопросы. Почитал руководство по программированию ядра. Вот что выяснил: 

Пара иструкций эксклюзивного доступа гаратнирует эксклюзивность только для указанного адреса памяти и указанной ширины обращения. Цитата для LDREX: "Used to read the value of a memory location, requesting exclusive access to that location". То есть, нельзя одним заходом, обеспечить атомарность доступа более чем к 32 битам. Таим образом, эти инструкции, LDREX/STREX, больше всего подходят для атомарного R-M-W одной переменной.

Хорошая новость: допустимо вложенное использование LDREX/STREX. То есть, код, прерывающий исполнение между LDREX и STREX, сам может содержать LDREX и STREX. Нормально отработает самая глубоко вложенная пара LDREX/STREX. Так как самая глубоко вложенная STREX (запись) гарантированно сбрасывает бит эксклюзивности, остальные прерванные доступы получат отказ записи при исполнении STREX и пойдут на повтор. Вне зависимости от того, были обращения по одному адресу или по разным.

Не супер-эффективно, но Годно!