optimize log facility for multi threading

- Shorten filenames
- Add log_printf with mutex locking to play nice with Serial and two
cores
This commit is contained in:
me-no-dev
2016-11-13 13:40:31 +02:00
parent a5d52ac4f7
commit bfe6e5ae77
4 changed files with 58 additions and 7 deletions

View File

@ -358,5 +358,38 @@ int uartGetDebug()
return s_uart_debug_nr;
}
int log_printf(const char *format, ...)
{
if(s_uart_debug_nr < 0){
return 0;
}
char loc_buf[64];
char * temp = loc_buf;
int len;
va_list arg;
va_list copy;
va_start(arg, format);
va_copy(copy, arg);
len = vsnprintf(NULL, 0, format, arg);
va_end(copy);
if(len >= sizeof(loc_buf)){
temp = (char*)malloc(len+1);
if(temp == NULL) {
return 0;
}
}
vsnprintf(temp, len+1, format, arg);
if(_uart_bus_array[s_uart_debug_nr].lock){
while (xSemaphoreTake(_uart_bus_array[s_uart_debug_nr].lock, portMAX_DELAY) != pdPASS);
ets_printf("%s", temp);
xSemaphoreGive(_uart_bus_array[s_uart_debug_nr].lock);
} else {
ets_printf("%s", temp);
}
va_end(arg);
if(len > 64){
free(temp);
}
return len;
}