Browse Source

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>
pull/14120/head
iabdalkader 8 months ago
committed by Damien George
parent
commit
aa0f3ebe93
  1. 7
      extmod/libmetal/metal/config.h
  2. 18
      extmod/modopenamp.c

7
extmod/libmetal/metal/config.h

@ -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);
} }

18
extmod/modopenamp.c

@ -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…
Cancel
Save