mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
46af92d3a0
18620: core: add core_mutex_debug to aid debugging deadlocks r=maribu a=maribu ### Contribution description Adding `USEMODULE += core_mutex_debug` to your `Makefile` results in on log messages such as [mutex] waiting for thread 1 (pc = 0x800024d) being added whenever `mutex_lock()` blocks. This makes tracing down deadlocks easier. ### Testing procedure Run e.g. ```sh USEMODULE=core_mutex_debug BOARD=nucleo-f767zi make -C tests/mutex_cancel flash test ``` which should provide output such as ``` Welcome to pyterm! Type '/exit' to exit. READY s [mutex] waiting for thread 1 (pc = 0x8000f35) START main(): This is RIOT! (Version: 2022.10-devel-841-g5cc02-core/mutex/debug) Test Application for mutex_cancel / mutex_lock_cancelable ========================================================= Test without cancellation: OK Test early cancellation: OK Verify no side effects on subsequent calls: [mutex] waiting for thread 1 (pc = 0x800024d) OK Test late cancellation: [mutex] waiting for thread 1 (pc = 0x0) OK TEST PASSED ``` ```sh $ arm-none-eabi-addr2line -a 0x800024d -e tests/mutex_cancel/bin/nucleo-f767zi/tests_mutex_cancel.elf 0x0800024d /home/maribu/Repos/software/RIOT/tests/mutex_cancel/main.c:51 ``` ### Issues/PRs references Depends on and includes https://github.com/RIOT-OS/RIOT/pull/18619 19296: nanocoap: allow to define CoAP resources as XFA r=maribu a=benpicco 19504: cpu/cc26xx_cc13xx: Fix bogus array-bound warning r=maribu a=maribu ### Contribution description GCC 12 create a bogus array out of bounds warning as it assumes that because there is special handling for `uart == 0` and `uart == 1`, `uart` can indeed be `1`. There is an `assert(uart < UART_NUMOF)` above that would blow up prior to any out of bounds access. In any case, optimizing out the special handling of `uart == 1` for when `UART_NUMOF == 1` likely improves the generated code and fixes the warning. /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:88:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 88 | ctx[uart].rx_cb = rx_cb; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:89:8: error: array subscript 1 is above array bounds of 'uart_isr_ctx_t[1]' [-Werror=array-bounds] 89 | ctx[uart].arg = arg; | ~~~^~~~~~ /home/maribu/Repos/software/RIOT/cc2650/cpu/cc26xx_cc13xx/periph/uart.c:52:23: note: while referencing 'ctx' 52 | static uart_isr_ctx_t ctx[UART_NUMOF]; | ^~~ ### Testing procedure The actual change is a pretty obvious one-liner, so that code review and a green CI should be sufficient. If not, running any UART example app without regression should do. ### Issues/PRs references None 19506: tools/openocd: Fix handling of OPENOCD_CMD_RESET_HALT r=maribu a=maribu ### Contribution description The OPENOCD_CMD_RESET_HALT was not longer correctly passed to the script. This fixes the issue. ### Testing procedure Flashing of e.g. the `cc2650-launchpad` with upstream OpenOCD should work again. ### Issues/PRs references The change was added to https://github.com/RIOT-OS/RIOT/pull/19050 after testing the PR and before merging. I'm not sure if the fix never worked because of this, or if behavior of `target-export-variables` or GNU Make changed. Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de> Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de> Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com> |
||
---|---|---|
.. | ||
bluetil | ||
cord | ||
dhcpv6 | ||
dns | ||
ethernet | ||
fib | ||
gcoap | ||
gnrc | ||
iana | ||
ieee802154 | ||
ipv4 | ||
ipv6 | ||
lorawan | ||
nanocoap | ||
netstats | ||
ppp | ||
rpl | ||
sixlowpan | ||
skald | ||
sock | ||
af.h | ||
arp.h | ||
asymcute.h | ||
ble.h | ||
coap.h | ||
credman.h | ||
csma_sender.h | ||
dhcpv6.h | ||
dns_mock.h | ||
dns.h | ||
dsm.h | ||
dtls.h | ||
eddystone.h | ||
emcute.h | ||
ethernet.h | ||
ethertype.h | ||
eui48.h | ||
eui64.h | ||
eui_provider.h | ||
fib.h | ||
gcoap.h | ||
gnrc.h | ||
icmp.h | ||
icmpv6.h | ||
ieee802154_security.h | ||
ieee802154.h | ||
inet_csum.h | ||
ipv4.h | ||
ipv6.h | ||
l2filter.h | ||
l2util.h | ||
lora.h | ||
loramac.h | ||
mqttsn.h | ||
nanocoap_sock.h | ||
nanocoap_vfs.h | ||
nanocoap.h | ||
ndp.h | ||
netdev_test.h | ||
netif.h | ||
netopt.h | ||
netstats.h | ||
ntp_packet.h | ||
packet.h | ||
ppptype.h | ||
protnum.h | ||
sixlowpan.h | ||
skald.h | ||
sntp.h | ||
sock.h | ||
someip.h | ||
tcp.h | ||
telnet.h | ||
udp.h | ||
uhcp.h | ||
utils.h | ||
zep.h |