linux-loader 0.2.0

A Linux kernel image loading crate.
Documentation
// Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
//
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE-BSD-3-Clause file.
//
// SPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause

extern crate criterion;
extern crate linux_loader;
extern crate vm_memory;

use criterion::{criterion_group, criterion_main, Criterion};

#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
mod x86_64;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
use x86_64::*;

#[cfg(target_arch = "aarch64")]
mod aarch64;
#[cfg(target_arch = "aarch64")]
use aarch64::*;

pub fn criterion_benchmark_nop(_: &mut Criterion) {}

criterion_group! {
    name = benches;
    config = Criterion::default().sample_size(500);
    targets = criterion_benchmark
}

#[cfg(all(any(target_arch = "x86", target_arch = "x86_64"), feature = "bzimage"))]
// Explicit (arch, feature) tuple required as clippy complains about
// `criterion_benchmark_bzimage` missing on aarch64.
criterion_group! {
    name = benches_bzimage;
    // Only ~125 runs fit in 5 seconds. Either extend the duration, or reduce
    // the number of iterations.
    config = Criterion::default().sample_size(100);
    targets = criterion_benchmark_bzimage
}

// NOP because the `criterion_main!` macro doesn't support cfg(feature)
// macro expansions.
#[cfg(any(target_arch = "aarch64", not(feature = "bzimage")))]
criterion_group! {
    name = benches_bzimage;
    // Sample size must be >= 10.
    // https://github.com/bheisler/criterion.rs/blob/0.3.0/src/lib.rs#L757
    config = Criterion::default().sample_size(10);
    targets = criterion_benchmark_nop
}

criterion_main! {
    benches,
    benches_bzimage
}