semihosting: Create qemu_semihosting_console_write

Will replace qemu_semihosting_console_{outs,outc},
but we need more plumbing first.

Reviewed-by: Luc Michel <lmichel@kalray.eu>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-05-01 12:42:37 -07:00
parent fb08790b35
commit cd66f20f61
3 changed files with 26 additions and 0 deletions

View File

@ -54,6 +54,18 @@ void qemu_semihosting_console_outc(CPUArchState *env, target_ulong c);
*/
int qemu_semihosting_console_read(CPUState *cs, void *buf, int len);
/**
* qemu_semihosting_console_write:
* @buf: host buffer
* @len: buffer size
*
* Write len bytes from buf to the debug console.
*
* Returns: number of bytes written -- this should only ever be short
* on some sort of i/o error.
*/
int qemu_semihosting_console_write(void *buf, int len);
/**
* qemu_semihosting_log_out:
* @s: pointer to string

View File

@ -76,3 +76,8 @@ int qemu_semihosting_console_read(CPUState *cs, void *buf, int len)
return ret;
}
int qemu_semihosting_console_write(void *buf, int len)
{
return fwrite(buf, 1, len, stderr);
}

View File

@ -169,6 +169,15 @@ int qemu_semihosting_console_read(CPUState *cs, void *buf, int len)
return ret;
}
int qemu_semihosting_console_write(void *buf, int len)
{
if (console.chr) {
return qemu_chr_write_all(console.chr, (uint8_t *)buf, len);
} else {
return fwrite(buf, 1, len, stderr);
}
}
void qemu_semihosting_console_init(Chardev *chr)
{
console.chr = chr;