qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

console.h (1513B)


      1 /*
      2  * Semihosting Console
      3  *
      4  * Copyright (c) 2019 Linaro Ltd
      5  *
      6  * SPDX-License-Identifier: GPL-2.0-or-later
      7  */
      8 
      9 #ifndef SEMIHOST_CONSOLE_H
     10 #define SEMIHOST_CONSOLE_H
     11 
     12 #include "cpu.h"
     13 
     14 /**
     15  * qemu_semihosting_console_read:
     16  * @cs: CPUState
     17  * @buf: host buffer
     18  * @len: buffer size
     19  *
     20  * Receive at least one character from debug console.  As this call may
     21  * block if no data is available we suspend the CPU and will re-execute the
     22  * instruction when data is there. Therefore two conditions must be met:
     23  *
     24  *   - CPUState is synchronized before calling this function
     25  *   - pc is only updated once the character is successfully returned
     26  *
     27  * Returns: number of characters read, OR cpu_loop_exit!
     28  */
     29 int qemu_semihosting_console_read(CPUState *cs, void *buf, int len);
     30 
     31 /**
     32  * qemu_semihosting_console_write:
     33  * @buf: host buffer
     34  * @len: buffer size
     35  *
     36  * Write len bytes from buf to the debug console.
     37  *
     38  * Returns: number of bytes written -- this should only ever be short
     39  * on some sort of i/o error.
     40  */
     41 int qemu_semihosting_console_write(void *buf, int len);
     42 
     43 /*
     44  * qemu_semihosting_console_block_until_ready:
     45  * @cs: CPUState
     46  *
     47  * If no data is available we suspend the CPU and will re-execute the
     48  * instruction when data is available.
     49  */
     50 void qemu_semihosting_console_block_until_ready(CPUState *cs);
     51 
     52 /**
     53  * qemu_semihosting_console_ready:
     54  *
     55  * Return true if characters are available for read; does not block.
     56  */
     57 bool qemu_semihosting_console_ready(void);
     58 
     59 #endif /* SEMIHOST_CONSOLE_H */