drivers: nrf_rtc_timer: Remove unnecessary interrupt locking

There is no need to disable interrupts while just checking if
a channel needs to be processed in the ISR, as that section
does not contain anything that needs to be protected against
overwriting from some other context. In particular, if a given
timeout is changed or even aborted while its event is being
checked, this will be correctly handled in the code that follows
and that checks the expiration time.

Signed-off-by: Andrzej Głąbek <andrzej.glabek@nordicsemi.no>
This commit is contained in:
Andrzej Głąbek 2023-01-04 15:08:38 +01:00 committed by Carles Cufí
commit 3454a2547e

View file

@ -424,25 +424,18 @@ static void sys_clock_timeout_handler(int32_t chan,
static bool channel_processing_check_and_clear(int32_t chan)
{
bool result = false;
uint32_t mcu_critical_state = full_int_lock();
if (nrf_rtc_int_enable_check(RTC, RTC_CHANNEL_INT_MASK(chan))) {
/* The processing of channel can be caused by CC match
* or be forced.
*/
result = (atomic_and(&force_isr_mask, ~BIT(chan)) & BIT(chan)) ||
event_check(chan);
if (result) {
if ((atomic_and(&force_isr_mask, ~BIT(chan)) & BIT(chan)) ||
event_check(chan)) {
event_clear(chan);
return true;
}
}
full_int_unlock(mcu_critical_state);
return result;
return false;
}
static void process_channel(int32_t chan)