📄 serial-non-block
字号:
Index: ioemu/vl.c===================================================================--- ioemu.orig/vl.c 2007-05-03 19:15:06.000000000 +0100+++ ioemu/vl.c 2007-05-03 19:15:58.000000000 +0100@@ -1298,19 +1298,34 @@ static int unix_write(int fd, const uint8_t *buf, int len1) {- int ret, len;+ int ret, sel_ret, len;+ int max_fd;+ fd_set writefds;+ struct timeval timeout;++ max_fd = fd; len = len1; while (len > 0) {- ret = write(fd, buf, len);- if (ret < 0) {- if (errno != EINTR && errno != EAGAIN)- return -1;- } else if (ret == 0) {- break;+ FD_ZERO(&writefds);+ FD_SET(fd, &writefds);+ timeout.tv_sec = 0;+ timeout.tv_usec = 0;+ sel_ret = select(max_fd + 1, NULL, &writefds, 0, &timeout);+ if (sel_ret <= 0) {+ /* Timeout or select error */+ return -1; } else {- buf += ret;- len -= ret;+ ret = write(fd, buf, len);+ if (ret < 0) {+ if (errno != EINTR && errno != EAGAIN)+ return -1;+ } else if (ret == 0) {+ break;+ } else {+ buf += ret;+ len -= ret;+ } } } return len1 - len;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -