60 lines
1.1 KiB
C
60 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2018 omSquare s.r.o.
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <zephyr/kernel.h>
|
|
#include <zephyr/irq.h>
|
|
#include <zephyr/init.h>
|
|
#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);
|