Skip to main content

compression_bindings/
compression_bindings.rs

1// Copyright 2026 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This file is automatically generated by //zircon/kernel/vm:_kernel_bindgen_crate.compression-bindings.bindgen.
6
7#![expect(non_upper_case_globals)]
8#![no_std]
9pub use compressor_bindings::VmCompressor;
10use page_bindings::vm_page_t;
11pub use zx_types::zx_duration_mono_t;
12
13#[derive(PartialEq, Eq, Copy, Clone, Debug, Hash)]
14#[repr(C, align(8))]
15pub struct __BindgenOpaqueArray8<T>(pub T);
16impl<T: Copy + Default, const N: usize> Default for __BindgenOpaqueArray8<[T; N]> {
17    fn default() -> Self {
18        Self([<T as Default>::default(); N])
19    }
20}
21#[repr(C)]
22#[derive(Debug, Copy, Clone)]
23pub struct VmCompressedStorage_MemoryUsage {
24    pub uncompressed_content_bytes: u64,
25    pub compressed_storage_bytes: u64,
26    pub compressed_storage_used_bytes: u64,
27}
28#[repr(C)]
29#[repr(align(8))]
30#[derive(Debug, Copy, Clone)]
31pub struct VmCompression {
32    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 280usize]>,
33}
34#[repr(C)]
35#[repr(align(8))]
36#[derive(Debug, Copy, Clone)]
37pub struct VmCompression_CompressorGuard {
38    pub _bindgen_opaque_blob: __BindgenOpaqueArray8<[u8; 24usize]>,
39}
40#[repr(C)]
41pub struct VmCompression_Stats {
42    pub memory_usage: VmCompressedStorage_MemoryUsage,
43    pub compression_time: zx_duration_mono_t,
44    pub decompression_time: zx_duration_mono_t,
45    pub total_page_compression_attempts: u64,
46    pub failed_page_compression_attempts: u64,
47    pub total_page_decompressions: u64,
48    pub compressed_page_evictions: u64,
49    pub pages_decompressed_within_log_seconds: [u64; 8usize],
50}
51pub const VmCompression_kNumLogBuckets: usize = 8;
52#[repr(C)]
53#[derive(Debug, Copy, Clone)]
54pub struct FfiCompressResult {
55    pub tag: u8,
56    pub __bindgen_padding_0: [u8; 3usize],
57    pub ref_: u32,
58    pub fail_page: *mut vm_page_t,
59    pub fail_metadata: u32,
60    pub __bindgen_padding_1: [u8; 4usize],
61}
62unsafe extern "C" {
63    pub fn cpp_vmcompression_destroy(compression: *mut VmCompression);
64}
65unsafe extern "C" {
66    pub fn cpp_vmcompression_free(compression: *mut VmCompression);
67}
68unsafe extern "C" {
69    pub fn cpp_vmcompression_get_ref_counted(compression: *mut VmCompression) -> *mut u32;
70}
71unsafe extern "C" {
72    pub fn cpp_vmcompression_acquire_compressor(guard: *mut u8, compression: *mut VmCompression);
73}
74unsafe extern "C" {
75    pub fn cpp_vmcompression_compressor_guard_destroy(guard: *mut VmCompression_CompressorGuard);
76}
77unsafe extern "C" {
78    pub fn cpp_vmcompression_compressor_guard_get(
79        guard: *mut VmCompression_CompressorGuard,
80    ) -> *mut VmCompressor;
81}
82unsafe extern "C" {
83    pub fn cpp_vmcompression_compress(
84        compression: *mut VmCompression,
85        page_src: *const ::core::ffi::c_void,
86    ) -> FfiCompressResult;
87}
88unsafe extern "C" {
89    pub fn cpp_vmcompression_set_metadata(
90        compression: *mut VmCompression,
91        ref_: u32,
92        metadata: u32,
93    );
94}
95unsafe extern "C" {
96    pub fn cpp_vmcompression_free_reference(compression: *mut VmCompression, ref_: u32);
97}
98unsafe extern "C" {
99    pub fn cpp_vmcompression_get_stats(compression: *const VmCompression) -> VmCompression_Stats;
100}