[package]
edition = "2021"
rust-version = "1.75.0"
name = "smmu"
version = "1.2.5"
authors = ["ARM SMMU v3 Implementation Team"]
build = false
include = [
"src/**/*.rs",
"benches/**/*.rs",
"tests/**/*.rs",
"examples/**/*.rs",
"Cargo.toml",
"LICENSE-MIT",
"LICENSE-APACHE",
"../README.md",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "ARM SMMU v3 (System Memory Management Unit) implementation - Production-grade translation engine"
homepage = "https://github.com/jpgreninger/smmu"
documentation = "https://docs.rs/smmu"
readme = "README.md"
keywords = [
"smmu",
"iommu",
"memory-management",
"arm",
"virtualization",
]
categories = [
"embedded",
"hardware-support",
"simulation",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/jpgreninger/smmu"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-pc-windows-msvc",
"x86_64-apple-darwin",
"aarch64-apple-darwin",
]
[features]
cache = []
default = [
"std",
"pasid",
"two-stage",
"cache",
]
full = [
"std",
"serde",
"pasid",
"two-stage",
"cache",
]
minimal = ["std"]
pasid = []
serde = ["dep:serde"]
std = []
two-stage = []
[lib]
name = "smmu"
crate-type = [
"lib",
"staticlib",
"cdylib",
]
path = "src/lib.rs"
[[example]]
name = "basic_translation"
path = "examples/basic_translation.rs"
[[example]]
name = "fault_handling"
path = "examples/fault_handling.rs"
[[example]]
name = "iterator_apis"
path = "examples/iterator_apis.rs"
[[example]]
name = "multi_stream"
path = "examples/multi_stream.rs"
[[example]]
name = "pasid_management"
path = "examples/pasid_management.rs"
[[example]]
name = "performance_tuning"
path = "examples/performance_tuning.rs"
[[example]]
name = "section_5_2_demo"
path = "examples/section_5_2_demo.rs"
[[example]]
name = "two_stage_translation"
path = "examples/two_stage_translation.rs"
[[test]]
name = "cache_entry_tests"
path = "tests/cache_entry_tests.rs"
[[test]]
name = "compliance_test"
path = "tests/compliance_test.rs"
[[test]]
name = "concurrency_stress_tests"
path = "tests/concurrency_stress_tests.rs"
[[test]]
name = "concurrency_tests"
path = "tests/concurrency_tests.rs"
[[test]]
name = "config_comprehensive_tests"
path = "tests/config_comprehensive_tests.rs"
[[test]]
name = "config_tests"
path = "tests/config_tests.rs"
[[test]]
name = "config_tests_new_features"
path = "tests/config_tests_new_features.rs"
[[test]]
name = "edge_case_error_tests"
path = "tests/edge_case_error_tests.rs"
[[test]]
name = "integration_test"
path = "tests/integration_test.rs"
[[test]]
name = "loom_concurrency_tests"
path = "tests/loom_concurrency_tests.rs"
[[test]]
name = "memory_usage_tests"
path = "tests/memory_usage_tests.rs"
[[test]]
name = "optimization_validation_test"
path = "tests/optimization_validation_test.rs"
[[test]]
name = "performance_regression_tests"
path = "tests/performance_regression_tests.rs"
[[test]]
name = "property_based_expanded"
path = "tests/property_based_expanded.rs"
[[test]]
name = "property_based_tests"
path = "tests/property_based_tests.rs"
[[test]]
name = "quickcheck_tests"
path = "tests/quickcheck_tests.rs"
[[test]]
name = "serde_test"
path = "tests/serde_test.rs"
[[test]]
name = "test_access_type"
path = "tests/test_access_type.rs"
[[test]]
name = "test_access_type_comprehensive"
path = "tests/test_access_type_comprehensive.rs"
[[test]]
name = "test_address_space"
path = "tests/test_address_space.rs"
[[test]]
name = "test_address_space_section_3_2"
path = "tests/test_address_space_section_3_2.rs"
[[test]]
name = "test_address_types"
path = "tests/test_address_types.rs"
[[test]]
name = "test_command_entry"
path = "tests/test_command_entry.rs"
[[test]]
name = "test_event_entry_comprehensive"
path = "tests/test_event_entry_comprehensive.rs"
[[test]]
name = "test_fault_detection"
path = "tests/test_fault_detection.rs"
[[test]]
name = "test_fault_processing"
path = "tests/test_fault_processing.rs"
[[test]]
name = "test_fault_queue_comprehensive"
path = "tests/test_fault_queue_comprehensive.rs"
[[test]]
name = "test_fault_record"
path = "tests/test_fault_record.rs"
[[test]]
name = "test_fault_type"
path = "tests/test_fault_type.rs"
[[test]]
name = "test_page_entry"
path = "tests/test_page_entry.rs"
[[test]]
name = "test_pasid"
path = "tests/test_pasid.rs"
[[test]]
name = "test_pri_entry"
path = "tests/test_pri_entry.rs"
[[test]]
name = "test_queue_statistics"
path = "tests/test_queue_statistics.rs"
[[test]]
name = "test_queues_section_5_3"
path = "tests/test_queues_section_5_3.rs"
[[test]]
name = "test_security_state"
path = "tests/test_security_state.rs"
[[test]]
name = "test_smmu_comprehensive"
path = "tests/test_smmu_comprehensive.rs"
[[test]]
name = "test_smmu_section_5_1"
path = "tests/test_smmu_section_5_1.rs"
[[test]]
name = "test_stream_context_comprehensive"
path = "tests/test_stream_context_comprehensive.rs"
[[test]]
name = "test_stream_context_section_4_1"
path = "tests/test_stream_context_section_4_1.rs"
[[test]]
name = "test_stream_context_section_4_2"
path = "tests/test_stream_context_section_4_2.rs"
[[test]]
name = "test_stream_id"
path = "tests/test_stream_id.rs"
[[test]]
name = "test_timestamp_optimization"
path = "tests/test_timestamp_optimization.rs"
[[test]]
name = "test_translation_result"
path = "tests/test_translation_result.rs"
[[test]]
name = "test_translation_result_comprehensive"
path = "tests/test_translation_result_comprehensive.rs"
[[test]]
name = "test_translation_stage"
path = "tests/test_translation_stage.rs"
[[test]]
name = "test_validation_error"
path = "tests/test_validation_error.rs"
[[test]]
name = "tlb_cache_integration_test"
path = "tests/tlb_cache_integration_test.rs"
[[test]]
name = "unit_address_space"
path = "tests/unit_address_space.rs"
[[test]]
name = "unit_fault_handling"
path = "tests/unit_fault_handling.rs"
[[test]]
name = "unit_performance_optimizations"
path = "tests/unit_performance_optimizations.rs"
[[test]]
name = "unit_smmu_controller"
path = "tests/unit_smmu_controller.rs"
[[test]]
name = "unit_stream_context"
path = "tests/unit_stream_context.rs"
[[bench]]
name = "address_space"
path = "benches/address_space.rs"
harness = false
[[bench]]
name = "algorithm_optimization"
path = "benches/algorithm_optimization.rs"
harness = false
[[bench]]
name = "cache"
path = "benches/cache.rs"
harness = false
[[bench]]
name = "memory_usage"
path = "benches/memory_usage.rs"
harness = false
[[bench]]
name = "performance_regression"
path = "benches/performance_regression.rs"
[[bench]]
name = "translation"
path = "benches/translation.rs"
harness = false
[dependencies.dashmap]
version = "5.5"
[dependencies.serde]
version = "1.0"
features = ["derive"]
optional = true
[dependencies.smallvec]
version = "1.11"
[dependencies.thiserror]
version = "2.0"
[dev-dependencies.criterion]
version = "0.5"
[dev-dependencies.loom]
version = "0.7"
[dev-dependencies.proptest]
version = "1.5"
[dev-dependencies.quickcheck]
version = "1.0"
[dev-dependencies.quickcheck_macros]
version = "1.0"
[dev-dependencies.rand]
version = "0.8"
[dev-dependencies.serde]
version = "1.0"
features = ["derive"]
[dev-dependencies.serde_json]
version = "1.0"
[lints.clippy]
cast_lossless = "warn"
cast_possible_truncation = "warn"
cast_possible_wrap = "warn"
cast_sign_loss = "warn"
checked_conversions = "warn"
cloned_instead_of_copied = "warn"
explicit_deref_methods = "warn"
explicit_into_iter_loop = "warn"
explicit_iter_loop = "warn"
filter_map_next = "warn"
flat_map_option = "warn"
fn_params_excessive_bools = "warn"
implicit_clone = "warn"
inefficient_to_string = "warn"
invalid_upcast_comparisons = "warn"
large_digit_groups = "warn"
large_stack_arrays = "warn"
large_types_passed_by_value = "warn"
manual_ok_or = "warn"
map_unwrap_or = "warn"
match_same_arms = "warn"
match_wildcard_for_single_variants = "warn"
module_name_repetitions = "allow"
must_use_candidate = "warn"
needless_continue = "warn"
needless_pass_by_value = "warn"
semicolon_if_nothing_returned = "warn"
single_match_else = "warn"
too_many_lines = "warn"
trivially_copy_pass_by_ref = "warn"
unreadable_literal = "warn"
unused_self = "warn"
used_underscore_binding = "warn"
[lints.clippy.cargo]
level = "warn"
priority = 1
[lints.clippy.complexity]
level = "warn"
priority = 5
[lints.clippy.correctness]
level = "deny"
priority = 10
[lints.clippy.nursery]
level = "warn"
priority = 1
[lints.clippy.pedantic]
level = "warn"
priority = 1
[lints.clippy.perf]
level = "warn"
priority = 5
[lints.clippy.style]
level = "warn"
priority = 5
[lints.clippy.suspicious]
level = "deny"
priority = 10
[lints.rust]
missing_debug_implementations = "warn"
missing_docs = "warn"
rust_2018_idioms = "warn"
unsafe_code = "warn"
[lints.rust.unexpected_cfgs]
level = "warn"
priority = 0
check-cfg = ["cfg(loom)"]