qemu-e2k/linux-user
Keith Packard 8de702cb67 semihosting: add qemu_semihosting_console_inc for SYS_READC
Provides a blocking call to read a character from the console using
semihosting.chardev, if specified. This takes some careful command
line options to use stdio successfully as the serial ports, monitor
and semihost all want to use stdio. Here's a sample set of command
line options which share stdio between semihost, monitor and serial
ports:

	qemu \
	-chardev stdio,mux=on,id=stdio0 \
	-serial chardev:stdio0 \
	-semihosting-config enable=on,chardev=stdio0 \
	-mon chardev=stdio0,mode=readline

This creates a chardev hooked to stdio and then connects all of the
subsystems to it. A shorter mechanism would be good to hear about.

Signed-off-by: Keith Packard <keithp@keithp.com>
Message-Id: <20191104204230.12249-1-keithp@keithp.com>
[AJB: fixed up deadlock, minor commit title reword]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Keith Packard <keithp@keithp.com>
Tested-by: Keith Packard <keithp@keithp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
2020-01-09 11:41:29 +00:00
..
aarch64 target/arm: only update pc after semihosting completes 2020-01-09 11:41:29 +00:00
alpha linux-user/alpha: Set r20 secondary return value 2019-11-06 13:45:05 +01:00
arm semihosting: add qemu_semihosting_console_inc for SYS_READC 2020-01-09 11:41:29 +00:00
cris linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
generic linux-user: Introduce TARGET_HAVE_ARCH_STRUCT_FLOCK 2019-07-02 16:56:46 +02:00
host linux-user: Add safe_syscall for riscv64 host 2018-12-26 06:40:02 +11:00
hppa linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
i386 linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
m68k linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
microblaze linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
mips linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
mips64 Supply missing header guards 2019-06-12 13:20:21 +02:00
nios2 linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
openrisc linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
ppc target/ppc: Implement the VTB for HV access 2019-12-17 10:39:48 +11:00
riscv linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
s390x linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
sh4 linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
sparc linux-user/sparc: Fix cpu_clone_regs_* 2019-11-06 13:44:19 +01:00
sparc64 Supply missing header guards 2019-06-12 13:20:21 +02:00
tilegx linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
x86_64 Supply missing header guards 2019-06-12 13:20:21 +02:00
xtensa linux-user: Introduce cpu_clone_regs_parent 2019-11-06 13:43:25 +01:00
Makefile.objs linux-user/m68k: remove simulator syscall interface 2019-06-26 17:14:41 +02:00
cpu_loop-common.h cpu: Replace ENV_GET_CPU with env_cpu 2019-06-10 07:03:34 -07:00
elfload.c target/arm: Add support for DC CVAP & DC CVADP ins 2019-12-16 10:46:35 +00:00
errno_defs.h Supply missing header guards 2019-06-12 13:20:21 +02:00
exit.c *-user: notify plugin of exit 2019-10-28 15:12:38 +00:00
fd-trans.c Fix unsigned integer underflow in fd-trans.c 2019-10-21 11:34:18 +02:00
fd-trans.h linux-user: move TargetFdTrans functions to their own file 2018-09-25 22:36:47 +02:00
flat.h Supply missing header guards 2019-06-12 13:20:21 +02:00
flatload.c linux-user/flatload: fix initial stack pointer alignment 2018-10-30 11:23:32 -07:00
ioctls.h linux-user: Add support for FDRESET, FDRAWCMD, FDTWADDLE, and FDEJECT ioctls 2019-09-11 08:47:06 +02:00
linux_loop.h linux-user: Add loop control ioctls 2016-07-19 15:22:33 +03:00
linuxload.c avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
main.c linux-user: log page table changes under -d page 2019-12-19 08:20:16 +00:00
mmap.c linux-user: convert target_munmap debug to a tracepoint 2019-12-19 08:20:16 +00:00
qemu.h Include qemu/queue.h slightly less 2019-08-16 13:31:52 +02:00
safe-syscall.S linux-user: Provide safe_syscall for fixing races between signals and syscalls 2016-05-27 14:49:51 +03:00
signal-common.h linux-user: Make sigaltstack stacks per-thread 2019-07-26 19:24:33 +02:00
signal.c linux-user: Make sigaltstack stacks per-thread 2019-07-26 19:24:33 +02:00
socket.h Supply missing header guards 2019-06-12 13:20:21 +02:00
strace.c linux-user/strace: Let print_sockaddr() have a 'last' argument 2019-10-21 15:37:04 +02:00
strace.list linux-user/strace: Improve bind() output 2019-10-21 15:37:04 +02:00
syscall.c linux-user: fix translation of statx structures 2019-11-25 12:57:58 +01:00
syscall_defs.h linux-user/syscall: Align target_sockaddr fields using ABI types 2019-10-21 15:37:04 +02:00
syscall_types.h linux-user: fix to handle variably sized SIOCGSTAMP with new kernels 2019-07-19 09:33:55 +02:00
target_flat.h Supply missing header guards 2019-06-12 13:20:21 +02:00
trace-events linux-user: convert target_munmap debug to a tracepoint 2019-12-19 08:20:16 +00:00
uaccess.c avoid TABs in files that only contain a few 2019-01-11 15:46:56 +01:00
uname.c cpu: Replace ENV_GET_CPU with env_cpu 2019-06-10 07:03:34 -07:00
uname.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vm86.c target/i386: Use env_cpu, env_archcpu 2019-06-10 07:03:42 -07:00