From 1d6d8d76ec65373ffee70add75d183f5c4168f61 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 27 Feb 2010 15:11:44 -0800 Subject: [PATCH 1/1] Eliminate deadlock when writing config from radio link Writing the 'Saved\r\n' string would fill the packet buffer and cause a flush to occur, which would need to wait for the radio link to receive and transmit a packet. The radio link always re-fetches the radio channel number when lighting up the radio, so it need to look in the config space. If the config mutex was held by the config writing process while the radio was trying to get the channel number, then we'd get a deadlock. Signed-off-by: Keith Packard --- src/ao_config.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/ao_config.c b/src/ao_config.c index f8ea27fe..8df994a6 100644 --- a/src/ao_config.c +++ b/src/ao_config.c @@ -377,13 +377,18 @@ ao_config_show(void) __reentrant void ao_config_write(void) __reentrant { + uint8_t saved = 0; ao_mutex_get(&ao_config_mutex); if (ao_config_dirty) { _ao_config_put(); ao_config_dirty = 0; - printf("Saved\n"); + saved = 1; } ao_mutex_put(&ao_config_mutex); + if (saved) + puts("Saved"); + else + puts("Nothing to save"); } #endif -- 2.30.2