commit:af12f7225ad5e6ca1f649ec127fbeccca8679398
author:Chip
committer:Chip
date:Sun Sep 24 02:43:56 2023 -0500
parents:ae440dae6a1d9f560eda1d7f8d13aba77b21edfd
Fix write retries for partial writes
diff --git a/src/stdlib.rs b/src/stdlib.rs
line changes: +6/-1
index 2de1ce8..dba1c31
--- a/src/stdlib.rs
+++ b/src/stdlib.rs
@@ -26,7 +26,12 @@ pub fn print(s: &str) {
 pub fn write(buf: &[u8]) {
     let ptr = buf.as_ptr() as u32;
     let len = buf.len();
-    unsafe { _svc_call(2, ptr, len as u32, 0); }
+    let mut written = 0;
+    while written < len {
+        let w = ptr + (written as u32);
+        let l = (len - written) as u32;
+        written += unsafe { _svc_call(2, w, l, 0) } as usize;
+    }
 }
 
 pub fn read(buf: &mut [u8]) -> usize {