X-Git-Url: https://git.sur5r.net/?p=freertos;a=blobdiff_plain;f=FreeRTOS%2FDemo%2FPosix_GCC%2Fsrc%2Fconsole.c;fp=FreeRTOS%2FDemo%2FPosix_GCC%2Fsrc%2Fconsole.c;h=32f7db3976133a9efed5a5eed337c9ef28c937aa;hp=0000000000000000000000000000000000000000;hb=584c29e09cf7a95184b0e32718e8f711b781ffea;hpb=c5efd011e8c638d413ac395419119a451a0cb169 diff --git a/FreeRTOS/Demo/Posix_GCC/src/console.c b/FreeRTOS/Demo/Posix_GCC/src/console.c new file mode 100644 index 000000000..32f7db397 --- /dev/null +++ b/FreeRTOS/Demo/Posix_GCC/src/console.c @@ -0,0 +1,59 @@ +/* + * FreeRTOS Kernel V10.3.0 + * Copyright (C) 2020 Cambridge Consultants Ltd. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * http://www.FreeRTOS.org + * http://aws.amazon.com/freertos + * + * 1 tab == 4 spaces! + */ + +/*----------------------------------------------------------- + * Example console I/O wrappers. + *----------------------------------------------------------*/ + +#include +#include + +#include +#include + +SemaphoreHandle_t xStdioMutex; +StaticSemaphore_t xStdioMutexBuffer; + +void console_init(void) +{ + xStdioMutex = xSemaphoreCreateMutexStatic(&xStdioMutexBuffer); +} + +void console_print(const char *fmt, ...) +{ + va_list vargs; + + va_start(vargs, fmt); + + xSemaphoreTake(xStdioMutex, portMAX_DELAY); + + vprintf(fmt, vargs); + + xSemaphoreGive(xStdioMutex); + + va_end(vargs); +}