diff options
| author | salmonik <salmonik@tuta.io> | 2026-08-01 18:25:55 +0200 |
|---|---|---|
| committer | salmonik <salmonik@tuta.io> | 2026-08-01 18:25:55 +0200 |
| commit | 1ea2f68e6a9af135e6cb3274fdf28d4ddc5812d5 (patch) | |
| tree | f28246586e387293d0c8beaf6b445210aaab8c48 /rsnix/src/memory.rs | |
| parent | klog/tty/pager: no more truncated lines — full lines flow, terminal wraps (diff) | |
| download | rs-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 'rsnix/src/memory.rs')
| -rw-r--r-- | rsnix/src/memory.rs | 12 |
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(); |
