mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-05-02 13:44:33 +00:00
dragonball: add kernel config.
It is used for holding guest kernel configuration information. Fixes: #4257 Signed-off-by: Liu Jiang <gerry@linux.alibaba.com> Signed-off-by: wllenyj <wllenyj@linux.alibaba.com> Signed-off-by: Chao Wu <chaowu@linux.alibaba.com>
This commit is contained in:
parent
6850ef99ae
commit
c1c1e5152a
@ -21,6 +21,7 @@ dbs-utils = "0.1.0"
|
|||||||
kvm-bindings = "0.5.0"
|
kvm-bindings = "0.5.0"
|
||||||
kvm-ioctls = "0.11.0"
|
kvm-ioctls = "0.11.0"
|
||||||
libc = "0.2.39"
|
libc = "0.2.39"
|
||||||
|
linux-loader = "0.4.0"
|
||||||
log = "0.4.14"
|
log = "0.4.14"
|
||||||
nix = "0.23.1"
|
nix = "0.23.1"
|
||||||
serde = "1.0.27"
|
serde = "1.0.27"
|
||||||
|
67
src/dragonball/src/vm/kernel_config.rs
Normal file
67
src/dragonball/src/vm/kernel_config.rs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Copyright (C) 2022 Alibaba Cloud. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
|
/// Structure to hold guest kernel configuration information.
|
||||||
|
pub struct KernelConfigInfo {
|
||||||
|
/// The descriptor to the kernel file.
|
||||||
|
kernel_file: File,
|
||||||
|
/// The descriptor to the initrd file, if there is one
|
||||||
|
initrd_file: Option<File>,
|
||||||
|
/// The commandline for guest kernel.
|
||||||
|
cmdline: linux_loader::cmdline::Cmdline,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl KernelConfigInfo {
|
||||||
|
/// Create a KernelConfigInfo instance.
|
||||||
|
pub fn new(
|
||||||
|
kernel_file: File,
|
||||||
|
initrd_file: Option<File>,
|
||||||
|
cmdline: linux_loader::cmdline::Cmdline,
|
||||||
|
) -> Self {
|
||||||
|
KernelConfigInfo {
|
||||||
|
kernel_file,
|
||||||
|
initrd_file,
|
||||||
|
cmdline,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a mutable reference to the kernel file.
|
||||||
|
pub fn kernel_file_mut(&mut self) -> &mut File {
|
||||||
|
&mut self.kernel_file
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a mutable reference to the initrd file.
|
||||||
|
pub fn initrd_file_mut(&mut self) -> Option<&mut File> {
|
||||||
|
self.initrd_file.as_mut()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a shared reference to the guest kernel boot parameter object.
|
||||||
|
pub fn kernel_cmdline(&self) -> &linux_loader::cmdline::Cmdline {
|
||||||
|
&self.cmdline
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Get a mutable reference to the guest kernel boot parameter object.
|
||||||
|
pub fn kernel_cmdline_mut(&mut self) -> &mut linux_loader::cmdline::Cmdline {
|
||||||
|
&mut self.cmdline
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
use vmm_sys_util::tempfile::TempFile;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_kernel_config_info() {
|
||||||
|
let kernel = TempFile::new().unwrap();
|
||||||
|
let initrd = TempFile::new().unwrap();
|
||||||
|
let mut cmdline = linux_loader::cmdline::Cmdline::new(1024);
|
||||||
|
cmdline.insert_str("ro").unwrap();
|
||||||
|
let mut info = KernelConfigInfo::new(kernel.into_file(), Some(initrd.into_file()), cmdline);
|
||||||
|
|
||||||
|
assert_eq!(info.cmdline.as_str(), "ro");
|
||||||
|
assert!(info.initrd_file_mut().is_some());
|
||||||
|
}
|
||||||
|
}
|
@ -3,6 +3,9 @@
|
|||||||
|
|
||||||
use serde_derive::{Deserialize, Serialize};
|
use serde_derive::{Deserialize, Serialize};
|
||||||
|
|
||||||
|
mod kernel_config;
|
||||||
|
pub use self::kernel_config::KernelConfigInfo;
|
||||||
|
|
||||||
/// Configuration information for user defined NUMA nodes.
|
/// Configuration information for user defined NUMA nodes.
|
||||||
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
|
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq)]
|
||||||
pub struct NumaRegionInfo {
|
pub struct NumaRegionInfo {
|
||||||
|
Loading…
Reference in New Issue
Block a user