Bug fix send and recive in simulator
This commit is contained in:
@@ -107,12 +107,17 @@ pub fn handle_send_recv(
|
|||||||
let receiver: usize = imm_core.try_into().expect("imm_core can not be negative");
|
let receiver: usize = imm_core.try_into().expect("imm_core can not be negative");
|
||||||
assert_ne!(receiver, 0, "Host can not use receive");
|
assert_ne!(receiver, 0, "Host can not use receive");
|
||||||
send_recv.sending[sender] = Some(SendRecvInfo::new(sender, receiver, address, imm_len));
|
send_recv.sending[sender] = Some(SendRecvInfo::new(sender, receiver, address, imm_len));
|
||||||
transfer_memory(
|
let transfered = transfer_memory(
|
||||||
cpu,
|
cpu,
|
||||||
core_instructions,
|
core_instructions,
|
||||||
send_recv.sending[sender],
|
send_recv.sending[sender],
|
||||||
send_recv.receiving[receiver],
|
send_recv.receiving[receiver],
|
||||||
)
|
);
|
||||||
|
if transfered {
|
||||||
|
send_recv.sending[sender] = None;
|
||||||
|
send_recv.receiving[receiver] = None;
|
||||||
|
}
|
||||||
|
return transfered;
|
||||||
}
|
}
|
||||||
InstructionStatus::Reciving(instruction_data) => {
|
InstructionStatus::Reciving(instruction_data) => {
|
||||||
let (core_idx, imm_core) = instruction_data.get_core_immcore();
|
let (core_idx, imm_core) = instruction_data.get_core_immcore();
|
||||||
@@ -131,12 +136,17 @@ pub fn handle_send_recv(
|
|||||||
assert_ne!(sender, 0, "Host can not use send");
|
assert_ne!(sender, 0, "Host can not use send");
|
||||||
send_recv.receiving[receiver] =
|
send_recv.receiving[receiver] =
|
||||||
Some(SendRecvInfo::new(receiver, sender, address, imm_len));
|
Some(SendRecvInfo::new(receiver, sender, address, imm_len));
|
||||||
transfer_memory(
|
let transfered = transfer_memory(
|
||||||
cpu,
|
cpu,
|
||||||
core_instructions,
|
core_instructions,
|
||||||
send_recv.sending[sender],
|
send_recv.sending[sender],
|
||||||
send_recv.receiving[receiver],
|
send_recv.receiving[receiver],
|
||||||
)
|
);
|
||||||
|
if transfered {
|
||||||
|
send_recv.sending[sender] = None;
|
||||||
|
send_recv.receiving[receiver] = None;
|
||||||
|
}
|
||||||
|
return transfered;
|
||||||
}
|
}
|
||||||
_ => false,
|
_ => false,
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user