Based on the feedback, uses conventional spelling for "thread safe"
and also add notices more consistently.
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
These headers provide an efficient, inline implementations of single-
and double- linked lists, and thus not threadsafe. They are intended
to be used as internal kernel APIs (and currently for example not
documented at https://www.zephyrproject.org/doc/). However, to avoid
issues when doing kernel programming (e.g. #4350), it makes sense
to explicitly, even verbosely, document these functions as not
threadsafe.
Signed-off-by: Paul Sokolovsky <paul.sokolovsky@linaro.org>
We currently support converting from cpu format to BE for
u16_t and u32_t. Let's add u64_t as well.
NOTE: This will be used in LWM2M subsys later.
Signed-off-by: Michael Scott <michael.scott@linaro.org>
The existing __stack decorator is not flexible enough for upcoming
thread stack memory protection scenarios. Wrap the entire thing in
a declaration macro abstraction instead, which can be implemented
on a per-arch or per-SOC basis.
Issue: ZEP-2185
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
The computation of unused stack space is now split off from the function
which sends the result to printk().
The code now assumes that the struct k_thread is stored elsewhere.
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Using MPU enabled HW it was evident that a NULL access
(with offset) was happening in the TCP stack due to the
following message:
***** MPU FAULT *****
Executing thread ID (thread): 0x20009b0c
Faulting instruction address: 0x8034496
Data Access Violation
Address: 0x34
Fatal fault in essential thread! Spinning...
Turns out we are referencing a potentially de-referenced
NULL pointer in the SYS_SLIST_PEEK_NEXT_CONTAINER macro.
Let's avoid this by checking the container node for NULL.
Also fix dlist.h SYS_DLIST_PEEK_NEXT_CONTAINER with the same
issue.
Change-Id: I2e765b9af7bcaf8fb13f7c9b7e081f9e6d4928f2
Signed-off-by: Michael Scott <michael.scott@linaro.org>
Scheduler needs to do time slicing only if there are multiple threads
active with the same priority. This function checks if the list has
more than one node. This would be used to check the list containing
threads with same priority for multiple nodes.
Jira: ZEP-339
Change-Id: I8c7daf77a6540c642ce58a3763b26cd1e06ddc30
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
This is needed by application code that wants to print formatted
strings, but only has a fmt and va_list, and lacks memory to spare for
"buf" and something like:
vsnprintk(buf, sizeof(buf), fmt, ap);
printk("%s", buf);
Change-Id: Ic9cc915ec7e5f8f9492c730667f39788ecae65f6
Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
GCC supports __attribute__((format (printf ...))) even when the
variadic arguments are not present. In this case, the attribute
argument specifying the start of the variadic arguments should be
zero.
Use this in printk.h to add __printf_like where it's missing.
Change-Id: I7868439d5791e391aeb07356af9819524e68c771
Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
Convert code to use u{8,16,32,64}_t and s{8,16,32,64}_t instead of C99
integer types. This handles the remaining includes and kernel, plus
touching up various points that we skipped because of include
dependancies. We also convert the PRI printf formatters in the arch
code over to normal formatters.
Jira: ZEP-2051
Change-Id: Iecbb12601a3ee4ea936fd7ddea37788a645b08b0
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This is a start to move away from the C99 {u}int{8,16,32,64}_t types to
Zephyr defined u{8,16,32,64}_t and s{8,16,32,64}_t. This allows Zephyr
to define the sized types in a consistent manor across all the
architectures we support and not conflict with what various compilers
and libc might do with regards to the C99 types.
We introduce <zephyr/types.h> as part of this and have it include
<stdint.h> for now until we transition all the code away from the C99
types.
We go with u{8,16,32,64}_t and s{8,16,32,64}_t as there are some
existing variables defined u8 & u16 as well as to be consistent with
Zephyr naming conventions.
Jira: ZEP-2051
Change-Id: I451fed0623b029d65866622e478225dfab2c0ca8
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
We need to move using the PRI* defines to use newlib as the default libc
as different arch's define various base types like {u}int32_t
differently. To deal with that in a consistent manor we need access to
the defines in most spots for print{f,k} or logging functions.
Change-Id: Ic1fbef75cbaee211803d9aaf506056e5e31e73f3
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
sys_slist_merge_slist shall reinit the appended list not the original.
Change-Id: Iacd5244d0243b7ebdb110991574e9e1d265ced14
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This enables casting if necessary.
Change-Id: I69d537dd1082e1e5a05aa2cacdd503d3f6c1ab95
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds SYS_SLIST_PEEK_TAIL_CONTAINER macro to access the container
directly.
Change-Id: I740138a47936ebda1e0090628f4933e921f6a43b
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
To be API-equivalent with doubly-linked lists.
Change-Id: I98b781f4c649e248abb04f660f686ad76d6b39de
Signed-off-by: Benjamin Walsh <walsh.benj@gmail.com>
Like SYS_DLIST_FOR_EACH_NODE(), but __dn contains a node where to fetch
the next node from, NULL to start at the head.
Note that the function does not iterate from @a node, but from
node->next. This allows the following:
sys_dnode_t *funcA(sys_dlist_t *list, sys_dnode_t *node)
{
SYS_DLIST_ITERATE_FROM_NODE(list, node) {
if (node == <some condition>) {
return node;
}
}
return NULL;
}
sys_dlist_t list = &<some list>;
sys_dnode_t *node = NULL;
do {
node = funcA(list, node)
if (node == <some other condition>) {
goto found;
}
} while(node);
<handle error>
found:
<do stuff with node>
Change-Id: I17a5787594a0ed1a4745bd2e1557dd54895105ca
Signed-off-by: Benjamin Walsh <walsh.benj@gmail.com>
While iterating on each node element it is much more common to try to
access the container struct which up until now have been done manually
using CONTAINER_OF macro, so this introduce CONTAINER variants that allow
to iterate directly with container pointer rather than the list node.
Change-Id: Ie1e0da948cb9517c3c5cd8e86b59b95d7d027bfa
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
While iterating on each node element it is much more common to try to
access the container struct which up until now have been done manually
using CONTAINER_OF macro, so this introduce CONTAINER variants that allow
to iterate directly with container pointer rather than the list node.
Change-Id: Ia24d9b88d5e2c43ffd476f565faf5bb523a9927b
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Replace the existing Apache 2.0 boilerplate header with an SPDX tag
throughout the zephyr code tree. This patch was generated via a
script run over the master branch.
Also updated doc/porting/application.rst that had a dependency on
line numbers in a literal include.
Manually updated subsys/logging/sys_log.c that had a malformed
header in the original file. Also cleanup several cases that already
had a SPDX tag and we either got a duplicate or missed updating.
Jira: ZEP-1457
Change-Id: I6131a1d4ee0e58f5b938300c2d2fc77d2e69572c
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
This trick was pioneered in Linux as the config_enabled() macro. The
madness has the effect of taking a macro value that may be defined to
"1" (e.g. CONFIG_MYFEATURE), or may not be defined at all and turning
it into a literal expression that can be used at "runtime". That is,
it works similarly to "defined(CONFIG_MYFEATURE)" does except that it
is an expansion that can exist in a standard expression and be seen by
the compiler and optimizer. Thus much #ifdef usage can be replaced
with cleaner expressions like:
if (IS_ENABLED(CONFIG_MYFEATURE))
myfeature_enable();
Change-Id: I40657d2aa3f802429ac33675a1fe245a5da86615
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
This moves the shell component into its own subsys and groups all
related files and options into a single place.
Additionally, one Kconfig option will now be required to enable the
shell:
CONFIG_CONSOLE_SHELL=y
The header files was also moved to include/shell/shell.h and can be now
referenced with
#include <shell/shell.h>
instead of
#include <misc/shell.h>
Updated documentation as well.
Change-Id: Iffbba4acfa05408055e9fd28dffa213451351f94
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
One missing ARG_UNUSED is added by this commit.
Change-Id: I4d9275cd7de4675a960adc67018633dcf8bdc034
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
Like ceil() for real numbers, but for fractions.
Change-Id: I8387732a2b2fd8b5c2bed57a78726eab7cea2c5b
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
This commit adds the ARG_UNUSED macro to some function arguments
to avoid compiler warnings when some sections are compiled out.
Change-Id: Ic003c5a6b2757112cbcf9111fceb14c0f8ea352a
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
Use size_t instead of int to avoid the following compiler warning:
warning: comparison between signed and unsigned integer expressions
Change-Id: I1dcd275e685f5c35793bdbf5ba0acc28ae4b181c
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
Use a short name for this option CONFIG_OBJECT_TRACING.
Change-Id: Id27de7ef9ca299492b6b7d2324d9f5bcf8059a31
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Move logging out of misc/ to its own subsystem. Anything related to
logging and any new logging features or backends could be added here
instead of the generic location in misc/ which is overcrowded with
options that are not related to eachother.
Jira: ZEP-1467
Change-Id: If6a3ea625c3a3562a7a61a0ba5fd7e6ca75518ba
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
The ARG_UNUSED macro is added to avoid compiler warnings.
Change-Id: If14c3928a30c8f3156cdcd0fe11e22407a78c088
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
There are some corner cases where direct access to the formatter
function is needed. Export _vprintk() so code can use it in a similar
way that _prf() can be directly used.
Change-Id: I9dfb68f87f310e900c662dc8beb320bb4ff7d8b2
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Having the logging macros arbitrarily mapping to printk or printf
based on selected Kconfig options that the app isn't necessarily aware
of can have unexpeced (bad) side effects. In particular, printf
consumes *a lot* more stack (closer to 512 bytes) than printk, so
enabling a seemingly innocent CONFIG_STDOUT_CONSOLE option could lead
to stack overflows that are hard to debug.
Jira: ZEP-1419
Change-Id: I5fd77a7ed402e9ca67af23857e0f886f96d243bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
These correspond to the libc snprintf and vsnprintf APIs.
Change-Id: If3944972ed95934a4967756593bb2932c3359b72
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Pass a parsing context around, allowing counting the number of
characters written, which is then returned in the return value of
printk(). This makes printk more similar to printf and prepares the
way to extend the implementation to support printing to strings.
Change-Id: Ib28a18a4f36fc58b98b228fd5763b2c05f5af7bc
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This code is inspired by a similar feature found in ccan[1],
that enforces that the parameter passed to ARRAY_SIZE() is
always an array and not a generic pointer. This is a slightly modified
version that will work if the macro is expanded outside of a function
body.
The check is performed by comparing if typeof(array) and
typeof(&array[0]) are of a different type. Due to the way arrays
decays to pointers in C, if one passes a pointer, the types won't be
compatible and a compile time assertion will fail.
No bugs have been found with this change, but since there's no runtime
or size overheads, there's no reason to not enable it.
[1] https://github.com/rustyrussell/ccan/blob/master/ccan/array_size/\
array_size.h
Change-Id: I6c321714d0024298e593176be43b2d0b5362cc0d
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
This macro does two things: first, it validates that the pointer is not
NULL. Second, it validates if it's between the first and the last
element in the array.
This is useful for cases where a pool of structures are used, such as
in the network subsystem.
Change-Id: I9d815936e31d87a3b3ff80466eea97bc4ad954b5
Signed-off-by: Leandro Pereira <leandro.pereira@intel.com>
By adding external hook to sys_log we will allow applications
the flexibility of using various output mechanism such SPI,
flash, FS etc.
Jira: ZEP-1172
Change-Id: Ie32a5e52c3946ada0349b75a35cc107bb29385a1
Signed-off-by: Yossi Havusha <yossi.havusha@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Rewrites the timestamping logic to always generate timestamps
via a function pointer that is initialized to sys_cycle_get_32(),
but can be changed to point to a user-supplied function. This
eliminates the need for an if/then/else construct in every place
that a timestamp is generated.
Change-Id: Id11f8c41b193a93cece16565978a525056010f0e
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Prepares the kernel event logger APIs for inclusion in the
API guide. Also corrects a couple of other issues:
* Gets rid of obsolete thread monitor code.
* Renames "timer_func" global variable to "_sys_k_timer_func"
to align it with kernel naming conventions.
Change-Id: I93d403f83ae44ff45dda489c2ead7bfec6ce1fa3
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
There was no check to see if the head of a list was empty before trying
to fetch the next node in the list. The fix is added to
sys_dlist_peek_next() so that it also return NULL if the node parameter
is NULL, in addition to being the tail of the list.
Since the value is not used until the second iteration of the loop, and
there will be no second iteration if the list is empty, as long as the
CPU does allow reading at address 0, this was not causing any issues.
Our ARC targets did not seem to like that.
Fixes ZEP-1263 and ZEP-1297.
Change-Id: I07ca16592d206d13662226d1249f487ee78c06aa
Signed-off-by: Benjamin Walsh <walsh.benj@gmail.com>
Most kernel APIs are now ready for inclusion in the API guide.
The APIs largely follow a standard template to provide users
of the API guide with a consistent look-and-feel.
Change-Id: Ib682c31f912e19f5f6d8545d74c5f675b1741058
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
There was a lot of duplication between architectures for the definition
of threads and the "nanokernel" guts. These have been consolidated.
Now, a common file kernel/unified/include/kernel_structs.h holds the
common definitions. Architectures provide two files to complement it:
kernel_arch_data.h and kernel_arch_func.h. The first one contains at
least the struct _thread_arch and struct _kernel_arch data structures,
as well as the struct _callee_saved and struct _caller_saved register
layouts. The second file contains anything that needs what is provided
by the common stuff in kernel_structs.h. Those two files are only meant
to be included in kernel_structs.h in very specific locations.
The thread data structure has been separated into three major parts:
common struct _thread_base and struct k_thread, and arch-specific struct
_thread_arch. The first and third ones are included in the second.
The struct s_NANO data structure has been split into two: common struct
_kernel and arch-specific struct _kernel_arch. The latter is included in
the former.
Offsets files have also changed: nano_offsets.h has been renamed
kernel_offsets.h and is still included by the arch-specific offsets.c.
Also, since the thread and kernel data structures are now made of
sub-structures, offsets have to be added to make up the full offset.
Some of these additions have been consolidated in shorter symbols,
available from kernel/unified/include/offsets_short.h, which includes an
arch-specific offsets_arch_short.h. Most of the code include
offsets_short.h now instead of offsets.h.
Change-Id: I084645cb7e6db8db69aeaaf162963fe157045d5a
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
C++ support moved from nanokernel.h to kernel.h.
Change-Id: I5e1631941e26f4ab3f311b680267b743bab15e40
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Defines an object tracing list for each kernel object type
that supports object tracing, and ensures that both statically
and dynamically defined objects are added to the appropriate list.
Ensure that each static kernel object is grouped together with
the other static objects of the same type. Revise the initialization
function for each kernel type (or create it, if needed) so that
each static object is added to the object tracing list for its
associated type.
Note 1: Threads are handled a bit differently than other kernel
object types. A statically-defined thread is added to the thread
list when the thread is started, not when the kernel initializes.
Also, a thread is removed from the thread list when the thread
terminates or aborts, unlike other types of kernel objects which
are never removed from an object tracing list. (Such support would
require the creation of APIs to "uninitialize" the kernel object.)
Note 2: The list head variables for all kernel object types
are now explicitly defined. However, the list head variable for
the ring buffer type continues to be implicitly defined for the
time being, since it isn't considered to be an core kernel object
type.
Change-Id: Ie24d41023e05b3598dc6b344e6871a9692bba02d
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
Ability to use Zephyr shell by multiple modules simultaneously, each
module for its own usage.
Old shell implementation enabled the user to call only one module
commands, not all of the modules simultaneously.
Change-Id: I0ef8fa2fd190b7490c44fe91d1016363258302c9
Signed-off-by: Yael Avramovich <yael.avramovich@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Ring buffer section now resides under "other" topic, since the
ring buffer type is a general purpose type (like the singly and
doubly linked list types), rather than a kernel-specific type.
Enhances ring buffer section to improve content and improve
consistency with the form used elsewhere in the Kernel Primer.
Also corrects a minor error in the ring buffer API documentation.
Change-Id: Icaa8661524f80e31f173adee859844cadb38967f
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
__ASSERT() would trigger if the two buffers were on a common boundary.
Change-Id: Ie9af12abc407dd43615f543b43397493d981057e
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Two functions are proposed:
- sys_memcpy_swap(): will memcpy and swap the 2 given buffers
- sys_mem_swap(): will swap the buffer in place.
The idea is to propose 2 different functions optimized for 2 different
usage.
Change-Id: I1c23907c1f287b72d9be077ccf3aadbb8d379e71
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
Can speed up some kernel code paths that know a list is not empty.
Change-Id: Ic1261b2e9bf242b7fe49e8a36aeacf9e03f3026b
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
This makes nano_work_submit to allow resubmits when the work is pending
so the user code don't have to check the pending flag to avoid a possible
assert.
Change-Id: I6c9c7a2277aa8e590cedf1d043e55f72f3413451
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds nano_work_pending which can be use to check if a nano_work
is pending execution.
Change-Id: Iae0492a750de93fcd7e89e3a2e74509ffce4983b
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Not implemented yet, prevent access to APIs.
Change-Id: I112c1cdee2ad516a0dcffa3239623c61a089d9bc
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Workqueues will be brought in as a first-class unified kernel object,
not a misc functionality. Do not use the contents of the header file
when building a unified kernel, but kernel.h instead.
Change-Id: I649558fee92b6565ada0eee81bde9f542a468f9f
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Allow appending a list to another list. The list being appended can be
either a slist or the head and tail of a singly-linked list with the
same node format as the slist.
Change-Id: I14410d2b793e1d9f893ff4e7ce097bee4a93a4be
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
More straightforward than doing sys_slist_peek_head() followed by
sys_slist_remove().
Also add a version that does not check if the list is non-empty to be
used when the list is known bo be non-empty.
Change-Id: I8fd10e20e2c84c7d8972c9207f3d4917884808cb
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Used for operating on all elements of a doubly-linked list.
Change-Id: I9eae26ef6d24ce497dbb3acc8a699598d1547bde
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
sys_put_le64 stores a 64-bit unsigned integer into an
arbitrary memory location and is alignment-safe for any
architecture.
Change-Id: Ifd9871a509b9cab05a59d81f4917c68dda3cc824
Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
Use the ATOMIC_DEFINE helper that exists for defining bit fields with
a given name and number of needed bits.
Change-Id: I5262de29f9b2788a16cf61feef676cdc00615f00
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Completing the terminology change started with change 4008
by updating the Kconfig files processed to produce the
online documentation, plus header files processed by
doxygen. References to 'platform' are change to 'board'
Change-Id: Id0ed3dc1439a0ea0a4bd19d4904889cf79bec33e
Jira: ZEP-534
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
It's an important header, used in many place and it's thus very easy to
get different sub-system loading it thus leading to redefinition error.
(net_buf and net drivers for instance).
Change-Id: Icbbbc2fc0abcb007d8950dd06b601717960e7215
Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
These shouldn't be exported in the official doxygen documentation
since they should only be used through the other conversion APIs.
Change-Id: I75880b42892cbfce769192ec2e8c296c954979bd
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
These helpers provide a way to read and write data buffers containing
multi-byte integers with a specific endianness. They are particularly
convenient for network protocol encoding and decoding.
Change-Id: I09ad125a1bbc4510b97a1d75c83cb70d893e22e8
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Add doxygen documentation for existing documentation in byteorder.h.
Change-Id: I0de668e140eeb011807c31d47212f452ccd81627
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
If the reason strings were omitted, the build was only
failing if assertions were turned on, in printk().
Now it fails regardless of whether they are turned on.
Change-Id: I90721a5babb89b20bf8430e122eb03a4ec62c46f
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Use IOAPIC_EDGE instead of IOAPIC_LEVEL to fix missing interrupts.
During tests it was found that using IOAPIC_LEVEL interrupts for UART at
some points are lost.
Proposed by Calando, Antoine <antoine.calando@intel.com>
Change-Id: I18b20217c4d73fdeaa424bf59d00f6be1ec6ef1b
Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Missing from the header, likely due to other arches always calling
this from ASM-land.
Change-Id: Id90e0269a4f9e17b78c48eb7df3b6cde08c53d2a
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Add arithmetic_shift_right function, as the behaviour for shifting right a
negative signed value is implementation-defined (see ISO/IEC 9899 §6.5.7).
Change-Id: I05d930a96e8591dc248295bff853ed9e9cb263a2
Signed-off-by: Bogdan Davidoaia <bogdan.m.davidoaia@intel.com>
Added sphynx comments required to link C code comments to rst
documentation, additionally a new rest page with the list of
current system log Kconfig options and an example.
Change-Id: I9d1370b5f0a2fbd858de83befb99f0f4c7024a13
Signed-off-by: Genaro Saucedo Tejada <genaro.saucedo.tejada@intel.com>
JIRA: ZEP-153
This adds a delayed version of nano_work API which is useful when
handling timeouts since the same stack/workqueue can be shared.
Change-Id: Iac43796fe96deb0a9c8976c91a65104b57779b00
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
By default, kernel event logger is using the system timer. But on
some platforms where the timer driver maintains the system timer
cycle accumulator in software, such as ones using the LOAPIC timer,
the system timer behavior leads to timestamp errors. For example,
the timer interrupt is logged with a wrong timestamp since the HW
timer value has been reset (periodic mode) but accumulated value not
updated yet (done later in the ISR).
This patch is adding the possibility to register a timer callback
function that will be used by the kernel event logger. For example,
on Quark SE, this allows using RTC or AON counter which accuracy is
sufficient and behavior more straight forward compared to system
timer.
Change-Id: I754c7557350ef29fc10701e62a35a5425e035f11
Signed-off-by: Fabrice Olivero <fabrice.olivero@intel.com>
This enable checking for errors and automatically print help string:
btshell> connect
connect <address: XX:XX:XX:XX:XX:XX> <address type: (public)>
Change-Id: Ie097ecddb72ab15bf6192e310d0bd839bfd251d5
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This adds a optional help string to the command table which is printed
when user enters > help <command>.
Change-Id: Id3a8995bb6c4ff6b009418e31968c0677e6e4921
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Add a generic API for drivers to start workqueues and submit work
items. This is needed by drivers which need to schedule code that might
sleep from an ISR to run in fiber context.
Also add the option to start a system-wide workqueue.
Both additions are optional. They can be deactivated for systems that
do not need them.
Change-Id: Ia843568fde5daf6d4279ef7bf241c26c1e3dcfb7
Signed-off-by: Vlad Dogaru <vlad.dogaru@intel.com>
Added CONFIG_KERNEL_EVENT_PROFILER_DYNAMIC flag for enabling that
capability. When set, nothing will be logged by default
Change-Id: I03552483e5a6bfd9e2505eda56908f0d0ae98618
Signed-off-by: Fabrice Olivero <fabrice.olivero@intel.com>
sys_slist_insert can be used to insert a node in the middle of the list
which previously was not possible with sys_slist_append and
sys_slist_prepend.
Change-Id: Ib9e319469cd4911adf7ddf49c54c3f7390c4c953
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
The GDB server implements a set of GDB commands, such as read/write
memory, read/write registers, connect/detach, breakpoints, single-step,
continue. It is not OS-aware, and thus provides a 'system-level'
debugging environment, where the system stops when debugging (such as
handling a breakpoint or single-stepping).
It currently only works over a serial line, taking over the
uart_console. If target code prints over the console, the GDB server
intecepts them and does not send the characters directly over the serial
line, but rather wraps them in a packet handled by the GDB client.
Change-Id: Ic4b82e81b5a575831c01af7b476767234fbf74f7
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Introduce an x86 interrupt stack frame that contains more information
than the non-debug one, namely the caller-saved GPRs, as well as an API
to retrieve it. Able to handle nested interrupts stack frames.
Change-Id: If182aaa2f34e4714b16ca65ff79da63b72d962f7
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
Doxygen complained about "Unsupported xml/html tag <user> found".
Make the correct indentation to signify a code block, since it is
indeed a code block. This gets rid of the warning.
Change-Id: I78ea7709f1d45b2ff48c86153151d4f71a41d1e3
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
Doxygen complained about @defgroup not closing. Fix it by moving
code around, as doxygen was confused by all the #ifdef-#endif.
Change-Id: Iacc2e983cc82b0dfcaaea423ff64bdcc4db8577f
Signed-off-by: Daniel Leung <daniel.leung@intel.com>
The @file tag should follow by a file (or nothing for current file),
instead of file description. Fix it by separating the description.
Change-Id: I1944b164ebe420fbdc03fc65b314ac53493a5d2c
Signed-off-by: Daniel Leung <daniel.leung@intel.com>