py/mphal: Move configuration of ATOMIC_SECTION macros to mphal.h.

MICROPY_BEGIN_ATOMIC_SECTION/MICROPY_END_ATOMIC_SECTION belong more to the
MicroPython HAL rather than build configuration settings, so move their
default configuration to py/mphal.h, and require all users of these macros
to include py/mphal.h (here, py/objexcept.c and py/scheduler.c).

This helps ports separate configuration from their HAL implementations, and
can improve build times (because mpconfig.h is included everywhere, whereas
mphal.h is not).

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2023-12-01 13:24:19 +11:00
parent 7d784e5385
commit bfdf500ea5
4 changed files with 11 additions and 8 deletions

View File

@ -1850,14 +1850,6 @@ typedef double mp_float_t;
#endif
#endif
// On embedded platforms, these will typically enable/disable irqs.
#ifndef MICROPY_BEGIN_ATOMIC_SECTION
#define MICROPY_BEGIN_ATOMIC_SECTION() (0)
#endif
#ifndef MICROPY_END_ATOMIC_SECTION
#define MICROPY_END_ATOMIC_SECTION(state) (void)(state)
#endif
// Allow to override static modifier for global objects, e.g. to use with
// object code analysis tools which don't support static symbols.
#ifndef STATIC

View File

@ -35,6 +35,14 @@
#include <mphalport.h>
#endif
// On embedded platforms, these will typically enable/disable irqs.
#ifndef MICROPY_BEGIN_ATOMIC_SECTION
#define MICROPY_BEGIN_ATOMIC_SECTION() (0)
#endif
#ifndef MICROPY_END_ATOMIC_SECTION
#define MICROPY_END_ATOMIC_SECTION(state) (void)(state)
#endif
#ifndef mp_hal_stdio_poll
uintptr_t mp_hal_stdio_poll(uintptr_t poll_flags);
#endif

View File

@ -81,6 +81,8 @@ void mp_init_emergency_exception_buf(void) {
#else
#define mp_emergency_exception_buf_size MP_STATE_VM(mp_emergency_exception_buf_size)
#include "py/mphal.h" // for MICROPY_BEGIN_ATOMIC_SECTION/MICROPY_END_ATOMIC_SECTION
void mp_init_emergency_exception_buf(void) {
mp_emergency_exception_buf_size = 0;
MP_STATE_VM(mp_emergency_exception_buf) = NULL;

View File

@ -26,6 +26,7 @@
#include <stdio.h>
#include "py/mphal.h"
#include "py/runtime.h"
// Schedules an exception on the main thread (for exceptions "thrown" by async