diff options
author | Michele Paolino <m.paolino@virtualopensystems.com> | 2023-12-15 15:48:09 +0000 |
---|---|---|
committer | Michele Paolino <m.paolino@virtualopensystems.com> | 2023-12-18 08:37:14 +0000 |
commit | 330a49da9ec426bd07472266916366053281b4de (patch) | |
tree | 1bfa402a5ba5396b0a1f6b6f6b211d1ed913125e /vhost_user_console.h | |
parent | 274aa4832d16af5a6b10ffe6021b278bffca4eb8 (diff) |
Adding virtio-console support and small sound fixes
This commit adds adapter support for vhost-user-console
Bug-AGL: SPEC-4834
Change-Id: I96eb95ffbf858b0ad410f49e586af0bb81b74dd2
Signed-off-by: Michele Paolino <m.paolino@virtualopensystems.com>
Diffstat (limited to 'vhost_user_console.h')
-rw-r--r-- | vhost_user_console.h | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/vhost_user_console.h b/vhost_user_console.h new file mode 100644 index 0000000..93646c8 --- /dev/null +++ b/vhost_user_console.h @@ -0,0 +1,70 @@ +/* + * + * Copyright (c) 2023 Virtual Open Systems SAS. + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. See the COPYING file in the + * top-level directory. + * + */ + +#ifndef VHOST_USER_CONSOLE +#define VHOST_USER_CONSOLE + +#include "virtio_loopback.h" +#include "vhost_loopback.h" +#include "vhost_user_loopback.h" + +/* Feature bits */ +#define VIRTIO_CONSOLE_F_SIZE 0 /* Does host provide console size? */ +#define VIRTIO_CONSOLE_F_MULTIPORT 1 /* Does host provide multiple ports? */ +#define VIRTIO_CONSOLE_F_EMERG_WRITE 2 /* Does host support emergency write? */ + +/* Some events for control messages */ +#define VIRTIO_CONSOLE_DEVICE_READY 0 +#define VIRTIO_CONSOLE_PORT_ADD 1 +#define VIRTIO_CONSOLE_PORT_REMOVE 2 +#define VIRTIO_CONSOLE_PORT_READY 3 +#define VIRTIO_CONSOLE_CONSOLE_PORT 4 +#define VIRTIO_CONSOLE_RESIZE 5 +#define VIRTIO_CONSOLE_PORT_OPEN 6 +#define VIRTIO_CONSOLE_PORT_NAME 7 + +struct virtio_console_config { + /* colums of the screens */ + __virtio16 cols; + /* rows of the screens */ + __virtio16 rows; + /* max. number of ports this device can hold */ + __virtio32 max_nr_ports; + /* emergency write register */ + __virtio32 emerg_wr; +}; + +/* + * A message that's passed between the Host and the Guest for a + * particular port. + */ +struct virtio_console_control { + __virtio32 id; /* Port number */ + __virtio16 event; /* The kind of control event (see below) */ + __virtio16 value; /* Extra information for the key */ +}; + +typedef struct VHostUserConsole { + VirtIODevice *parent; + struct vhost_virtqueue *vhost_vqs; + VirtQueue **virtqs; + uint16_t num_queues; + uint32_t queue_size; + struct virtio_console_config config; + struct vhost_dev *vhost_dev; + VirtQueue *rx_vq; + VirtQueue *tx_vq; + VirtQueue *ctrl_rx_vq; + VirtQueue *ctrl_tx_vq; +} VHostUserConsole; + +void vhost_user_console_realize(void); + +#endif /* VHOST_USER_CONSOLE */ |