1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-05 12:42:22 +03:00

Allow constexpr evalution to occur. optimistic_yield is always called with a literal parameter value.

This commit is contained in:
Dirk O. Kaar
2019-12-02 11:05:21 +01:00
parent 3d7423bdde
commit 3767791fbc
2 changed files with 22 additions and 6 deletions

View File

@ -57,7 +57,7 @@ cont_t* g_pcont __attribute__((section(".noinit")));
/* Event queue used by the main (arduino) task */
static os_event_t s_loop_queue[LOOP_QUEUE_SIZE];
/* Used to implement optimistic_yield */
/* Used to implement __optimistic_yield */
static uint32_t s_cycles_since_yield_start;
/* For ets_intr_lock_nest / ets_intr_unlock_nest
@ -125,10 +125,9 @@ extern "C" void __yield() {
extern "C" void yield(void) __attribute__ ((weak, alias("__yield")));
extern "C" void optimistic_yield(uint32_t interval_us) {
const uint32_t interval_cycles = interval_us * ESP.getCpuFreqMHz();
if (can_yield() &&
(ESP.getCycleCount() - s_cycles_since_yield_start) > interval_cycles)
extern "C" void __optimistic_yield(uint32_t intvl_cycles) {
if ((ESP.getCycleCount() - s_cycles_since_yield_start) > intvl_cycles &&
can_yield())
{
yield();
}