aboutsummaryrefslogtreecommitdiffstats
path: root/include/vhost_user_console.h
blob: 51df07173b4082073e096c2bfea386458ca64c1f (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
/*
 *
 * 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? */

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;
};

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;
} VHostUserConsole;

void vhost_user_console_realize(struct adapter_dev *adev);

#endif /* VHOST_USER_CONSOLE */