1 // Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
2 //
3 // SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause
4 
5 //! Virtio queue related constant definitions
6 
7 /// Size of used ring header: flags (u16) + idx (u16)
8 pub(crate) const VIRTQ_USED_RING_HEADER_SIZE: u64 = 4;
9 
10 /// Size of the used ring metadata: header + avail_event (le16).
11 ///
12 /// The total size of the used ring is:
13 /// VIRTQ_USED_RING_META_SIZE + VIRTQ_USED_ELEMENT_SIZE * queue_size.
14 pub(crate) const VIRTQ_USED_RING_META_SIZE: u64 = VIRTQ_USED_RING_HEADER_SIZE + 2;
15 
16 /// Size of one element in the used ring, id (le32) + len (le32).
17 pub(crate) const VIRTQ_USED_ELEMENT_SIZE: u64 = 8;
18 
19 /// Size of available ring header: flags(u16) + idx(u16)
20 pub(crate) const VIRTQ_AVAIL_RING_HEADER_SIZE: u64 = 4;
21 
22 /// Size of the available ring metadata: header + used_event (le16).
23 ///
24 /// The total size of the available ring is:
25 /// VIRTQ_AVAIL_RING_META_SIZE + VIRTQ_AVAIL_ELEMENT_SIZE * queue_size.
26 pub(crate) const VIRTQ_AVAIL_RING_META_SIZE: u64 = VIRTQ_AVAIL_RING_HEADER_SIZE + 2;
27 
28 /// Size of one element in the available ring (le16).
29 pub(crate) const VIRTQ_AVAIL_ELEMENT_SIZE: u64 = 2;
30 
31 /// Default guest physical address for descriptor table.
32 pub(crate) const DEFAULT_DESC_TABLE_ADDR: u64 = 0x0;
33 
34 /// Default guest physical address for available ring.
35 pub(crate) const DEFAULT_AVAIL_RING_ADDR: u64 = 0x0;
36 
37 /// Default guest physical address for used ring.
38 pub(crate) const DEFAULT_USED_RING_ADDR: u64 = 0x0;
39