Skip to content

Commit 1e813dd

Browse files
committed
refactor(board): encapsulate initialization within constructor
Signed-off-by: Changyuan Lyu <changyuanl@google.com>
1 parent 922519e commit 1e813dd

File tree

2 files changed

+24
-22
lines changed

2 files changed

+24
-22
lines changed

alioth/src/board/board.rs

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ use crate::device::MmioDev;
4545
#[cfg(target_arch = "x86_64")]
4646
use crate::device::fw_cfg::FwCfg;
4747
use crate::errors::{DebugTrace, trace_error};
48-
use crate::hv::{Coco, Vcpu, Vm, VmEntry, VmExit};
48+
use crate::hv::{Coco, Hypervisor, Vcpu, Vm, VmConfig, VmEntry, VmExit};
4949
#[cfg(target_arch = "x86_64")]
5050
use crate::loader::xen;
5151
use crate::loader::{Executable, InitState, Payload, linux};
@@ -58,9 +58,9 @@ use crate::vfio::container::Container;
5858
use crate::vfio::iommu::Ioas;
5959

6060
#[cfg(target_arch = "aarch64")]
61-
pub(crate) use self::aarch64::ArchBoard;
61+
use self::aarch64::ArchBoard;
6262
#[cfg(target_arch = "x86_64")]
63-
pub(crate) use self::x86_64::ArchBoard;
63+
use self::x86_64::ArchBoard;
6464

6565
#[trace_error]
6666
#[derive(Snafu, DebugTrace)]
@@ -233,10 +233,22 @@ impl<V> Board<V>
233233
where
234234
V: Vm,
235235
{
236-
pub fn new(vm: V, memory: Memory, arch: ArchBoard<V>, config: BoardConfig) -> Self {
237-
Board {
236+
pub fn new<H>(hv: &H, mut config: BoardConfig) -> Result<Self>
237+
where
238+
H: Hypervisor<Vm = V>,
239+
{
240+
config.config_fixup()?;
241+
242+
let vm_config = VmConfig {
243+
coco: config.coco.clone(),
244+
};
245+
let mut vm = hv.create_vm(&vm_config)?;
246+
let vm_memory = vm.create_vm_memory()?;
247+
let arch = ArchBoard::new(hv, &vm, &config)?;
248+
249+
let board = Board {
238250
vm,
239-
memory,
251+
memory: Memory::new(vm_memory),
240252
arch,
241253
config,
242254
payload: RwLock::new(None),
@@ -257,7 +269,8 @@ where
257269
fatal: false,
258270
}),
259271
cond_var: Condvar::new(),
260-
}
272+
};
273+
Ok(board)
261274
}
262275

263276
pub fn boot(&self) -> Result<()> {

alioth/src/vm/vm.rs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ use snafu::{ResultExt, Snafu};
2727
use crate::arch::layout::{PL011_START, PL031_START};
2828
#[cfg(target_arch = "x86_64")]
2929
use crate::arch::layout::{PORT_COM1, PORT_FW_CFG_SELECTOR};
30-
use crate::board::{ArchBoard, Board, BoardConfig};
30+
use crate::board::{Board, BoardConfig};
3131
#[cfg(target_arch = "x86_64")]
3232
use crate::device::fw_cfg::{FwCfg, FwCfgItemParam};
3333
#[cfg(target_arch = "aarch64")]
@@ -37,9 +37,8 @@ use crate::device::pl031::Pl031;
3737
#[cfg(target_arch = "x86_64")]
3838
use crate::device::serial::Serial;
3939
use crate::errors::{DebugTrace, trace_error};
40-
use crate::hv::{Hypervisor, IoeventFdRegistry, Vm, VmConfig};
40+
use crate::hv::{Hypervisor, IoeventFdRegistry, Vm};
4141
use crate::loader::Payload;
42-
use crate::mem::Memory;
4342
use crate::pci::pvpanic::PvPanic;
4443
use crate::pci::{Bdf, Pci};
4544
#[cfg(target_os = "linux")]
@@ -117,18 +116,8 @@ impl<H> Machine<H>
117116
where
118117
H: Hypervisor,
119118
{
120-
pub fn new(hv: &H, mut config: BoardConfig) -> Result<Self> {
121-
config.config_fixup()?;
122-
123-
let vm_config = VmConfig {
124-
coco: config.coco.clone(),
125-
};
126-
let mut vm = hv.create_vm(&vm_config)?;
127-
let vm_memory = vm.create_vm_memory()?;
128-
let memory = Memory::new(vm_memory);
129-
let arch = ArchBoard::new(hv, &vm, &config)?;
130-
131-
let board = Arc::new(Board::new(vm, memory, arch, config));
119+
pub fn new(hv: &H, config: BoardConfig) -> Result<Self> {
120+
let board = Arc::new(Board::new(hv, config)?);
132121

133122
let (event_tx, event_rx) = mpsc::channel();
134123

0 commit comments

Comments
 (0)