mirror of https://github.com/m-labs/artiq.git
Rust: use generated CSR functions.
This commit is contained in:
parent
fdcb27ccff
commit
3263def5c8
|
@ -0,0 +1,15 @@
|
||||||
|
use core::{cmp, ptr, str};
|
||||||
|
|
||||||
|
include!(concat!(env!("BUILDINC_DIRECTORY"), "/generated/mem.rs"));
|
||||||
|
include!(concat!(env!("BUILDINC_DIRECTORY"), "/generated/csr.rs"));
|
||||||
|
|
||||||
|
pub fn ident(buf: &mut [u8]) -> &str {
|
||||||
|
unsafe {
|
||||||
|
let len = ptr::read_volatile(csr::IDENTIFIER_MEM_BASE);
|
||||||
|
let len = cmp::min(len as usize, buf.len());
|
||||||
|
for i in 0..len {
|
||||||
|
buf[i] = ptr::read_volatile(csr::IDENTIFIER_MEM_BASE.offset(1 + i as isize)) as u8
|
||||||
|
}
|
||||||
|
str::from_utf8_unchecked(&buf[..len])
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,9 +48,9 @@ impl Log for BufferLogger {
|
||||||
fn log(&self, record: &LogRecord) {
|
fn log(&self, record: &LogRecord) {
|
||||||
if self.enabled(record.metadata()) {
|
if self.enabled(record.metadata()) {
|
||||||
use core::fmt::Write;
|
use core::fmt::Write;
|
||||||
writeln!(self.buffer.borrow_mut(), "{}({}): {}",
|
writeln!(self.buffer.borrow_mut(), "{:>5}({}): {}",
|
||||||
record.level(), record.location().module_path(), record.args()).unwrap();
|
record.level(), record.location().module_path(), record.args()).unwrap();
|
||||||
println!("{}({}): {}",
|
println!("{:>5}({}): {}",
|
||||||
record.level(), record.location().module_path(), record.args());
|
record.level(), record.location().module_path(), record.args());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ extern crate byteorder;
|
||||||
use std::prelude::v1::*;
|
use std::prelude::v1::*;
|
||||||
use buffer_logger::BufferLogger;
|
use buffer_logger::BufferLogger;
|
||||||
|
|
||||||
|
pub mod board;
|
||||||
pub mod io;
|
pub mod io;
|
||||||
pub mod buffer_logger;
|
pub mod buffer_logger;
|
||||||
pub mod session;
|
pub mod session;
|
||||||
|
|
|
@ -68,16 +68,7 @@ fn handle_request(stream: &mut ::io::TcpStream,
|
||||||
|
|
||||||
match try!(read_request(stream)) {
|
match try!(read_request(stream)) {
|
||||||
Request::Ident => {
|
Request::Ident => {
|
||||||
let mut ident: [u8; 256];
|
write_reply(stream, Reply::Ident(::board::ident(&mut [0; 64])))
|
||||||
let ident = unsafe {
|
|
||||||
extern { fn get_ident(ident: *mut u8); }
|
|
||||||
|
|
||||||
ident = ::core::mem::uninitialized();
|
|
||||||
get_ident(ident.as_mut_ptr());
|
|
||||||
&ident[..ident.iter().position(|&c| c == 0).unwrap()]
|
|
||||||
};
|
|
||||||
|
|
||||||
write_reply(stream, Reply::Ident(str::from_utf8(ident).unwrap()))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Request::Log => {
|
Request::Log => {
|
||||||
|
|
Loading…
Reference in New Issue