diff options
| author | Damien George <damien@micropython.org> | 2021-04-25 22:24:49 +1000 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2021-04-30 15:32:16 +1000 |
| commit | 916c3fd23fc4b636a8007525c3bd6308d01509d0 (patch) | |
| tree | 354894b3976b46a8e01c75c4605848b95e75a81f /py | |
| parent | e9e9c76ddf131f8e50b0ae2d44501d3cd88537ef (diff) | |
py/scheduler: Add optional port hook for when something is scheduled.
So that a port can "wake up" when there is work to do.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'py')
| -rw-r--r-- | py/mpconfig.h | 6 | ||||
| -rw-r--r-- | py/scheduler.c | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h index 4445e9aee..7337994a5 100644 --- a/py/mpconfig.h +++ b/py/mpconfig.h @@ -550,6 +550,12 @@ #define MICROPY_VM_HOOK_RETURN #endif +// Hook for mp_sched_schedule when a function gets scheduled on sched_queue +// (this macro executes within an atomic section) +#ifndef MICROPY_SCHED_HOOK_SCHEDULED +#define MICROPY_SCHED_HOOK_SCHEDULED +#endif + // Whether to include the garbage collector #ifndef MICROPY_ENABLE_GC #define MICROPY_ENABLE_GC (0) diff --git a/py/scheduler.c b/py/scheduler.c index 9ff930007..947510c68 100644 --- a/py/scheduler.c +++ b/py/scheduler.c @@ -134,6 +134,7 @@ bool MICROPY_WRAP_MP_SCHED_SCHEDULE(mp_sched_schedule)(mp_obj_t function, mp_obj uint8_t iput = IDX_MASK(MP_STATE_VM(sched_idx) + MP_STATE_VM(sched_len)++); MP_STATE_VM(sched_queue)[iput].func = function; MP_STATE_VM(sched_queue)[iput].arg = arg; + MICROPY_SCHED_HOOK_SCHEDULED; ret = true; } else { // schedule queue is full |
