From 9a32c3b2273161ef4aa166e246a07e73cfa083d3 Mon Sep 17 00:00:00 2001 From: Matthew Leach Date: Tue, 13 Oct 2026 11:11:48 +0100 Subject: [PATCH 1/2] libkernel: memory: heap: fix stress test The current stress test uses a fixed size & alignment, not very stressful. Change it to be a dynamic size with occasional huge allocations as per the comment. Also randomise the alignment. --- libkernel/src/memory/allocators/slab/heap.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/libkernel/src/memory/allocators/slab/heap.rs b/libkernel/src/memory/allocators/slab/heap.rs index 62452380..6653154e 100644 --- a/libkernel/src/memory/allocators/slab/heap.rs +++ b/libkernel/src/memory/allocators/slab/heap.rs @@ -302,16 +302,21 @@ mod tests { let mut allocations: Vec<(*mut u8, core::alloc::Layout, u8)> = Vec::new(); for _ in 0..ops_per_thread { - // Randomly decide to Alloc (70%) or Free (30%) + // Randomly decide to Alloc (60%) or Free (40%) // Bias towards Alloc to build up memory pressure if rng.random_bool(0.6) || allocations.is_empty() { // Allocation path // Random size: biased to small (slab), occasional huge - let size = 1024; + let size = if rng.random_bool(0.01) { + // huge alloc. + rng.random_range(4096..=16536) + } else { + rng.random_range(1..=1024) + }; // Random alignment (power of 2) - let align = 1024; + let align = 1 << rng.random_range(1..=8_usize); let layout = core::alloc::Layout::from_size_align(size, align).unwrap(); unsafe { From a47b455389d2ca88bfb0753267dd4fa3d851d8d9 Mon Sep 17 00:00:00 2001 From: Matthew Leach Date: Tue, 13 Oct 2026 11:21:21 +0100 Subject: [PATCH 2/2] libkernel: bump to v0.2.0 --- Cargo.lock | 2 +- libkernel/Cargo.toml | 2 +- libkernel/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0de57dab..c6a898be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -529,7 +529,7 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" [[package]] name = "libkernel" -version = "0.1.6" +version = "0.2.0" dependencies = [ "async-trait", "bitflags 2.11.1", diff --git a/libkernel/Cargo.toml b/libkernel/Cargo.toml index a4bc775f..dae5cb49 100644 --- a/libkernel/Cargo.toml +++ b/libkernel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libkernel" -version = "0.1.6" +version = "0.2.0" edition = "2024" description = "Architecture-independent kernel building blocks for operating systems" license = "MIT" diff --git a/libkernel/README.md b/libkernel/README.md index cbdf5950..e4d36341 100644 --- a/libkernel/README.md +++ b/libkernel/README.md @@ -27,7 +27,7 @@ Add `libkernel` to your `Cargo.toml` with only the features you need: ```toml [dependencies] -libkernel = { version = "0.1", features = ["sync", "proc"] } +libkernel = { version = "0.2", features = ["sync", "proc"] } ``` ## The `CpuOps` trait