From 1e8da91defc2b5b328d733dedffc25893c786c1f Mon Sep 17 00:00:00 2001 From: pennae Date: Tue, 2 May 2023 20:39:19 +0200 Subject: [PATCH] rp/pio: make free_instr unsafe we can't prove that some instruction memory is not used as long as state machines are alive, and we can pass instance memory handles between instances as well. mark free_instr unsafe, with documentation for this caveat. --- embassy-rp/src/pio.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/embassy-rp/src/pio.rs b/embassy-rp/src/pio.rs index 5433d3f2..0616f6fc 100644 --- a/embassy-rp/src/pio.rs +++ b/embassy-rp/src/pio.rs @@ -827,8 +827,10 @@ impl<'d, PIO: PioInstance> PioCommon<'d, PIO> { } } - // TODO make instruction memory that is currently in use unfreeable - pub fn free_instr(&mut self, instrs: PioInstanceMemory) { + /// Free instruction memory previously allocated with [`PioCommon::write_instr`]. + /// This is always possible but unsafe if any state machine is still using this + /// bit of memory. + pub unsafe fn free_instr(&mut self, instrs: PioInstanceMemory) { self.instructions_used &= !instrs.used_mask; }