1 // Copyright 2022 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 use base::warn;
6 use base::Tube;
7 use vm_control::api::VmMemoryClient;
8 use vm_memory::GuestAddress;
9
free_memory( guest_address: &GuestAddress, len: u64, vm_memory_client: &VmMemoryClient, )10 pub(in crate::virtio::balloon) fn free_memory(
11 guest_address: &GuestAddress,
12 len: u64,
13 vm_memory_client: &VmMemoryClient,
14 ) {
15 if let Err(e) = vm_memory_client.dynamically_free_memory_range(*guest_address, len) {
16 warn!(
17 "Failed to dynamically free memory range. Marking pages unused failed: {}, addr={}",
18 e, guest_address
19 );
20 }
21 }
22
reclaim_memory( guest_address: &GuestAddress, len: u64, vm_memory_client: &VmMemoryClient, )23 pub(in crate::virtio::balloon) fn reclaim_memory(
24 guest_address: &GuestAddress,
25 len: u64,
26 vm_memory_client: &VmMemoryClient,
27 ) {
28 if let Err(e) = vm_memory_client.dynamically_reclaim_memory_range(*guest_address, len) {
29 warn!(
30 "Failed to dynamically reclaim memory. Marking pages used failed: {}, addr={}",
31 e, guest_address
32 );
33 }
34 }
35
balloon_target_reached( size: u64, vm_memory_client: &VmMemoryClient, )36 pub(in crate::virtio::balloon) fn balloon_target_reached(
37 size: u64,
38 vm_memory_client: &VmMemoryClient,
39 ) {
40 if let Err(e) = vm_memory_client.balloon_target_reached(size) {
41 warn!(
42 "Failed to send or receive allocation complete request: {}, size={}",
43 e, size
44 );
45 }
46 }
47