Skip to content

Commit

Permalink
misc: Upgrade to use the vm-memory crate w/ dirty-page-tracking
Browse files Browse the repository at this point in the history
As the first step to complete live-migration with tracking dirty-pages
written by the VMM, this patch patches the dependent vm-memory crate to
the development branch with dirty-page-tracking capability [1]. For now,
we are using our own fork of the vm-memory crate [2] before the feature
is landed in the upstream.

Most changes are due to the updated `GuestMemoryMmap`, `GuestRegionMmap`,
and `MmapRegion` structs which are taking an additional generic type
parameter (to specify what 'bitmap backend' is used). For the same
reason, similar changes are required in the dependent 'vfio-ioctls'
crate (that uses the vm-memory crate). We are also using our own fork of
the vfio-ioctls crate before the upstream is updated [3].

The above changes should be transparent to the rest of the code base,
e.g. all unit/integration tests should pass without additional changes.

[1] rust-vmm/vm-memory#125
[2] https://github.com/cloud-hypervisor/vm-memory/tree/ch
[3] https://github.com/cloud-hypervisor/vfio-ioctls/tree/ch

Signed-off-by: Bo Chen <chen.bo@intel.com>
  • Loading branch information
likebreath committed May 26, 2021
1 parent a174ad0 commit 3592cc3
Show file tree
Hide file tree
Showing 49 changed files with 172 additions and 70 deletions.
5 changes: 2 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ clap = { version = "2.33.3", features = ["wrap_help"] }
[patch.crates-io]
kvm-bindings = { git = "https://github.com/cloud-hypervisor/kvm-bindings", branch = "ch-v0.4.0", features = ["with-serde", "fam-wrappers"] }
versionize_derive = { git = "https://github.com/cloud-hypervisor/versionize_derive", branch = "ch" }
vm-memory = { git = "https://github.com/cloud-hypervisor/vm-memory", branch = "ch"}

[dev-dependencies]
credibility = "0.1.3"
Expand Down
6 changes: 5 additions & 1 deletion arch/src/aarch64/fdt.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ use super::layout::{
PCI_MMCONFIG_START,
};
use vm_fdt::{FdtWriter, FdtWriterResult};
use vm_memory::{Address, Bytes, GuestAddress, GuestMemory, GuestMemoryError, GuestMemoryMmap};
use vm_memory::{
bitmap::AtomicBitmap, Address, Bytes, GuestAddress, GuestMemory, GuestMemoryError,
};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

// This is a value for uniquely identifying the FDT node declaring the interrupt controller.
const GIC_PHANDLE: u32 = 1;
Expand Down
4 changes: 3 additions & 1 deletion arch/src/aarch64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ use std::ffi::CStr;
use std::fmt::Debug;
use std::sync::Arc;
use vm_memory::{
Address, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, GuestMemoryMmap,
bitmap::AtomicBitmap, Address, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic,
GuestUsize,
};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

/// Errors thrown while configuring aarch64 system.
#[derive(Debug)]
pub enum Error {
Expand Down
4 changes: 3 additions & 1 deletion arch/src/aarch64/regs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ use hypervisor::kvm::kvm_bindings::{
use hypervisor::{arm64_core_reg_id, offset__of};
use std::sync::Arc;
use std::{mem, result};
use vm_memory::GuestMemoryMmap;
use vm_memory::bitmap::AtomicBitmap;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

/// Errors thrown while setting aarch64 registers.
#[derive(Debug)]
Expand Down
6 changes: 4 additions & 2 deletions arch/src/x86_64/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,16 @@ use linux_loader::loader::elf::start_info::{
};
use std::mem;
use vm_memory::{
Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory, GuestMemoryAtomic,
GuestMemoryMmap, GuestMemoryRegion, GuestUsize,
bitmap::AtomicBitmap, Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemory,
GuestMemoryAtomic, GuestMemoryRegion, GuestUsize,
};
mod smbios;
use std::arch::x86_64;
#[cfg(feature = "tdx")]
pub mod tdx;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Debug, Copy, Clone)]
/// Specifies the entry point address where the guest must start
/// executing code, as well as which of the supported boot protocols
Expand Down
4 changes: 3 additions & 1 deletion arch/src/x86_64/mptable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ use std::mem;
use std::result;
use std::slice;
use vm_memory::{
Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError, GuestMemoryMmap,
bitmap::AtomicBitmap, Address, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError,
};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

// This is a workaround to the Rust enforcement specifying that any implementation of a foreign
// trait (in this case `ByteValued`) where:
// * the type that is implementing the trait is foreign or
Expand Down
8 changes: 6 additions & 2 deletions arch/src/x86_64/regs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ use hypervisor::arch::x86::regs::*;
use hypervisor::x86_64::{FpuState, SpecialRegisters, StandardRegisters};
use std::sync::Arc;
use std::{mem, result};
use vm_memory::{Address, Bytes, GuestMemory, GuestMemoryError, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, Address, Bytes, GuestMemory, GuestMemoryError};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Debug)]
pub enum Error {
Expand Down Expand Up @@ -163,7 +165,9 @@ pub fn configure_segments_and_sregs(
#[cfg(test)]
mod tests {
use super::*;
use vm_memory::{GuestAddress, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, GuestAddress};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

fn create_guest_mem() -> GuestMemoryMmap {
GuestMemoryMmap::from_ranges(&[(GuestAddress(0), 0x10000)]).unwrap()
Expand Down
4 changes: 3 additions & 1 deletion arch/src/x86_64/smbios.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@ use std::mem;
use std::result;
use std::slice;
use vm_memory::ByteValued;
use vm_memory::{Address, Bytes, GuestAddress, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, Address, Bytes, GuestAddress};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[allow(unused_variables)]
#[derive(Debug)]
Expand Down
4 changes: 3 additions & 1 deletion arch/src/x86_64/tdx/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
use std::fs::File;
use std::io::{Read, Seek, SeekFrom};
use thiserror::Error;
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemoryError, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, ByteValued, Bytes, GuestAddress, GuestMemoryError};

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Error, Debug)]
pub enum TdvfError {
Expand Down
2 changes: 1 addition & 1 deletion block_util/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ thiserror = "1.0"
versionize = "0.1.6"
versionize_derive = "0.1.4"
virtio-bindings = { version = "0.1", features = ["virtio-v5_0_0"]}
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic"] }
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic", "backend-bitmap"] }
vm-virtio = { path = "../vm-virtio" }
vmm-sys-util = ">=0.3.1"

6 changes: 5 additions & 1 deletion block_util/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,14 @@ use std::sync::{Arc, Mutex};
use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
use virtio_bindings::bindings::virtio_blk::*;
use vm_memory::{ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError, GuestMemoryMmap};
use vm_memory::{
bitmap::AtomicBitmap, ByteValued, Bytes, GuestAddress, GuestMemory, GuestMemoryError,
};
use vm_virtio::DescriptorChain;
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

const SECTOR_SHIFT: u8 = 9;
pub const SECTOR_SIZE: u64 = 0x01 << SECTOR_SHIFT;

Expand Down
2 changes: 1 addition & 1 deletion net_util/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ serde = "1.0.126"
versionize = "0.1.6"
versionize_derive = "0.1.4"
virtio-bindings = "0.1.0"
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic"] }
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic", "backend-bitmap"] }
vm-virtio = { path = "../vm-virtio" }
vmm-sys-util = ">=0.3.1"

Expand Down
4 changes: 3 additions & 1 deletion net_util/src/ctrl_queue.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@ use virtio_bindings::bindings::virtio_net::{
VIRTIO_NET_F_GUEST_ECN, VIRTIO_NET_F_GUEST_TSO4, VIRTIO_NET_F_GUEST_TSO6,
VIRTIO_NET_F_GUEST_UFO, VIRTIO_NET_OK,
};
use vm_memory::{ByteValued, Bytes, GuestMemoryError, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, ByteValued, Bytes, GuestMemoryError};
use vm_virtio::Queue;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Debug)]
pub enum Error {
/// Read queue failed.
Expand Down
4 changes: 3 additions & 1 deletion net_util/src/queue_pair.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ use std::num::Wrapping;
use std::os::unix::io::{AsRawFd, RawFd};
use std::sync::atomic::{AtomicU64, Ordering};
use std::sync::Arc;
use vm_memory::{Bytes, GuestAddressSpace, GuestMemory, GuestMemoryAtomic, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, Bytes, GuestAddressSpace, GuestMemory, GuestMemoryAtomic};
use vm_virtio::Queue;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Clone)]
pub struct TxVirtio {
pub counter_bytes: Wrapping<u64>,
Expand Down
2 changes: 1 addition & 1 deletion pci/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ edition = "2018"
anyhow = "1.0"
byteorder = "1.4.3"
hypervisor = { path = "../hypervisor" }
vfio-ioctls = { git = "https://github.com/rust-vmm/vfio-ioctls", branch = "master" }
vfio-ioctls = { git = "https://github.com/cloud-hypervisor/vfio-ioctls", branch = "ch" }
vmm-sys-util = ">=0.3.1"
libc = "0.2.95"
log = "0.4.14"
Expand Down
2 changes: 1 addition & 1 deletion vhost_user_backend/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ epoll = ">=4.0.1"
libc = "0.2.95"
log = "0.4.14"
virtio-bindings = "0.1.0"
vm-memory = "0.5.0"
vm-memory = { version = "0.5.0", features = ["backend-bitmap"] }
vm-virtio = { path = "../vm-virtio" }
vmm-sys-util = ">=0.3.1"
vhost = { git = "https://github.com/rust-vmm/vhost", branch = "master", package = "vhost", features = ["vhost-user-slave"] }
5 changes: 4 additions & 1 deletion vhost_user_backend/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,13 @@ use vhost::vhost_user::{
};
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
use vm_memory::guest_memory::FileOffset;
use vm_memory::{GuestAddress, GuestMemoryMmap, GuestRegionMmap, MmapRegion};
use vm_memory::{bitmap::AtomicBitmap, GuestAddress, MmapRegion};
use vm_virtio::Queue;
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;
type GuestRegionMmap = vm_memory::GuestRegionMmap<AtomicBitmap>;

const MAX_MEM_SLOTS: u64 = 32;

#[derive(Debug)]
Expand Down
4 changes: 3 additions & 1 deletion vhost_user_block/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,11 @@ use vhost_user_backend::{VhostUserBackend, VhostUserDaemon, Vring};
use virtio_bindings::bindings::virtio_blk::*;
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
use vm_memory::ByteValued;
use vm_memory::{Bytes, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, Bytes};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

const SECTOR_SHIFT: u8 = 9;
const SECTOR_SIZE: u64 = 0x01 << SECTOR_SHIFT;
const BLK_SIZE: u32 = 512;
Expand Down
4 changes: 3 additions & 1 deletion vhost_user_net/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,14 @@ use vhost::vhost_user::Listener;
use vhost_user_backend::{VhostUserBackend, VhostUserDaemon, Vring, VringWorker};
use virtio_bindings::bindings::virtio_net::*;
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
use vm_memory::{GuestMemoryAtomic, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, GuestMemoryAtomic};
use vmm_sys_util::eventfd::EventFd;

pub type Result<T> = std::result::Result<T, Error>;
type VhostUserBackendResult<T> = std::result::Result<T, std::io::Error>;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

#[derive(Debug)]
pub enum Error {
/// Failed to create kill eventfd
Expand Down
2 changes: 1 addition & 1 deletion virtio-devices/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ vhost = { git = "https://github.com/rust-vmm/vhost", branch = "master", package
virtio-bindings = { version = "0.1", features = ["virtio-v5_0_0"]}
vm-allocator = { path = "../vm-allocator" }
vm-device = { path = "../vm-device" }
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic"] }
vm-memory = { version = "0.5.0", features = ["backend-mmap", "backend-atomic", "backend-bitmap"] }
vm-migration = { path = "../vm-migration" }
vm-virtio = { path = "../vm-virtio" }
vmm-sys-util = ">=0.3.1"
6 changes: 4 additions & 2 deletions virtio-devices/src/balloon.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,14 @@ use std::sync::{Arc, Barrier, Mutex};
use std::thread;
use vm_memory::GuestMemory;
use vm_memory::{
Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic,
GuestMemoryError, GuestMemoryMmap,
bitmap::AtomicBitmap, Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace,
GuestMemoryAtomic, GuestMemoryError,
};
use vm_migration::{Migratable, MigratableError, Pausable, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

const QUEUE_SIZE: u16 = 128;
const NUM_QUEUES: usize = 2;
const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE; NUM_QUEUES];
Expand Down
4 changes: 3 additions & 1 deletion virtio-devices/src/block.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,13 @@ use std::{collections::HashMap, convert::TryInto};
use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
use virtio_bindings::bindings::virtio_blk::*;
use vm_memory::{ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic};
use vm_migration::VersionMapped;
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

const SECTOR_SHIFT: u8 = 9;
pub const SECTOR_SIZE: u64 = 0x01 << SECTOR_SHIFT;

Expand Down
4 changes: 3 additions & 1 deletion virtio-devices/src/console.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ use std::sync::{Arc, Barrier, Mutex};
use std::thread;
use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
use vm_memory::{ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, ByteValued, Bytes, GuestAddressSpace, GuestMemoryAtomic};
use vm_migration::VersionMapped;
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

const QUEUE_SIZE: u16 = 256;
const NUM_QUEUES: usize = 2;
const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE; NUM_QUEUES];
Expand Down
5 changes: 4 additions & 1 deletion virtio-devices/src/device.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@ use std::sync::{
Arc, Barrier,
};
use std::thread;
use vm_memory::{GuestAddress, GuestMemoryAtomic, GuestMemoryMmap, GuestRegionMmap, GuestUsize};
use vm_memory::{bitmap::AtomicBitmap, GuestAddress, GuestMemoryAtomic, GuestUsize};
use vm_migration::{MigratableError, Pausable};
use vm_virtio::VirtioDeviceType;
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;
type GuestRegionMmap = vm_memory::GuestRegionMmap<AtomicBitmap>;

pub enum VirtioInterruptType {
Config,
Queue,
Expand Down
6 changes: 4 additions & 2 deletions virtio-devices/src/iommu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,15 @@ use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
use vm_device::dma_mapping::ExternalDmaMapping;
use vm_memory::{
Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic,
GuestMemoryError, GuestMemoryMmap,
bitmap::AtomicBitmap, Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace,
GuestMemoryAtomic, GuestMemoryError,
};
use vm_migration::VersionMapped;
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

/// Queues sizes
const QUEUE_SIZE: u16 = 256;
const NUM_QUEUES: usize = 2;
Expand Down
7 changes: 5 additions & 2 deletions virtio-devices/src/mem.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,15 @@ use std::sync::{Arc, Barrier, Mutex};
use std::thread;
use vm_device::dma_mapping::ExternalDmaMapping;
use vm_memory::{
Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace, GuestMemoryAtomic,
GuestMemoryError, GuestMemoryMmap, GuestMemoryRegion, GuestRegionMmap,
bitmap::AtomicBitmap, Address, ByteValued, Bytes, GuestAddress, GuestAddressSpace,
GuestMemoryAtomic, GuestMemoryError, GuestMemoryRegion,
};
use vm_migration::{Migratable, MigratableError, Pausable, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;
type GuestRegionMmap = vm_memory::GuestRegionMmap<AtomicBitmap>;

const QUEUE_SIZE: u16 = 128;
const QUEUE_SIZES: &[u16] = &[QUEUE_SIZE];

Expand Down
4 changes: 3 additions & 1 deletion virtio-devices/src/net.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,13 @@ use versionize::{VersionMap, Versionize, VersionizeResult};
use versionize_derive::Versionize;
use virtio_bindings::bindings::virtio_net::*;
use virtio_bindings::bindings::virtio_ring::VIRTIO_RING_F_EVENT_IDX;
use vm_memory::{ByteValued, GuestAddressSpace, GuestMemoryAtomic, GuestMemoryMmap};
use vm_memory::{bitmap::AtomicBitmap, ByteValued, GuestAddressSpace, GuestMemoryAtomic};
use vm_migration::VersionMapped;
use vm_migration::{Migratable, MigratableError, Pausable, Snapshot, Snapshottable, Transportable};
use vmm_sys_util::eventfd::EventFd;

type GuestMemoryMmap = vm_memory::GuestMemoryMmap<AtomicBitmap>;

/// Control queue
// Event available on the control queue.
const CTRL_QUEUE_EVENT: u16 = EPOLL_HELPER_EVENT_LAST + 1;
Expand Down
Loading

0 comments on commit 3592cc3

Please sign in to comment.