This bug was spotted by GCC 14.1.0:
In file included from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-internal.h:27,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-arsm.h:33,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-6ln.h:30,
from /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:28:
In function 'bf_isset',
inlined from '_build_ext_opts' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:256:17,
inlined from '_snd_ra' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:368:20,
inlined from '_snd_rtr_advs' at /home/maribu/Repos/software/RIOT/master/sys/net/gnrc/network_layer/ipv6/nib/_nib-router.c:99:9:
/home/maribu/Repos/software/RIOT/master/sys/include/bitfield.h:130:18: error: array subscript 0 is outside array bounds of 'uint8_t[0]' {aka 'unsigned char[]'} [-Werror=array-bounds=]
130 | return (field[idx / 8] & (1u << (7 - (idx % 8))));
| ~~~~~^~~~~~~~~
In function '_snd_rtr_advs':
cc1: note: source object is likely at address zero
cc1: all warnings being treated as errors
The board has history of bugs that (such as broken timer configuration)
that would directly bite any users, but still have gone unnoticed for
significant time periods due to lack of testing. It appears, that none
of the core contributors has access to the boards and the number of
users is limited.
The list of communication tools has been outdated. Rather than keeping
this list up to date, the list was dropped and the wording changed
so that we refer to communication within the community.
- `gpio_ll_toggle()` now is race-free
- avoid using a look up table but branch to the two different registers
in the `gpio_ll*()` functions
- in most cases the GPIO port is a compile time constant and the
dead branch is eliminated by the optimizer, making this vastly
more efficient
- some MCUs do only have a single port, in which case
`GPIO_PORT_NUM(port)` is known to return `0` even if `port` is
not known, resulting in one of the branch being eliminated as
dead branch no matter what
- in case it really is unknown at compile time which port to work
on, the branch can still be implemented efficiently by the
compiler e.g. using a conditional move; likely more efficient
than fetching a value from the look up table.
Pull in lwip_netdev for netdev integration automatically if there is
any netdev to integrate, otherwise don't pull in the module.
As a result, applications no longer need to select that module by hand.
This is directly useful for the two driver using the bhp API, but also
other drivers profit from not loosing IRQs.
The main selling point is that this paves the way for implementing
netdev_driver_t::confirm_send().
Co-authored-by: benpicco <benpicco@googlemail.com>
Co-authored-by: Erik Ekman <eekman@google.com>
In https://github.com/RIOT-OS/RIOT/pull/20511/files a quick fix was
added to allow resizing the sidenav. But this broke hiding the sidenav
on mobile screen widths. This fixes the issue and also increase the
default sidenav width a tad.