| /* | |
| * Semihosting Console | |
| * | |
| * Copyright (c) 2019 Linaro Ltd | |
| * | |
| * SPDX-License-Identifier: GPL-2.0-or-later | |
| */ | |
| #ifndef SEMIHOST_CONSOLE_H | |
| #define SEMIHOST_CONSOLE_H | |
| #include "cpu.h" | |
| /** | |
| * qemu_semihosting_console_read: | |
| * @cs: CPUState | |
| * @buf: host buffer | |
| * @len: buffer size | |
| * | |
| * Receive at least one character from debug console. As this call may | |
| * block if no data is available we suspend the CPU and will re-execute the | |
| * instruction when data is there. Therefore two conditions must be met: | |
| * | |
| * - CPUState is synchronized before calling this function | |
| * - pc is only updated once the character is successfully returned | |
| * | |
| * Returns: number of characters read, OR cpu_loop_exit! | |
| */ | |
| 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_console_block_until_ready: | |
| * @cs: CPUState | |
| * | |
| * If no data is available we suspend the CPU and will re-execute the | |
| * instruction when data is available. | |
| */ | |
| void qemu_semihosting_console_block_until_ready(CPUState *cs); | |
| /** | |
| * qemu_semihosting_console_ready: | |
| * | |
| * Return true if characters are available for read; does not block. | |
| */ | |
| bool qemu_semihosting_console_ready(void); | |
| #endif /* SEMIHOST_CONSOLE_H */ |