xref: /aosp_15_r20/external/crosvm/devices/src/virtio/balloon/sys/windows.rs (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
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