diff options
Diffstat (limited to '')
| -rw-r--r-- | rsnix/src/sched.rs | 18 |
1 files changed, 2 insertions, 16 deletions
diff --git a/rsnix/src/sched.rs b/rsnix/src/sched.rs index 4b10503..6ffa745 100644 --- a/rsnix/src/sched.rs +++ b/rsnix/src/sched.rs | |||
| @@ -372,7 +372,7 @@ pub fn page_fault(cr2: u64, frame_ptr: usize) -> usize { | |||
| 372 | let rip = unsafe { (frame_ptr as *const IntFrame).read().rip }; | 372 | let rip = unsafe { (frame_ptr as *const IntFrame).read().rip }; |
| 373 | let mut buf = [0u8; 96]; | 373 | let mut buf = [0u8; 96]; |
| 374 | let n = { | 374 | let n = { |
| 375 | let mut f = FmtBuf { b: &mut buf, n: 0 }; | 375 | let mut f = crate::strbuf::FmtBuf::new(&mut buf); |
| 376 | let _ = fmt::write( | 376 | let _ = fmt::write( |
| 377 | &mut f, | 377 | &mut f, |
| 378 | core::format_args!( | 378 | core::format_args!( |
| @@ -386,7 +386,7 @@ pub fn page_fault(cr2: u64, frame_ptr: usize) -> usize { | |||
| 386 | rip | 386 | rip |
| 387 | ), | 387 | ), |
| 388 | ); | 388 | ); |
| 389 | f.n | 389 | f.len() |
| 390 | }; | 390 | }; |
| 391 | abort_current(core::str::from_utf8(&buf[..n]).unwrap_or("task fault")) | 391 | abort_current(core::str::from_utf8(&buf[..n]).unwrap_or("task fault")) |
| 392 | } | 392 | } |
| @@ -528,17 +528,3 @@ fn idle_main() { | |||
| 528 | } | 528 | } |
| 529 | } | 529 | } |
| 530 | } | 530 | } |
| 531 | |||
| 532 | struct FmtBuf<'a> { | ||
| 533 | b: &'a mut [u8], | ||
| 534 | n: usize, | ||
| 535 | } | ||
| 536 | |||
| 537 | impl fmt::Write for FmtBuf<'_> { | ||
| 538 | fn write_str(&mut self, s: &str) -> fmt::Result { | ||
| 539 | let m = s.len().min(self.b.len() - self.n); | ||
| 540 | self.b[self.n..self.n + m].copy_from_slice(&s.as_bytes()[..m]); | ||
| 541 | self.n += m; | ||
| 542 | Ok(()) | ||
| 543 | } | ||
| 544 | } | ||
