• 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::device_constants::vsock::QUEUE_SIZE;
8 use crate::virtio::device_constants::vsock::QUEUE_SIZES;
9 use crate::virtio::vhost::user::vmm::Connection;
10 use crate::virtio::vhost::user::vmm::QueueSizes;
11 use crate::virtio::vhost::user::vmm::Result;
12 use crate::virtio::vhost::user::vmm::VhostUserVirtioDevice;
13 use crate::virtio::DeviceType;
14 
15 impl VhostUserVirtioDevice {
new_vsock(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice>16     pub fn new_vsock(base_features: u64, connection: Connection) -> Result<VhostUserVirtioDevice> {
17         let queue_sizes = QueueSizes::AskDevice {
18             queue_size: QUEUE_SIZE,
19             default_queues: QUEUE_SIZES.len(),
20         };
21         let max_queues = QUEUE_SIZES.len();
22 
23         let allow_features = 0;
24 
25         let allow_protocol_features =
26             VhostUserProtocolFeatures::MQ | VhostUserProtocolFeatures::CONFIG;
27 
28         VhostUserVirtioDevice::new(
29             connection,
30             DeviceType::Vsock,
31             queue_sizes,
32             max_queues,
33             allow_features,
34             allow_protocol_features,
35             base_features,
36             None,
37             false,
38         )
39     }
40 }
41