blob: e0e40e087e93d9935e934548a7d60960feb46911 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
/*
*
* Copyright (c) 2023-2024 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(int queue_num, int queue_size);
#endif /* VHOST_USER_CONSOLE */
|