K_THREAD_DEFINE and K_KERNEL_THREAD_DEFINE have common code
so extract the common code and put them into another macro
Z_THREAD_COMMON_DEFINE().
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
This addition allows to define threads without a privileged stack,
and are to run in kernel mode only.
When CONFIG_USER_SPACE is enabled, a thread ends up allocating
space for both its own thread stack and a privileged stack.
When a thread runs in kernel mode only, this extra space for
the privileged stack is not needed.
The macro K_THREAD_DEFINE(), by default, defines a thread with
privileged stack. A new macro K_KERNEL_THREAD_DEFINE() is added
so that a kernel mode only thread can be defined without
the privileged stack.
DL: Edited commit message, clarification in function comment and
alignment.
Signed-off-by: Jose Alberto Meza <jose.a.meza.arellano@intel.com>
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
The internal comment in K_THREAD_DEFINE() on alignment needed
for x86 is outdated. The alignment is taken care of by
the iterable sections in linker scripts. So remove.
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
Fuel gauge properties used #defines to support Cpp custom downstream
properties. However, discussion in
https://github.com/zephyrproject-rtos/zephyr/pull/56666#discussion_r1189580654
showed that we could still use enums for this use-case if we typedefed a
uint as a fuel gauge property type. Since enums are more maintainable and
easier to extend, we should move from defines to enums.
Change fuel gauge properties from defines to an extendable enum.
Signed-off-by: Aaron Massey <aaronmassey@google.com>
Events in the power-management policy context are defined as any source
that will wake up the system at a known time in the future. By
registering such event, the policy manager will be able to decide wether
certain power states are worth entering or not.
Events will bypass the ticks argument received by the policy manager if
they occur earlier.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Latency is always specified in microseconds, so apend `us` to the
relevant variables. Also, make it clear that latency request structures
are private (they are just exposed publicly to allow static allocation).
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
I realized today that we had a "." and "IDs of message." top level
Doxygen sections. It looks like the multidomain helpers module was
merged without a proper Doxygen structure. This patch adds the helpers to
a subgroup within `log_backend` and uses `@name` to group definitions.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Split the CAP initiator broadcast start API into a create
and a start. This will allow users to create the broadcast source
without starting it immediately, making it possible to get the
BASE etc. without an active advertising set.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Give architectures that need it the ability to perform special checks
while e.g. waiting for a spinlock to become available.
Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
Fix build warning: left shift count >= width of type.
Such as in the case: mpidr & (MPIDR_AFFLVL_MASK << MPIDR_AFF3_SHIFT)
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
This is an alternative API for the L2CAP receive functionality. It
allows an application the receive L2CAP segments directly and manage
credits explictly. The API is guarded by an experimental kconfig option.
Fixes: https://github.com/zephyrproject-rtos/zephyr/issues/57485
Signed-off-by: Aleksander Wasaznik <aleksander.wasaznik@nordicsemi.no>
__atomic_thread_fence() is GCC-ism. When supported by the compiler
(C11), use atomic_thread_fence() instead.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
Some architectures have a special barrier instruction that is used to
ensure that any previously executed context-changing operations, such as
writes to system control registers, have completed by the time the
instruction is done.
In the ARM world this is called ISB. For all the other architectures
falls back to a compiler barrier.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
The compiler is not able to emit a proper DSB operation for ARM64. Move
to the arch-specific implementation and use assembly code instead.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
Some architectures have a kind of fence that is "stronger" than the
regular data memory barrier. Introduce a new API for that.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
Introduce a new API for barrier operations starting with a general
skeleton and the implementation for barrier_data_memory_fence_full().
Select a built-in or an arch-based implementation according to new
Kconfig symbols CONFIG_BARRIER_OPERATIONS_BUILTIN and
CONFIG_BARRIER_OPERATIONS_ARCH.
The built-in implementation falls back on the compiler built-in
function using __ATOMIC_SEQ_CST as it is done for the atomic APIs
already.
Signed-off-by: Carlo Caione <ccaione@baylibre.com>
The IEEE 802.15.4 stack was checked with pahole(1).
Minor changes were introduced to remove unnecessary struct
padding where possible.
Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
Over time, some non-standard concepts and extensions were introduced
into the stack (in KConfig, in drivers, in the internal API and into the
implementation) which makes introduction of additional standard-
compliant extensions like TSCH (and others) unnecessarily difficult.
To introduce extensions like TSCH it is required for the IEEE 802.15.4
stack to become more structurally aligned with the standard again which
will be the focus of some of the upcoming preparatory changes.
One way to check and prove standard compliance is to reference the
standard from within the source code. This change therefore introduces
inline references to the IEEE 802.15.4-2020 standard wherever possible.
Deviations from the standard are documented with TODO or deprecation
labels to be addressed in future changes.
In the future, new code introduced to the IEEE 802.15.4 stack should
be documented and reviewed for standard-compliance to avoid further
divergence. Most importantly:
* MAC/PHY configuration (via net mgmt, radio API, devicetree or
KConfig) should always be directly linked to well-defined MAC/PHY
PIB attributes if visible to the MAC API or the end user.
* Net management/shell/radio API commands should have a documented
reference to the corresponding MLME action from the standard.
Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
Add implementation of the Telephony and Media Audio Service, as well as
two sample applications.
tmap_central reflects a smartphone implementing the Unicast Media Sender
and Call Gateway TMAP roles.
tmap_peripheral reflects an earbud implementing the Unicast Media
Receiver and Call Terminal TMAP roles.
Upon connection, tmap_central starts an audio stream using CAP Initiator
APIs.
CCP, MCP and VCP are discovered and used to send example commands.
Future improvements: 2-earbud support, add TMAP Broadcast roles,
update with new CAP Acceptor/Commander APIs as they become available
Signed-off-by: Silviu Petria <silviu.petria@nxp.com>
Add a new regulator driver for Analog Devices ADP5360. While it is a MFD
device, only support for BUCK/BUCKBOOST regulators is added in this
patch.
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Bluetooth mesh had many groups defined as top level Doxygen groups.
Place all of them to `bt_mesh`. Also removed redundant `@brief` entries,
and placed the block at the right location (just below extern "C"
entry), as well as uniform spelling of "Mesh".
Signed-off-by: Gerard Marull-Paretas <gerard.marull@nordicsemi.no>
Fix compiler warnings in the UART emulator header file. By explicitly
adding the include for the Zephyr device.
Signed-off-by: Oscar Goldring <oscar@goldring.dev>
Add a config to decide if a new dedicated thread for Host Command is
created during initialization.
If not, the ec_host_cmd_task has to be called by another thread to
handle host commands.
Signed-off-by: Dawid Niedzwiecki <dawidn@google.com>
If an operational amplifier is used on the DAC output it is
preferrable to disable the DAC output buffer.
Signed-off-by: Benedikt Schmidt <benedikt.schmidt@embedded-solutions.at>
Initial support for Xtensa MMU version 3. It is using a two level page
table based on fact that the page table is in the virtual space. Only
the top level (page directory) is wired mapped in the TLB to avoid
second level page miss.
The mapped memory is completely fragmented in multiple sections, maybe
we find a better way in future.
The exception handler is where we effectively map the memory, the way it
works is:
1) SW try to access some memory address
2) The address is not mapped, so the MMU will try the auto-refill,
looking the page table
3) The page table contents is not mapped (remember, just the top-level page
is mapped)
4) An exception will be triggered, in the exception we try to read the
portion of the page table that maps the original address
5) The address is not mapped, so the MMU will try again the auto-refill.
This time though, the address is mapped by the top level page that is
properly mapped. (The top-level page maps the page table itself).
Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
The previous counter documentation said:
> Absolute alarm cannot be set further in future than top_value
> decremented by the guard period. Relative alarm ticks cannot
> exceed current top value (see @ref counter_get_top_value).
And further down:
> Absolute value cannot exceed: (now + top_value - guard_period)
> % top_value.
The first documentation snippet is not wrong but may be confusing.
On casual reading one might assume that the absolute tick value
should not be set above top minus guard. Users have to understand
driver internals to follow that explanation.
The second documentation snippet is only correct when counting
downwards (which several drivers don't). When counting upwards,
the given formula is wrong.
This commit improves and corrects the documentation.
Fixes: #57594
Signed-off-by: Florian Grandel <fgrandel@code-for-humans.de>
The minimal value of BT_CODEC_MAX_DATA_LEN is 1, so it
is always > 0.
Includes to audio.h in shell bt.c was removed as audio.h
should only be included if BT_AUDIO=y.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
In certain scenarios, it may be necessary to get values of additional
options from the application layer. With this patch, this can be
accomplished by registering a callback with the DHCP client.
This change has been tested using the posix build in qemu.
Signed-off-by: Matthias Breithaupt <m.breithaupt@vogl-electronic.com>
Add a new endpoint callback that is used to report the found
ASEs during BAP discovery, rather than calling
the discovery callback with optional values.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Add a new pac_record callback that is used to report the found
PAC records during BAP discovery, rather than calling
the discovery callback with optional values.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
Remove the BAP unicast client specific discover parameter struct.
This make the BAP discover work more similar to the other
profiles.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
The direction has been moved to a function parameter instead,
and we keep a local copy of the value in the stack instead.
Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>