vfs: implement fsync for UART VFS

This commit is contained in:
Ivan Grokhotkov 2018-10-25 12:54:53 +08:00
parent 5fb3d59a92
commit aa692b3483

View File

@ -26,6 +26,7 @@
#include "driver/uart.h"
#include "sdkconfig.h"
#include "driver/uart_select.h"
#include "rom/uart.h"
// TODO: make the number of UARTs chip dependent
#define UART_NUM 3
@ -304,6 +305,15 @@ static int uart_access(const char *path, int amode)
return ret;
}
static int uart_fsync(int fd)
{
assert(fd >= 0 && fd < 3);
_lock_acquire_recursive(&s_uart_write_locks[fd]);
uart_tx_wait_idle((uint8_t) fd);
_lock_release_recursive(&s_uart_write_locks[fd]);
return 0;
}
static void select_notif_callback(uart_port_t uart_num, uart_select_notif_t uart_select_notif, BaseType_t *task_woken)
{
switch (uart_select_notif) {
@ -883,6 +893,7 @@ void esp_vfs_dev_uart_register()
.close = &uart_close,
.read = &uart_read,
.fcntl = &uart_fcntl,
.fsync = &uart_fsync,
.access = &uart_access,
.start_select = &uart_start_select,
.end_select = &uart_end_select,