| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| library fuchsia.virtualization; |
| |
| using zx; |
| |
| /// Contains a memory statistic for the balloon device. |
| type MemStat = struct { |
| tag uint16; |
| val uint64; |
| }; |
| |
| /// A `BalloonController` controls a guest instance's memory balloon. |
| @discoverable |
| closed protocol BalloonController { |
| /// Get the current and requested number of pages in the memory balloon. |
| /// |
| /// current_num_pages is the number of pages balloon has right now. |
| /// requested_num_pages is the desired number of pages in the balloon. |
| /// |
| /// 'current_num_pages' corresponds to the 'actual' virtio-balloon config field |
| /// 'requested_num_pages' corresponds to the 'num_pages' virtio-balloon config field. |
| strict GetBalloonSize() -> (struct { |
| current_num_pages uint32; |
| requested_num_pages uint32; |
| }); |
| |
| /// Request a number of pages to be supplied to the memory balloon. |
| /// |
| /// If `requested_num_pages` is greater than the `current_num_pages` config |
| /// value, the guest driver SHOULD provide additional pages to the memory balloon. |
| /// If `requested_num_pages` is less than the 'current_num_pages' config value, |
| /// the guest driver MAY reclaim pages from the memory balloon. |
| strict RequestNumPages(struct { |
| requested_num_pages uint32; |
| }); |
| |
| /// Get memory statistics of the guest instance. |
| strict GetMemStats() -> (struct { |
| status zx.Status; |
| mem_stats vector<MemStat>:<MAX, optional>; |
| }); |
| }; |