• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2021 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 use vmm_vhost::message::VhostUserProtocolFeatures;
6 
7 use crate::virtio::console::QUEUE_SIZE;
8 use crate::virtio::vhost::user::vmm::Connection;
9 use crate::virtio::vhost::user::vmm::QueueSizes;
10 use crate::virtio::vhost::user::vmm::Result;
11 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice;
12 use crate::virtio::DeviceType;
13 
14 impl VhostUserVirtioDevice {
new_console( base_features: u64, connection: Connection, ) -> Result<VhostUserVirtioDevice>15     pub fn new_console(
16         base_features: u64,
17         connection: Connection,
18     ) -> Result<VhostUserVirtioDevice> {
19         // VIRTIO_CONSOLE_F_MULTIPORT is not supported, so we just implement port 0 (receiveq,
20         // transmitq)
21         let queue_sizes = QueueSizes::AskDevice {
22             queue_size: QUEUE_SIZE,
23             default_queues: 2,
24         };
25         let max_queues = 2;
26 
27         let allow_features = 0;
28 
29         let allow_protocol_features = VhostUserProtocolFeatures::CONFIG;
30 
31         VhostUserVirtioDevice::new(
32             connection,
33             DeviceType::Console,
34             queue_sizes,
35             max_queues,
36             allow_features,
37             allow_protocol_features,
38             base_features,
39             None,
40             false,
41         )
42     }
43 }
44