summaryrefslogtreecommitdiffstats
path: root/rsnix/src/memory.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-01 18:25:55 +0200
committersalmonik <salmonik@tuta.io>2026-08-01 18:25:55 +0200
commit1ea2f68e6a9af135e6cb3274fdf28d4ddc5812d5 (patch)
treef28246586e387293d0c8beaf6b445210aaab8c48 /rsnix/src/memory.rs
parentklog/tty/pager: no more truncated lines — full lines flow, terminal wraps (diff)
downloadrs-dos-1ea2f68e6a9af135e6cb3274fdf28d4ddc5812d5.tar.gz
rs-dos-1ea2f68e6a9af135e6cb3274fdf28d4ddc5812d5.zip
fix pi-lens warnings: unwraps, shell SC2046, dup code (fmtbuf/scripts/hexdump/cat/ahci/pci)
- memory.rs: self-test Layout::from_size_align no longer panics — the test fails cleanly on an invalid layout - fat.rs: v() no longer unwraps the active-volume slot — invariant violation logs + halts instead of panicking mid-disk-io - strbuf: shared FmtBuf replaces the duplicated PanicBuf/FmtBuf (main.rs + sched.rs) - test-disk.sh: SC2046 — conditional --fresh arg no longer relies on word splitting - scripts: boot.sh/boot-image.sh share lib-boot-args.sh (dup args loop) - shell: cat/hexdump stdin pairs unified with Option<&str> marker; hexdump format_row folded into format_partial - ahci: read/write_sectors unified behind dma_sectors - pci: config_read/write share config_addr
Diffstat (limited to '')
-rw-r--r--rsnix/src/memory.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/rsnix/src/memory.rs b/rsnix/src/memory.rs
index 7c3eda0..e03af8b 100644
--- a/rsnix/src/memory.rs
+++ b/rsnix/src/memory.rs
@@ -458,7 +458,9 @@ pub fn self_test() -> bool {
458 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); 458 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1);
459 let align = 16usize << (seed as usize % 8); 459 let align = 16usize << (seed as usize % 8);
460 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); 460 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1);
461 let layout = Layout::from_size_align(size, align).unwrap(); 461 let Ok(layout) = Layout::from_size_align(size, align) else {
462 return false; // impossible: size <= 2048, align <= 2048
463 };
462 let p = ALLOCATOR.alloc(layout); 464 let p = ALLOCATOR.alloc(layout);
463 if p.is_null() { 465 if p.is_null() {
464 break; // heap exhausted — stop 466 break; // heap exhausted — stop
@@ -493,7 +495,9 @@ pub fn self_test() -> bool {
493 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); 495 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1);
494 let align = 16usize << (seed as usize % 8); 496 let align = 16usize << (seed as usize % 8);
495 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1); 497 seed = seed.wrapping_mul(6364136223846793005).wrapping_add(1);
496 let layout = Layout::from_size_align(size, align).unwrap(); 498 let Ok(layout) = Layout::from_size_align(size, align) else {
499 return false; // impossible: size <= 2048, align <= 2048
500 };
497 let p = ALLOCATOR.alloc(layout); 501 let p = ALLOCATOR.alloc(layout);
498 if p.is_null() { 502 if p.is_null() {
499 return false; // failed to reuse freed space 503 return false; // failed to reuse freed space
@@ -510,7 +514,9 @@ pub fn self_test() -> bool {
510 if *ptr == 0 { 514 if *ptr == 0 {
511 continue; 515 continue;
512 } 516 }
513 let layout = Layout::from_size_align(*size, *align).unwrap(); 517 let Ok(layout) = Layout::from_size_align(*size, *align) else {
518 return false; // impossible: sizes/aligns came from the loop above
519 };
514 ALLOCATOR.dealloc(*ptr as *mut u8, layout); 520 ALLOCATOR.dealloc(*ptr as *mut u8, layout);
515 } 521 }
516 let stats = heap_stats(); 522 let stats = heap_stats();