vfio_user: Add command line parsing for socket option

Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
Rob Bradford 2023-02-15 17:19:21 +00:00 committed by Bo Chen
parent 19e893fa53
commit c8967fcc37
3 changed files with 14 additions and 2 deletions

1
Cargo.lock generated
View File

@ -1384,6 +1384,7 @@ dependencies = [
name = "vfio_user"
version = "0.1.0"
dependencies = [
"argh",
"bitflags",
"env_logger",
"libc",

View File

@ -20,5 +20,6 @@ vm-memory = { version = "0.10.0", features = ["backend-mmap", "backend-atomic"]
vmm-sys-util = "0.11.0"
[dev-dependencies]
argh = "0.1.9"
env_logger = "0.10.0"
pci = { path = "../pci" }

View File

@ -3,6 +3,7 @@
// SPDX-License-Identifier: Apache-2.0
//
use argh::FromArgs;
use log::info;
use pci::PciBarConfiguration;
use std::{fs::File, mem::size_of, path::PathBuf};
@ -24,9 +25,18 @@ impl pci::PciSubclass for PciVfioUserSubclass {
}
}
#[derive(FromArgs)]
/// GPIO test device
struct Args {
/// path to socket
#[argh(option)]
socket_path: String,
}
struct TestBackend {
configuration: pci::PciConfiguration,
}
impl TestBackend {
fn new() -> TestBackend {
let subclass = PciVfioUserSubclass::VfioUserSubclass;
@ -174,12 +184,12 @@ fn create_irqs() -> Vec<IrqInfo> {
}
fn main() {
let a: Args = argh::from_env();
env_logger::init();
let regions = create_regions();
let irqs = create_irqs();
let path = PathBuf::from("/tmp/vfio-user-test.socket");
let path = PathBuf::from(a.socket_path);
let s = Server::new(&path, true, irqs, regions).unwrap();
let mut test_backend = TestBackend::new();
s.run(&mut test_backend).unwrap();