Replace direct accesses to sched_active_thread and sched_active_pid with
the helper functions thread_getpid() and thread_get_active(). This serves
two purposes:
1. It makes accidental writes to those variable from outside core less likely.
2. Casting off the volatile qualifier is now well contained to those two
functions
Picolibc makes atexit state per-thread instead of global, so we can't
register destructors with atexit in a non-thread context as we won't
have any TLS space initialized.
Signed-off-by: Keith Packard <keithp@keithp.com>
Support for picolibc as alternative libc implementation is added with
this commit. For now only cortex-m CPU's are supported.
Enable via PICOLIBC=1
---
v2:
squash fixes in
v3:
Remove picolibc integer printf/scanf stuff from sys/Makefile.include,
it gets set in makefiles/libc/picolibc.mk
fixup for dependency
picolibc: Use thread_getpid for getpid() in picolibc_syscalls_default
Instead of directly accessing the sched_active_pid variable (which
isn't defined in this context), use the existing wrapper function
to get that value.
Signed-off-by: Keith Packard <keithp@keithp.com>
---
v2:
Squash a couple of fixes in
* fixup! picolibc: Use thread_getpid for getpid() in
picolibc_syscalls_default
* squashme: Add `times` to picolibc syscalls
* Add __noreturn__ attribute to _exit
* Add VFS syscall wrappers. This provides the POSIX api used
by picolibc stdio
`uncrustify` currently enforces that cases in a switch statement are indented,
but the should be on the same level as the switch statement according to the
coding convention. This commit fixes this.
Do not generate address during reset, but during setup. Otherwise the device
will get a new address after every reset. Also: Use common IEEE 802.15.4
setup function for this.
The assert is reversed. It must check if the config value does not
exceed the maximum address length, not the other way round.
previously this would lead to a crash when setting a short address:
2020-08-23 13:59:56,080 # ifconfig 7 set addr_short 2
2020-08-23 13:59:56,081 # 0xdcad
2020-08-23 13:59:56,083 # *** RIOT kernel panic:
2020-08-23 13:59:56,085 # FAILED ASSERTION.
With this it works as expected
2020-08-23 14:05:07,988 # ifconfig 7 set addr_short 2
2020-08-23 14:05:07,992 # success: set (short) address on interface 7 to 2
Previously trying `make debug` on these boards would result in
Error: Unable to locate OpenOCD configuration file
(/home/benpicco/dev/RIOT/boards/saml10-xpro/dist/openocd.cfg)
Add a common `openocd.cfg` to fix this.
The MPU on the cortex-m23 has some differences with the MPU on the older
cortex-m devices. It is not implemented in the cortex-m MPU driver. This
removes the available feature as it gives a false sense of security by
advertising the feature, but implementing it with noop's