std: xous: use constants for stdout and stderr

Use constants for the opcodes when writing to stdout or stderr.

There still is no stdin operation.

Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
Sean Cross
2023-12-29 19:05:57 +08:00
parent aa73860628
commit 99b06594a8
2 changed files with 16 additions and 3 deletions
+11
View File
@@ -45,6 +45,17 @@ pub(crate) enum LogScalar<'a> {
}
}
pub(crate) enum LogLend {
StandardOutput = 1,
StandardError = 2,
}
impl Into<usize> for LogLend {
fn into(self) -> usize {
self as usize
}
}
/// Return a `Connection` to the log server, which is used for printing messages to
/// the console and reporting panics. If the log server has not yet started, this
/// will block until the server is running. It is safe to call this multiple times,
+5 -3
View File
@@ -5,7 +5,7 @@ pub struct Stdout {}
pub struct Stderr;
use crate::os::xous::ffi::{lend, try_lend, try_scalar, Connection};
use crate::os::xous::services::{log_server, try_connect, LogScalar};
use crate::os::xous::services::{log_server, try_connect, LogLend, LogScalar};
impl Stdin {
pub const fn new() -> Stdin {
@@ -35,7 +35,8 @@ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
for (dest, src) in lend_buffer.0.iter_mut().zip(chunk) {
*dest = *src;
}
lend(connection, 1, &lend_buffer.0, 0, chunk.len()).unwrap();
lend(connection, LogLend::StandardOutput.into(), &lend_buffer.0, 0, chunk.len())
.unwrap();
}
Ok(buf.len())
}
@@ -61,7 +62,8 @@ fn write(&mut self, buf: &[u8]) -> io::Result<usize> {
for (dest, src) in lend_buffer.0.iter_mut().zip(chunk) {
*dest = *src;
}
lend(connection, 1, &lend_buffer.0, 0, chunk.len()).unwrap();
lend(connection, LogLend::StandardError.into(), &lend_buffer.0, 0, chunk.len())
.unwrap();
}
Ok(buf.len())
}