diff options
author | Dylan Reid <dgreid@chromium.org> | 2017-12-06 18:20:09 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-01-02 23:36:26 -0800 |
commit | d44320488fd2db344b6b1fd156c22fdf90b82fe2 (patch) | |
tree | 1ee593b0efa66a7f5dff11f47df98bc307598fd6 /src/linux.rs | |
parent | 4aa86930edecf6b7842b9403dbea153ba8101e00 (diff) | |
download | crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.gz crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.bz2 crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.lz crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.xz crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.tar.zst crosvm-d44320488fd2db344b6b1fd156c22fdf90b82fe2.zip |
main: Add inflate/deflate interface for balloon
Change-Id: I0fc63abbed8db303c7d283ce392fd47777b60d19 Reviewed-on: https://chromium-review.googlesource.com/818207 Commit-Ready: Dylan Reid <dgreid@chromium.org> Tested-by: Dylan Reid <dgreid@chromium.org> Reviewed-by: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r-- | src/linux.rs | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/src/linux.rs b/src/linux.rs index c57f6b3..c5c7001 100644 --- a/src/linux.rs +++ b/src/linux.rs @@ -253,7 +253,7 @@ pub fn run_config(cfg: Config) -> Result<()> { device_manager.register_mmio(rng_box, rng_jail, &mut cmdline) .map_err(Error::RegisterRng)?; - let (_, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?; + let (balloon_host_socket, balloon_device_socket) = UnixDatagram::pair().map_err(Error::Socket)?; let balloon_box = Box::new(devices::virtio::Balloon::new(balloon_device_socket) .map_err(Error::BalloonDeviceNew)?); let balloon_jail = if cfg.multiprocess { @@ -387,7 +387,8 @@ pub fn run_config(cfg: Config) -> Result<()> { cfg.vcpu_count.unwrap_or(1), guest_mem, &device_manager.bus, - control_sockets) + control_sockets, + balloon_host_socket) } fn run_kvm(requests: Vec<VmRequest>, @@ -396,7 +397,8 @@ fn run_kvm(requests: Vec<VmRequest>, vcpu_count: u32, guest_mem: GuestMemory, mmio_bus: &devices::Bus, - control_sockets: Vec<UnlinkUnixDatagram>) + control_sockets: Vec<UnlinkUnixDatagram>, + balloon_host_socket: UnixDatagram) -> Result<()> { let kvm = Kvm::new().map_err(Error::Kvm)?; let kernel_start_addr = GuestAddress(KERNEL_START_OFFSET); @@ -414,7 +416,8 @@ fn run_kvm(requests: Vec<VmRequest>, let mut next_dev_pfn = BASE_DEV_MEMORY_PFN; for request in requests { let mut running = false; - if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn, &mut running) { + if let VmResponse::Err(e) = request.execute(&mut vm, &mut next_dev_pfn, + &mut running, &balloon_host_socket) { return Err(Error::Vm(e)); } if !running { @@ -573,7 +576,8 @@ fn run_kvm(requests: Vec<VmRequest>, exit_evt, sigchld_fd, kill_signaled, - vcpu_handles) + vcpu_handles, + balloon_host_socket) } fn run_control(mut vm: Vm, @@ -583,7 +587,8 @@ fn run_control(mut vm: Vm, exit_evt: EventFd, sigchld_fd: SignalFd, kill_signaled: Arc<AtomicBool>, - vcpu_handles: Vec<JoinHandle<()>>) + vcpu_handles: Vec<JoinHandle<()>>, + balloon_host_socket: UnixDatagram) -> Result<()> { const MAX_VM_FD_RECV: usize = 1; @@ -665,7 +670,8 @@ fn run_control(mut vm: Vm, Ok(request) => { let mut running = true; let response = - request.execute(&mut vm, &mut next_dev_pfn, &mut running); + request.execute(&mut vm, &mut next_dev_pfn, + &mut running, &balloon_host_socket); if let Err(e) = response.send(&mut scm, socket.as_ref()) { error!("failed to send VmResponse: {:?}", e); } |