Compare commits

..

1 Commits

Author SHA1 Message Date
mwojcik 60a34468eb satman: support sub-subkernels, routing 2023-12-12 17:43:08 +08:00
2 changed files with 6 additions and 5 deletions

View File

@ -580,9 +580,10 @@ fn process_aux_packet(
} => {
forward!(_routing_table, _destination, *rank, _repeaters, &packet, timer);
// received if local subkernel started another, remote subkernel
kernel_manager.subkernel_load_run_reply(succeeded);
kernel_manager.subkernel_load_run_reply(succeeded, *self_destination);
Ok(())
}
// { destination: u8, id: u32, with_exception: bool, exception_src: u8 },
drtioaux::Packet::SubkernelFinished {
destination: _destination,
id,

View File

@ -85,6 +85,7 @@ struct Message {
#[derive(PartialEq)]
enum OutMessageState {
NoMessage,
MessageReady,
MessageBeingSent,
MessageSent,
MessageAcknowledged,
@ -552,9 +553,8 @@ impl<'a> Manager<'_> {
}
}
pub fn subkernel_load_run_reply(&mut self, succeeded: bool) {
pub fn subkernel_load_run_reply(&mut self, succeeded: bool, self_destination: u8) {
if self.session.kernel_state == KernelState::SubkernelAwaitLoad {
self.control.tx.send(kernel::Message::SubkernelLoadRunReply { succeeded: succeeded });
self.session.kernel_state = KernelState::Running;
} else {
warn!("received unsolicited SubkernelLoadRunReply");
@ -606,13 +606,13 @@ impl<'a> Manager<'_> {
self.control.tx.send(kernel::Message::CacheGetReply(value));
}
kernel::Message::SubkernelMsgSend {
id: _id,
id,
destination: msg_dest,
data,
} => {
let msg_dest = msg_dest.or(Some(self.session.source)).unwrap();
self.session.messages.accept_outgoing(
self.session.id,
id,
self_destination,
msg_dest,
data,