0cbad35638
Kernel source (ephemeral — changes durable in local/patches/kernel/): - P20 x2apic ICR mode fix, P21 x2apic SMP fix applied - ACPI MADT, RSDP, SDT improvements - Context switch, percpu, event, IRQ scheme updates - MSI/vector allocation, NUMA/SLIT/SRAT support Local recipe source updates: - redox-driver-acpi: bus/prt hardening - redox-drm: Intel display, KMS connector improvements - driver-manager: config/scheme hardening - thermald: main.rs fix - uutils-tar, ninja-build: source updates Other: - bootloader, installer, redoxfs, relibc, userutils source updates - recipe.toml.backup, libxcvt source directory
122 lines
3.8 KiB
TOML
122 lines
3.8 KiB
TOML
[workspace]
|
|
resolver = "3"
|
|
|
|
[package]
|
|
name = "kernel"
|
|
version = "0.5.12"
|
|
build = "build.rs"
|
|
edition = "2024"
|
|
|
|
[build-dependencies]
|
|
cc = "1.0"
|
|
toml = "0.8"
|
|
|
|
[dependencies]
|
|
acpi_ext = { package = "acpi", git = "https://gitlab.redox-os.org/redox-os/acpi.git", branch = "redox-6.x" }
|
|
arrayvec = { version = "0.7.4", default-features = false }
|
|
bitfield = "0.13.2"
|
|
bitflags = "2"
|
|
fdt = { git = "https://github.com/repnop/fdt.git", rev = "2fb1409edd1877c714a0aa36b6a7c5351004be54" }
|
|
hashbrown = { version = "0.14.3", default-features = false, features = ["ahash", "inline-more"] }
|
|
linked_list_allocator = "0.9.0"
|
|
redox-path = "0.2.0"
|
|
redox_syscall = { version = "0.7.4", default-features = false }
|
|
rmm = { path = "rmm", default-features = false }
|
|
slab = { version = "0.4", default-features = false }
|
|
smallvec = { version = "1.15.1", default-features = false }
|
|
spin = { version = "0.9.8" }
|
|
|
|
[dependencies.object]
|
|
version = "0.37.1"
|
|
default-features = false
|
|
features = ["read_core", "elf"]
|
|
|
|
[dependencies.rustc-demangle]
|
|
version = "0.1.16"
|
|
default-features = false
|
|
|
|
[lints.clippy]
|
|
# Overflows are very, very bad in kernel code as it may provide an attack vector for
|
|
# userspace applications, and it is only checked in debug builds
|
|
# TODO: address occurrences and then deny
|
|
arithmetic_side_effects = "warn"
|
|
cast_ptr_alignment = "warn" # TODO: address occurrences and then deny
|
|
identity_op = "allow" # Used to allow stuff like 1 << 0 and 1 * 1024 * 1024
|
|
if_same_then_else = "allow" # Useful for adding comments about different branches
|
|
# Indexing a slice can cause panics and that is something we always want to avoid
|
|
# in kernel code. Use .get and return an error instead
|
|
# TODO: address occurrences and then deny
|
|
indexing_slicing = "warn"
|
|
many_single_char_names = "allow" # Useful in the syscall function
|
|
module_inception = "allow" # Used for context::context
|
|
# Not implementing default is sometimes useful in the case something has significant cost
|
|
# to allocate. If you implement default, it can be allocated without evidence using the
|
|
# ..Default::default() syntax. Not fun in kernel space
|
|
new_without_default = "allow"
|
|
not_unsafe_ptr_arg_deref = "deny"
|
|
or_fun_call = "allow" # Used to make it nicer to return errors, for example, .ok_or(Error::new(ESRCH))
|
|
precedence = "deny"
|
|
ptr_cast_constness = "deny"
|
|
too_many_arguments = "allow" # This is needed in some cases, like for syscall
|
|
# Avoid panicking in the kernel without information about the panic. Use expect
|
|
# TODO: address occurrences and then deny
|
|
unwrap_used = "warn"
|
|
|
|
[lints.rust]
|
|
static_mut_refs = "warn" # FIXME deny once all occurrences are fixed
|
|
# This is usually a serious issue - a missing import of a define where it is interpreted
|
|
# as a catch-all variable in a match, for example
|
|
unreachable_patterns = "deny"
|
|
unused_must_use = "deny" # Ensure that all must_use results are used
|
|
|
|
[target.'cfg(any(target_arch = "x86", target_arch = "x86_64"))'.dependencies]
|
|
raw-cpuid = "10.2.0"
|
|
x86 = { version = "0.47.0", default-features = false }
|
|
|
|
[target.'cfg(any(target_arch = "riscv64", target_arch = "riscv32"))'.dependencies]
|
|
sbi-rt = "0.0.3"
|
|
|
|
[features]
|
|
default = [
|
|
"acpi",
|
|
#"debugger",
|
|
"multi_core",
|
|
"serial_debug",
|
|
"self_modifying",
|
|
"x86_kvm_pv",
|
|
#"busy_panic",
|
|
#"drop_panic",
|
|
#"syscall_debug"
|
|
]
|
|
|
|
# Activates some limited code-overwriting optimizations, based on CPU features.
|
|
self_modifying = []
|
|
|
|
acpi = []
|
|
lpss_debug = []
|
|
multi_core = ["acpi"]
|
|
profiling = []
|
|
#TODO: remove when threading issues are fixed
|
|
pti = []
|
|
drop_panic = []
|
|
busy_panic = []
|
|
qemu_debug = []
|
|
serial_debug = []
|
|
system76_ec_debug = []
|
|
x86_kvm_pv = []
|
|
|
|
debugger = ["syscall_debug"]
|
|
syscall_debug = []
|
|
|
|
sys_fdstat = []
|
|
|
|
[profile.dev]
|
|
# Avoids having to define the eh_personality lang item and reduces kernel size
|
|
panic = "abort"
|
|
|
|
[profile.release]
|
|
# Avoids having to define the eh_personality lang item and reduces kernel size
|
|
panic = "abort"
|
|
#lto = true
|
|
debug = "full"
|