mirror of
https://github.com/W3SLAV/micropython.git
synced 2025-06-19 12:05:32 -04:00
extmod/modopenamp: Set a default log handler for ports.
Use the existing metal log handling mechanism instead of overriding the metal_log, which causes build issues when logging is enabled. Signed-off-by: iabdalkader <i.abdalkader@gmail.com>
This commit is contained in:
parent
b829450359
commit
aa0f3ebe93
@ -57,13 +57,6 @@
|
|||||||
#define METAL_MAX_DEVICE_REGIONS 1
|
#define METAL_MAX_DEVICE_REGIONS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// generic/log.h
|
|
||||||
#if METAL_LOG_HANDLER_ENABLE
|
|
||||||
#include "py/mphal.h"
|
|
||||||
#undef metal_log
|
|
||||||
#define metal_log(level, ...) mp_printf(&mp_plat_print, __VA_ARGS__)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static inline void *__metal_allocate_memory(unsigned int size) {
|
static inline void *__metal_allocate_memory(unsigned int size) {
|
||||||
return m_tracked_calloc(1, size);
|
return m_tracked_calloc(1, size);
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,11 @@
|
|||||||
|
|
||||||
#if MICROPY_PY_OPENAMP
|
#if MICROPY_PY_OPENAMP
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
#include "py/obj.h"
|
#include "py/obj.h"
|
||||||
#include "py/nlr.h"
|
#include "py/nlr.h"
|
||||||
#include "py/runtime.h"
|
#include "py/runtime.h"
|
||||||
|
#include "py/mpprint.h"
|
||||||
|
|
||||||
#include "metal/sys.h"
|
#include "metal/sys.h"
|
||||||
#include "metal/alloc.h"
|
#include "metal/alloc.h"
|
||||||
@ -315,6 +317,13 @@ static mp_obj_t openamp_new_service_callback(mp_obj_t ns_callback) {
|
|||||||
}
|
}
|
||||||
static MP_DEFINE_CONST_FUN_OBJ_1(openamp_new_service_callback_obj, openamp_new_service_callback);
|
static MP_DEFINE_CONST_FUN_OBJ_1(openamp_new_service_callback_obj, openamp_new_service_callback);
|
||||||
|
|
||||||
|
void openamp_metal_log_handler(enum metal_log_level level, const char *fmt, ...) {
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
mp_vprintf(&mp_plat_print, fmt, args);
|
||||||
|
va_end(args);
|
||||||
|
}
|
||||||
|
|
||||||
void openamp_init(void) {
|
void openamp_init(void) {
|
||||||
if (MP_STATE_PORT(virtio_device) != NULL) {
|
if (MP_STATE_PORT(virtio_device) != NULL) {
|
||||||
// Already initialized.
|
// Already initialized.
|
||||||
@ -322,7 +331,14 @@ void openamp_init(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct metal_device *device;
|
struct metal_device *device;
|
||||||
struct metal_init_params metal_params = METAL_INIT_DEFAULTS;
|
struct metal_init_params metal_params = { 0 };
|
||||||
|
|
||||||
|
#if METAL_LOG_HANDLER_ENABLE
|
||||||
|
// If logging is enabled, set the default log level and handler before
|
||||||
|
// calling metal_init, to allow ports to override them in metal_sys_init.
|
||||||
|
metal_params.log_level = METAL_LOG_DEBUG;
|
||||||
|
metal_params.log_handler = openamp_metal_log_handler;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Initialize libmetal.
|
// Initialize libmetal.
|
||||||
metal_init(&metal_params);
|
metal_init(&metal_params);
|
||||||
|
Loading…
Reference in New Issue
Block a user