Skip to content

Commit d4e568a

Browse files
ccoenenatbaumercarlescufi
authored andcommitted
Resolve circular include dependencies
Zephyr kernel is dependend on trace. Trace is dependend on segger rtt. Segger rtt MUST NOT be dependend on zephyr kernel. Move lock functions from header into c file to avoid circular dependency. Fixes #43887. Signed-off-by: Christoph Coenen <[email protected]>
1 parent 2799f8e commit d4e568a

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

Config/SEGGER_RTT_Conf.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,17 @@ Revision: $Rev: 21386 $
147147
*/
148148
#if ((defined(__SES_ARM) || defined(__SES_RISCV) || defined(__CROSSWORKS_ARM) || defined(__GNUC__) || defined(__clang__)) && !defined (__CC_ARM) && !defined(WIN32))
149149
#if defined(__ZEPHYR__) && defined (CONFIG_SEGGER_RTT_CUSTOM_LOCKING)
150-
#include <zephyr/kernel.h>
151150
#ifdef CONFIG_MULTITHREADING
152-
extern struct k_mutex rtt_term_mutex;
153-
#define SEGGER_RTT_LOCK() k_mutex_lock(&rtt_term_mutex, K_FOREVER);
154-
#define SEGGER_RTT_UNLOCK() k_mutex_unlock(&rtt_term_mutex);
151+
extern void zephyr_rtt_mutex_lock(void);
152+
extern void zephyr_rtt_mutex_unlock(void);
153+
#define SEGGER_RTT_LOCK() zephyr_rtt_mutex_lock()
154+
#define SEGGER_RTT_UNLOCK() zephyr_rtt_mutex_unlock()
155155
#else
156+
extern unsigned int zephyr_rtt_irq_lock(void);
157+
extern void zephyr_rtt_irq_unlock(unsigned int key);
156158
#define SEGGER_RTT_LOCK() { \
157-
unsigned int key = irq_lock()
158-
#define SEGGER_RTT_UNLOCK() irq_unlock(key); \
159+
unsigned int key = zephyr_rtt_irq_lock()
160+
#define SEGGER_RTT_UNLOCK() zephyr_rtt_irq_unlock(key); \
159161
}
160162
#endif
161163
#define RTT_USE_ASM 0

0 commit comments

Comments
 (0)