1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

988 Commits

Author SHA1 Message Date
Benjamin Valentin
b88c9c5f1f debug: add DEBUG_BREAKPOINT() macro 2023-04-27 13:19:17 +02:00
Keith Packard
0ceb0804b0 core/thread: Fix up stack and TLS alignments
Make sure both the stack and TLS blocks are correctly aligned by
adjusting the TLS base address to the most strict alignment of the TLS
block and the stack.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-03-04 01:18:36 -08:00
Teufelchen1
a8c9af901c core/xfa: disable asan on llvm 2023-02-15 17:41:35 +01:00
Benjamin Valentin
ea799e738d core/init: allow to run callback on main exit 2023-01-20 17:41:30 +01:00
bors[bot]
d11a358b1d
Merge #18472 #19175
18472: drivers/mrf24j40: add support for IEEE 802.15.4 Radio HAL r=benpicco a=jia200x



19175: drivers/periph_common/flashpage: fix silent error r=benpicco a=Enoch247

### Contribution description

This patch removes a test that silently hides failed writes to NULL. Instead, assert is used to ensure that the address is not NULL.


### Testing procedure

I am not certain how to update the tests to catch asserts. If this is possible, I will add a test, if someone will point me to a good example to learn from.


### Issues/PRs references

- none


Co-authored-by: Jose Alamos <jose@alamos.cc>
Co-authored-by: Joshua DeWeese <jdeweese@primecontrols.com>
2023-01-19 18:17:13 +00:00
bors[bot]
71f783f1c8
Merge #19156 #19174
19156: core/compiler_hints: add likely() / unlikely() hints r=kfessel a=benpicco



19174: tests/periph_spi clearly say when init succeeds r=benpicco a=jdavid

When the `tests/periph_spi` program succeeds the output can be interpreted as an error happened.
This PR makes it clearer when it does succeed.

### Contribution description

In `tests/periph_spi`:

- Explicitely say that the init operation was successful
- Rephrase the note to avoid misinterpretations 


### Testing procedure

Run the `tests/periph_spi` program.
There is not much to test, just to verify the output, should be like this:

```
2023-01-19 10:42:33,768 # Trying to initialize SPI_DEV(1): mode: 0, clk: 0, cs_port: 0, cs_pin: 0
2023-01-19 10:42:33,777 # (if below the program crashes with a failed assertion, then it means the configuration is not supported)
2023-01-19 10:42:33,779 # Success.
```


### Issues/PRs references

Issue https://github.com/RIOT-OS/RIOT/issues/19025

Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: J. David Ibáñez <jdavid.ibp@gmail.com>
2023-01-19 15:38:47 +00:00
Jose Alamos
1f30cbc0c5
core/bitarithm: guard BIT1x definition 2023-01-19 15:34:17 +01:00
bors[bot]
d4d91492cd
Merge #18100 #19121 #19164 #19169
18100: core/assert: print backtrace on failed assertion r=kaspar030 a=benpicco



19121: socket_zep: only report size of single datagram r=kaspar030 a=benpicco



19164: cpu/sam0_common: move adc_res_t to common code r=dylad a=benpicco



19169: tests/driver_ws281x: don't overwrite board definition r=benpicco a=benpicco





Co-authored-by: Benjamin Valentin <benjamin.valentin@ml-pa.com>
Co-authored-by: Benjamin Valentin <benjamin.valentin@bht-berlin.de>
2023-01-18 23:59:58 +00:00
Benjamin Valentin
6b34691abe core/assert: print backtrace on failed assertion 2023-01-18 01:57:11 +01:00
Benjamin Valentin
2f1d4f5a49 core/assert: mark assert() condition as likely true 2023-01-18 01:17:31 +01:00
Benjamin Valentin
75f666f6b3 core/compiler_hints: add likely() / unlikely() hints 2023-01-18 01:17:31 +01:00
Benjamin Valentin
59f067171f core/init: call vfs_bind_stdio() in early_init() 2023-01-08 22:26:13 +01:00
Benjamin Valentin
092b235845 core/init: add early_init()
Add a function to initialize LEDs and UART in early boot.
2023-01-08 22:25:10 +01:00
Marian Buschsieweke
86fdbd7054
core/lib: Add macros/utils.h header
The macros CONCAT(), MIN(), and MAX() are defined over and over again in
RIOT's code base. This de-duplicates the code by moving the macros to a
common place.
2023-01-07 09:47:44 +01:00
benpicco
1a73fb0593
Merge pull request #18795 from benpicco/irq-track
debug_irq_disable: add module to debug time spent in irq_disable
2022-11-25 19:10:10 +01:00
Benjamin Valentin
59a3e613fe cpu/cortexm_common: measure time spent with IRQ disabled 2022-11-24 21:27:20 +01:00
ad5f02d119
Merge pull request #18955 from maribu/core/mbox/fix-race
core/mbox: fix race condition
2022-11-23 13:09:13 +01:00
Marian Buschsieweke
42b9334784
core/mbox: fix race condition
The mbox code contains a race condition in `mbox_put()`: When it
waits for a slot in the queue to become available, it is woken up with
IRQs enabled. It disables IRQs again as first thing, but by then
another thread may already have preempted the running thread and filled
the queue back up. In this case, a message in the queue would be
silently overwritten.
2022-11-22 22:35:13 +01:00
benpicco
0621150bf0
Merge pull request #18884 from kfessel/p-macro-maybe-unused
core/lib: define MAYBE_UNUSED
2022-11-22 12:54:36 +01:00
Benjamin Valentin
37116d359e core: replace RIOT_FILE_RELATIVE with __FILE__ 2022-11-19 01:48:42 +01:00
Karl Fessel
b4feefa334 core/lib: define MAYBE_UNUSED 2022-11-17 12:26:35 +01:00
Karl Fessel
fe325ecdd2 core/lib: compiler_hints guard NORETURN and PURE 2022-11-17 12:26:35 +01:00
Karl Fessel
045bd7a1a2 core/lib: split kernel defines by its concerns 2022-11-11 13:41:33 +01:00
Karl Fessel
aa31dd7d66 core/macros: rewrite DIV_ROUND, DIV_ROUND_UP; add DIV_ROUND_INF 2022-11-09 17:59:18 +01:00
Benjamin Valentin
8f8bb6ce84 tests/unittests: core: add test for SIGNOF(size_t) 2022-11-09 14:23:51 +01:00
Benjamin Valentin
1eb02f7fda core/macros: fix SIGNOF() macro with size_t 2022-11-04 23:53:15 +01:00
Gunar Schorcht
de632b4df8 core/lib/xfa: fix parameter documentation 2022-11-03 10:25:37 +01:00
Marian Buschsieweke
2d2bb4b308
core/mutex: clean up
This restores a pre-existing design decision to implement both
blocking and non-blocking mutex locking with the same code. Those
implementations have been split prior to the introduction of
the `core_mutex_priority_inheritance` module when `mutex_trylock()`
indeed was trivial. This decision didn't age well, so undo it.
2022-09-29 13:12:33 +02:00
benpicco
4737d8148a
Merge pull request #17702 from benpicco/core/macros/math
core/macros: add math helper macros
2022-09-22 14:14:24 +02:00
Benjamin Valentin
c53051f72f core/macros: add math helper macros 2022-09-21 16:00:26 +02:00
Sören Tempel
80116651c2 core: Treat stack overflows as an unrecoverable error
Presently, RIOT just emits a warning when a stack overflow is
encountered but still resumes execution. In my view, execution should be
aborted as the detection of a stack overflows via the heuristic provided
by the scheduler is an unrecoverable error.

I ran into this while performing automated tests of a RIOT application
where a stack overflow occurred but I only noticed this after inspecting
the application output more closely.

Similar to SSP failures, I added crash_code for stack overflows.
2022-08-12 05:26:22 +02:00
c2a1afa12a
Merge pull request #18606 from jan-mo/fix/20220916__core_msg_queue_print_restore_irq
core/msg.c: irq was not restored properly
2022-09-17 03:45:39 +02:00
Jan Mohr
e0febd08e8 core/msg.c: irq was not restored properly 2022-09-16 15:56:17 +02:00
Gregory Holder
4d4c595185
core/mutex: fix typo in docs 2022-09-16 14:52:13 +02:00
Marian Buschsieweke
6790167a18
Merge pull request #18226 from benpicco/cpu_get_last_instruction
cpu: cpu_print_last_instruction() -> cpu_get_caller_pc()
2022-09-15 20:06:10 +02:00
Benjamin Valentin
7abaae7bbd treewide: fix typos 2022-09-15 12:12:23 +02:00
Benjamin Valentin
ea917f4b07 cpu: cpu_print_last_instruction() -> cpu_get_caller_pc() 2022-09-15 10:49:56 +02:00
Marian Buschsieweke
c07181c1c4
core/mutex: fix priority inheritance on AVR
This fixes https://github.com/RIOT-OS/RIOT/issues/18545 as the code
previously relied on `sched_change_priority()` not directly scheduling
a new thread while IRQs are disabled, but rather later when IRQs are
restored. This is true for Cortex-M MCUs (where the PendSV IRQ is used
to trigger the scheduler), but not e.g. for AVR.
2022-09-12 21:40:54 +02:00
Marian Buschsieweke
d53cd19142
core/sched.c: fix undefined behavior on 8-bit/16-bit
An `1 << x` with `x >= 15` is undefined behavior on 8-bit / 16-bit
machines (which typically have `sizeof(int) == 2`).

Using `1UL << x` is safe for `x <= 31`, which is large enough to make
use of the full 32 bits in `runqueue_bitcache`.

In addition, a `static_assert()` is added to enforce that
`SCHED_PRIO_LEVELS` is never set to anything larger than 32.
2022-09-09 21:55:17 +02:00
Marian Buschsieweke
8be03dc055
core: implement core_mutex_mitigate_priority_inversion 2022-08-05 13:08:52 +02:00
Benjamin Valentin
2e7d35f760 core/kernel_defines: drop CONST definition
This is not used anywhere in RIOT, but causes conflicts with external
library code.

So let's just get rid of this.
2022-06-16 15:26:27 +02:00
Benjamin Valentin
605f77f766 core/assert: print last instruction in assert() 2022-06-12 14:18:53 +02:00
chrysn
bdbde49753 bitarithm: Move extern const out of static inline functions
Workaround-For: https://github.com/immunant/c2rust/issues/423
2022-05-29 13:59:39 +02:00
ebdcccbd99
Merge pull request #16899 from kaspar030/queue_msg_thread_flags_yield_v2
core/msg: yield after thread_flags_wake() in queue_msg()
2022-05-06 19:04:19 +02:00
benpicco
b1715feb03
Merge pull request #17959 from benpicco/core-dummy
core: provide dummy implementation of thread and mutex for riotboot
2022-05-04 14:46:50 +02:00
Benjamin Valentin
8100203e95 core/thread, mutex: provide dummy implementation for riotboot
This is intended for the bootloader module where we don't enter thread
mode, so mutex must never attempt to switch context.

Instead use a simple busy wait that is enough to make the possible mutex
users (e.g. interrupt based SPI) in bootloader mode work.
2022-05-02 13:18:39 +02:00
Marian Buschsieweke
a405599986
core/xfa: Silence clangd warning
Use `uintptr_t` for arithmetic rather than `const char *` to fix the
following warning:

> comparePointers: Subtracting pointers that point to different objects
2022-04-26 22:15:00 +02:00
0c87335a45 core/msg: yield after thread_flags_wake() in queue_msg() 2022-04-21 17:28:41 +02:00
2ba85c1bc8 core: add support for test_utils_print_stack_usage
- activate THREAD_CREATE_STACKTEST also if test_utils_print_stack_usage
  is used

- make thread_measure_stack_free() available unconditionally

- if DEVELHELP is active, call test_utils_print_stack_usage() on any
  thread exit

- if DEVELHELP is active, call test_utils_print_stack_usage() after main
  for the idle thread, if that is used
2022-03-29 21:49:35 +02:00
Leandro Lanzieri
a7cc59d9f0
core/Kconfig: move MODULE_CORE_LIB symbol to fix menuconfig display 2022-03-18 08:23:46 +01:00