s390/sclpconsole: handle char layer busy conditions
Handle busy conditions (errno=EAGAIN) in char layer by using the new char layer in the sclp console. Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
dbe49aea76
commit
2e14211476
@ -184,8 +184,6 @@ static int read_event_data(SCLPEvent *event, EventBufferHeader *evt_buf_hdr,
|
||||
static ssize_t write_console_data(SCLPEvent *event, const uint8_t *buf,
|
||||
size_t len)
|
||||
{
|
||||
ssize_t ret = 0;
|
||||
const uint8_t *iov_offset;
|
||||
SCLPConsole *scon = DO_UPCAST(SCLPConsole, event, event);
|
||||
|
||||
if (!scon->chr) {
|
||||
@ -193,21 +191,7 @@ static ssize_t write_console_data(SCLPEvent *event, const uint8_t *buf,
|
||||
return len;
|
||||
}
|
||||
|
||||
iov_offset = buf;
|
||||
while (len > 0) {
|
||||
ret = qemu_chr_fe_write(scon->chr, buf, len);
|
||||
if (ret == 0) {
|
||||
/* a pty doesn't seem to be connected - no error */
|
||||
len = 0;
|
||||
} else if (ret == -EAGAIN || (ret > 0 && ret < len)) {
|
||||
len -= ret;
|
||||
iov_offset += ret;
|
||||
} else {
|
||||
len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
return qemu_chr_fe_write_all(scon->chr, buf, len);
|
||||
}
|
||||
|
||||
static int write_event_data(SCLPEvent *event, EventBufferHeader *evt_buf_hdr)
|
||||
|
Loading…
Reference in New Issue
Block a user