/* * Copyright (c) 2018 omSquare s.r.o. * * SPDX-License-Identifier: Apache-2.0 */ #include #include #include #include "SEGGER_RTT.h" /* * Common mutex for locking access to terminal buffer. * Note that SEGGER uses same lock macros for both SEGGER_RTT_Write and * SEGGER_RTT_Read functions. Because of this we are not able generally * separate up and down access using two mutexes until SEGGER library fix * this. * * If sharing access cause performance problems, consider using another * non terminal buffers. */ K_MUTEX_DEFINE(rtt_term_mutex); static int rtt_init(void) { SEGGER_RTT_Init(); return 0; } #ifdef CONFIG_MULTITHREADING void zephyr_rtt_mutex_lock(void) { k_mutex_lock(&rtt_term_mutex, K_FOREVER); } void zephyr_rtt_mutex_unlock(void) { k_mutex_unlock(&rtt_term_mutex); } #endif /* CONFIG_MULTITHREADING */ unsigned int zephyr_rtt_irq_lock(void) { return irq_lock(); } void zephyr_rtt_irq_unlock(unsigned int key) { irq_unlock(key); } SYS_INIT(rtt_init, PRE_KERNEL_1, CONFIG_KERNEL_INIT_PRIORITY_OBJECTS);