mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-22 13:37:10 +00:00
dm: uart: use mevent_add only when it is a tty
When acrn-dm is started by acrnd as a background process, STDIN is redirected to journal. In this case mevent_add cannot be called on the fd of STDIN. Tracked-On: #2998 Signed-off-by: Jian Jun Chen <jian.jun.chen@intel.com> Acked-by: Yu Wang <yu1.wang@intel.com>
This commit is contained in:
parent
49563b2a11
commit
fb9bd2a19a
@ -790,10 +790,12 @@ uart_reset_backend(struct uart_backend *be)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
error = mevent_enable(evp);
|
if (evp) {
|
||||||
if (error) {
|
error = mevent_enable(evp);
|
||||||
WPRINTF(("mevent_enable error\n"));
|
if (error) {
|
||||||
return -1;
|
WPRINTF(("mevent_enable error\n"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -821,13 +823,15 @@ uart_enable_backend(struct uart_backend *be, bool enable)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enable)
|
if (evp) {
|
||||||
error = mevent_enable(evp);
|
if (enable)
|
||||||
else
|
error = mevent_enable(evp);
|
||||||
error = mevent_disable(evp);
|
else
|
||||||
if (error) {
|
error = mevent_disable(evp);
|
||||||
WPRINTF(("mevent %s error\n", enable ? "enable" : "disable"));
|
if (error) {
|
||||||
return -1;
|
WPRINTF(("mevent %s error\n", enable ? "enable" : "disable"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -909,11 +913,18 @@ uart_config_backend(struct uart_vdev *uart, struct uart_backend *be, long port)
|
|||||||
atexit(uart_reset_stdio);
|
atexit(uart_reset_stdio);
|
||||||
}
|
}
|
||||||
be->opened = true;
|
be->opened = true;
|
||||||
be->evp = mevent_add(fd, EVF_READ, uart_drain, uart,
|
/*
|
||||||
uart_mevent_teardown, uart);
|
* When acrn-dm is started by acrnd as a background process,
|
||||||
if (!be->evp) {
|
* STDIO is redirected to journal log file. In this case epoll
|
||||||
WPRINTF(("uart: mevent_add failed\n"));
|
* cannot be used on a regular file.
|
||||||
return -1;
|
*/
|
||||||
|
if (isatty(fd)) {
|
||||||
|
be->evp = mevent_add(fd, EVF_READ, uart_drain, uart,
|
||||||
|
uart_mevent_teardown, uart);
|
||||||
|
if (!be->evp) {
|
||||||
|
WPRINTF(("uart: mevent_add failed\n"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case UART_BE_SOCK:
|
case UART_BE_SOCK:
|
||||||
|
Loading…
Reference in New Issue
Block a user