Kestrel Interface
Loading...
Searching...
No Matches
kest_printf.c
Go to the documentation of this file.
1#include <stdarg.h>
2#include "kest_int.h"
3
4static const char *FNAME = "kest_printf.c";
5
7#ifdef KEST_USE_FREERTOS
8static SemaphoreHandle_t print_mutex;
9#endif
10
12{
13 #ifdef KEST_ENABLE_PRINTF
14 #ifdef KEST_USE_FREERTOS
15 print_mutex = xSemaphoreCreateMutex();
16 #endif
17 prints_initd = 1;
18 #endif
19}
20
21void kest_printf(const char *fmt, ...)
22{
23 #ifdef KEST_ENABLE_PRINTF
24 #ifdef KEST_USE_FREERTOS
25 if (!prints_initd || xSemaphoreTake(print_mutex, portMAX_DELAY) != pdPASS) return;
26 #endif
27
28 char buf[1024];
29 va_list args;
30 va_start(args, fmt);
31 vsnprintf(buf, 1024, fmt, args);
32 va_end(args);
33
34 fputs(buf, stdout);
35
36 #ifdef KEST_USE_FREERTOS
37 xSemaphoreGive(print_mutex);
38 #endif
39 #endif
40}
void kest_printf(const char *fmt,...)
Definition kest_printf.c:21
void kest_printf_init()
Definition kest_printf.c:11
int prints_initd
Definition kest_printf.c:6