Merge remote-tracking branch 'remotes/marcandre/tags/misc-pull-request' into staging

chardev & doc misc

# gpg: Signature made Tue 14 Sep 2021 13:59:10 BST
# gpg:                using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5
# gpg:                issuer "marcandre.lureau@redhat.com"
# gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full]
# gpg:                 aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full]
# Primary key fingerprint: 87A9 BD93 3F87 C606 D276  F62D DAE8 E109 7596 9CE5

* remotes/marcandre/tags/misc-pull-request:
  chardev: add some comments about the class methods
  chardev: remove needless class method
  chardev: Propagate error from logfile opening
  meson.build: fix comment typo
  docs: add supported host CPU architectures section

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2021-09-14 18:14:56 +01:00
6 changed files with 73 additions and 11 deletions
+2 -4
View File
@@ -386,10 +386,9 @@ void suspend_mux_open(void)
static int chardev_options_parsed_cb(Object *child, void *opaque)
{
Chardev *chr = (Chardev *)child;
ChardevClass *class = CHARDEV_GET_CLASS(chr);
if (!chr->be_open && class->chr_options_parsed) {
class->chr_options_parsed(chr);
if (!chr->be_open && CHARDEV_IS_MUX(chr)) {
open_muxes(chr);
}
return 0;
@@ -412,7 +411,6 @@ static void char_mux_class_init(ObjectClass *oc, void *data)
cc->chr_accept_input = mux_chr_accept_input;
cc->chr_add_watch = mux_chr_add_watch;
cc->chr_be_event = mux_chr_be_event;
cc->chr_options_parsed = open_muxes;
cc->chr_update_read_handler = mux_chr_update_read_handlers;
}
+2 -5
View File
@@ -241,18 +241,15 @@ static void qemu_char_open(Chardev *chr, ChardevBackend *backend,
ChardevCommon *common = backend ? backend->u.null.data : NULL;
if (common && common->has_logfile) {
int flags = O_WRONLY | O_CREAT;
int flags = O_WRONLY;
if (common->has_logappend &&
common->logappend) {
flags |= O_APPEND;
} else {
flags |= O_TRUNC;
}
chr->logfd = qemu_open_old(common->logfile, flags, 0666);
chr->logfd = qemu_create(common->logfile, flags, 0666, errp);
if (chr->logfd < 0) {
error_setg_errno(errp, errno,
"Unable to open logfile %s",
common->logfile);
return;
}
}
+33
View File
@@ -29,6 +29,39 @@ The `Repology`_ site is a useful resource to identify
currently shipped versions of software in various operating systems,
though it does not cover all distros listed below.
Supported host architectures
----------------------------
Those hosts are officially supported, with various accelerators:
.. list-table::
:header-rows: 1
* - CPU Architecture
- Accelerators
* - Arm
- kvm (64 bit only), tcg, xen
* - MIPS
- kvm, tcg
* - PPC
- kvm, tcg
* - RISC-V
- tcg
* - s390x
- kvm, tcg
* - SPARC
- tcg
* - x86
- hax, hvf (64 bit only), kvm, nvmm, tcg, whpx (64 bit only), xen
Other host architectures are not supported. It is possible to build QEMU on an
unsupported host architecture using the configure ``--enable-tcg-interpreter``
option to enable the experimental TCI support, but note that this is very slow
and is not recommended.
Non-supported architectures may be removed in the future following the
:ref:`deprecation process<Deprecated features>`.
Linux OS, macOS, FreeBSD, NetBSD, OpenBSD
-----------------------------------------
+2
View File
@@ -1,3 +1,5 @@
.. _Deprecated features:
Deprecated features
===================
+33 -1
View File
@@ -254,26 +254,58 @@ struct ChardevClass {
bool internal; /* TODO: eventually use TYPE_USER_CREATABLE */
bool supports_yank;
/* parse command line options and populate QAPI @backend */
void (*parse)(QemuOpts *opts, ChardevBackend *backend, Error **errp);
/* called after construction, open/starts the backend */
void (*open)(Chardev *chr, ChardevBackend *backend,
bool *be_opened, Error **errp);
/* write buf to the backend */
int (*chr_write)(Chardev *s, const uint8_t *buf, int len);
/*
* Read from the backend (blocking). A typical front-end will instead rely
* on chr_can_read/chr_read being called when polling/looping.
*/
int (*chr_sync_read)(Chardev *s, const uint8_t *buf, int len);
/* create a watch on the backend */
GSource *(*chr_add_watch)(Chardev *s, GIOCondition cond);
/* update the backend internal sources */
void (*chr_update_read_handler)(Chardev *s);
/* send an ioctl to the backend */
int (*chr_ioctl)(Chardev *s, int cmd, void *arg);
/* get ancillary-received fds during last read */
int (*get_msgfds)(Chardev *s, int* fds, int num);
/* set ancillary fds to be sent with next write */
int (*set_msgfds)(Chardev *s, int *fds, int num);
/* accept the given fd */
int (*chr_add_client)(Chardev *chr, int fd);
/* wait for a connection */
int (*chr_wait_connected)(Chardev *chr, Error **errp);
/* disconnect a connection */
void (*chr_disconnect)(Chardev *chr);
/* called by frontend when it can read */
void (*chr_accept_input)(Chardev *chr);
/* set terminal echo */
void (*chr_set_echo)(Chardev *chr, bool echo);
/* notify the backend of frontend open state */
void (*chr_set_fe_open)(Chardev *chr, int fe_open);
/* handle various events */
void (*chr_be_event)(Chardev *s, QEMUChrEvent event);
void (*chr_options_parsed)(Chardev *chr);
};
Chardev *qemu_chardev_new(const char *id, const char *typename,
+1 -1
View File
@@ -78,7 +78,7 @@ endif
accelerator_targets = { 'CONFIG_KVM': kvm_targets }
if cpu in ['x86', 'x86_64', 'arm', 'aarch64']
# i368 emulator provides xenpv machine type for multiple architectures
# i386 emulator provides xenpv machine type for multiple architectures
accelerator_targets += {
'CONFIG_XEN': ['i386-softmmu', 'x86_64-softmmu'],
}