py/scheduler: Convert mp_sched_full and mp_sched_num_pending to macros.
So they are guaranteed to be inlined within functions like mp_sched_schedule which may be located in a special memory region.
This commit is contained in:
@@ -45,14 +45,14 @@ void MICROPY_WRAP_MP_KEYBOARD_INTERRUPT(mp_keyboard_interrupt)(void) {
|
||||
|
||||
#define IDX_MASK(i) ((i) & (MICROPY_SCHEDULER_DEPTH - 1))
|
||||
|
||||
static inline bool mp_sched_full(void) {
|
||||
// This is a macro so it is guaranteed to be inlined in functions like
|
||||
// mp_sched_schedule that may be located in a special memory region.
|
||||
#define mp_sched_full() (mp_sched_num_pending() == MICROPY_SCHEDULER_DEPTH)
|
||||
|
||||
static inline bool mp_sched_empty(void) {
|
||||
MP_STATIC_ASSERT(MICROPY_SCHEDULER_DEPTH <= 255); // MICROPY_SCHEDULER_DEPTH must fit in 8 bits
|
||||
MP_STATIC_ASSERT((IDX_MASK(MICROPY_SCHEDULER_DEPTH) == 0)); // MICROPY_SCHEDULER_DEPTH must be a power of 2
|
||||
|
||||
return mp_sched_num_pending() == MICROPY_SCHEDULER_DEPTH;
|
||||
}
|
||||
|
||||
static inline bool mp_sched_empty(void) {
|
||||
return mp_sched_num_pending() == 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user