void sleep_manager_lock_deep_sleep_internal(void) { core_util_critical_section_enter(); if (deep_sleep_lock == USHRT_MAX) { core_util_critical_section_exit(); error("Deep sleep lock would overflow (> USHRT_MAX)"); } core_util_atomic_incr_u16(&deep_sleep_lock, 1); core_util_critical_section_exit(); }
/* As crypto init counter changes from 0 to 1: * * 1. Enable crypto clock * 2. Enable crypto interrupt */ void crypto_init(void) { core_util_critical_section_enter(); if (crypto_init_counter == USHRT_MAX) { core_util_critical_section_exit(); error("Crypto clock enable counter would overflow (> USHRT_MAX)"); } core_util_atomic_incr_u16(&crypto_init_counter, 1); if (crypto_init_counter == 1) { SYS_UnlockReg(); // Unlock protected register CLK_EnableModuleClock(CRPT_MODULE); SYS_LockReg(); // Lock protected register NVIC_EnableIRQ(CRPT_IRQn); } core_util_critical_section_exit(); }
void sleep_manager_lock_deep_sleep_internal(void) { if (core_util_atomic_incr_u16(&deep_sleep_lock, 1) == 0) { MBED_ERROR1(MBED_MAKE_ERROR(MBED_MODULE_HAL, MBED_ERROR_CODE_OVERFLOW), "DeepSleepLock overflow (> 0xFFFF)", deep_sleep_lock); } }