Support CoreMgmt over DRTIO on Zynq Devices #323

Merged
sb10q merged 27 commits from occheung/artiq-zynq:drtio-coremgmt into master 2024-11-19 18:55:03 +08:00
Showing only changes of commit c5b00d8e4e - Show all commits

View File

@ -792,43 +792,18 @@ async fn handle_connection(
match msg {
Request::GetLog => process!(stream, _drtio_tuple, _destination, get_log),
Request::ClearLog => process!(stream, _drtio_tuple, _destination, clear_log),
Request::PullLog => process!(
stream,
_drtio_tuple,
_destination,
pull_log,
&pull_id
),
Request::PullLog => process!(stream, _drtio_tuple, _destination, pull_log, &pull_id),
Request::SetLogFilter => {
let lvl = read_log_level_filter(stream).await?;
process!(
stream,
_drtio_tuple,
_destination,
set_log_filter,
lvl
)
process!(stream, _drtio_tuple, _destination, set_log_filter, lvl)
}
Request::SetUartLogFilter => {
let lvl = read_log_level_filter(stream).await?;
process!(
stream,
_drtio_tuple,
_destination,
set_uart_log_filter,
lvl
)
process!(stream, _drtio_tuple, _destination, set_uart_log_filter, lvl)
}
Request::ConfigRead => {
let key = read_key(stream).await?;
process!(
stream,
_drtio_tuple,
_destination,
config_read,
&cfg,
&key
)
process!(stream, _drtio_tuple, _destination, config_read, &cfg, &key)
}
Request::ConfigWrite => {
let key = read_key(stream).await?;
@ -839,28 +814,11 @@ async fn handle_connection(
buffer.set_len(len);
}
read_chunk(stream, &mut buffer).await?;
process!(
stream,
_drtio_tuple,
_destination,
config_write,
&cfg,
&key,
buffer,
restart_idle
)
process!(stream, _drtio_tuple, _destination, config_write, &cfg, &key, buffer, restart_idle)
}
Request::ConfigRemove => {
let key = read_key(stream).await?;
process!(
stream,
_drtio_tuple,
_destination,
config_remove,
&cfg,
&key,
restart_idle
)
process!(stream, _drtio_tuple, _destination, config_remove, &cfg, &key, restart_idle)
}
Request::Reboot => {
process!(stream, _drtio_tuple, _destination, reboot)
@ -869,12 +827,7 @@ async fn handle_connection(
process!(stream, _drtio_tuple, _destination, config_erase)
}
Request::DebugAllocator => {
process!(
stream,
_drtio_tuple,
_destination,
debug_allocator
)
process!(stream, _drtio_tuple, _destination, debug_allocator)
}
}?;
}
@ -883,15 +836,10 @@ async fn handle_connection(
pub fn start(
cfg: Rc<Config>,
restart_idle: Rc<Semaphore>,
drtio_tuple: Option<(
&Rc<Mutex<bool>>,
&Rc<RefCell<drtio_routing::RoutingTable>>,
GlobalTimer,
)>,
drtio_tuple: Option<(&Rc<Mutex<bool>>, &Rc<RefCell<drtio_routing::RoutingTable>>, GlobalTimer)>,
) {
Outdated
Review

Isn't that just an idiosyncratic object? Canonical way would be to define a struct.

Isn't that just an idiosyncratic object? Canonical way would be to define a ``struct``.
let drtio_tuple = drtio_tuple.map(
|(aux_mutex, routing_table, timer)| (aux_mutex.clone(), routing_table.clone(), timer)
);
let drtio_tuple =
drtio_tuple.map(|(aux_mutex, routing_table, timer)| (aux_mutex.clone(), routing_table.clone(), timer));
task::spawn(async move {
let pull_id = Rc::new(RefCell::new(0u32));
loop {
@ -903,12 +851,12 @@ pub fn start(
info!("received connection");
// Avoid consuming the tuple
// Keep the borrowed value on stack
let drtio_tuple = drtio_tuple.as_ref().map(
|(aux_mutex, routing_table, timer)| (aux_mutex, routing_table.borrow(), *timer)
);
let drtio_tuple = drtio_tuple.as_ref().map(
|(aux_mutex, routing_table, timer)| (*aux_mutex, routing_table.deref(), *timer)
);
let drtio_tuple = drtio_tuple
.as_ref()
.map(|(aux_mutex, routing_table, timer)| (aux_mutex, routing_table.borrow(), *timer));
let drtio_tuple = drtio_tuple
.as_ref()
.map(|(aux_mutex, routing_table, timer)| (*aux_mutex, routing_table.deref(), *timer));
let _ = handle_connection(&mut stream, pull_id, cfg, restart_idle, drtio_tuple)
.await
.map_err(|e| warn!("connection terminated: {:?}", e));