Replaced the term "platform" with "board" or "SoC" depending
on context as per, ZEP-534.
Change-Id: I14c13d4eed429fe6e41e2221d6ff6afe97e942eb
Signed-off-by: Evan Couzens <evanx.couzens@intel.com>
Per:
commit a83f895
Author: Andrew Boie <andrew.p.boie@intel.com>
Commit: Benjamin Walsh <benjamin.walsh@windriver.com>
microkernel: deprecate task IRQs
This mechanism does not add enough value to the kernel to be worth
maintaining it. Drivers that need deferred processing of interrupts
can simply define their own task and have the interrupt handler
release an event that the task waits on.
The API is marked as deprecated and it is removed from unit test
coverage as well as the documentation.
Change-Id: Ib87b91cb41e9b6d7fdf0dc62b240a531b6a8889f
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Change-Id: I0d891772b1fb4246ec9ee9f4764b2121333ae972
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Original link "fiber services" does not exist, so renamed to the one
at the head of "nanokernel_fibers.rst".
Change-Id: I39c89e5dbe9b8d0462eb2aa8d84db65b22625fdc
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Must use :c:type instead of :cpp:type.
Change-Id: I600c7a018e1b1492e967b05f44fec14afd87eccc
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Move to use :option:`CONFIG_XYZ` vs :option:`XYZ` to generate propert
links and avoid warnings about unexistant targets.
Change-Id: I4b46041f25e538462b123ccc8337f733033cc0e7
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Config options KERNEL_EVENT_{INTERRUPT, CONTEXT, SLEEP} don't exist
any more, removed.
Move to use :option:`CONFIG_XYZ` vs :option:`XYZ` to generate propert
links and avoid warnings about unexistant targets.
Change-Id: Ibafa155f474a05329a8cac7bff5c55800d9f31a4
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
Add a blank line in most places is the fix needed, to have the
formatting engine recognize it properly.
Change-Id: Iccaa0e51146b1e2c138e89ab1dd0067fc1409e4d
Signed-off-by: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
The "IDT Security" section was removed since the IDT is now always
in a read-only region; dynamic IRQs have been deprecated and will
be removed from the kernel.
Change-Id: Idbb7ff987bbb4f777b524d87690485d34f372d43
Signed-off-by: Andrew Boie <andrew.p.boie@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>
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>
OS tick period (usually 10 ms) is not sufficiently precise for task
execution analysis (like processing CPU load per context)
With that modification, the timestamp used by the kernel event logger
is 32-bit LSB of platform HW timer (for example Lakemont APIC timer
for Quark SE).
This timer period is very small and leads to timestamp wraparound
happening quite often (e.g. every 134s for Quark SE).
This wraparound must be considered when analyzing kernel event logger
data and care must be taken when tickless idle is enabled and sleep
duration can exceed maximum HW timer value.
Change-Id: Idc545da8f828a7357a69d83ff25c9afd09dab3c4
Signed-off-by: Fabrice Olivero <fabrice.olivero@intel.com>
We have not found any use-cases for dynamic IRQs where a static
IRQ did not also suffice. Deprecate so that we can eventually
remove from Zephyr and nontrivially decrease the complexity of
the kernel.
Change-Id: I509655371773aeaca7d01134dd850eb4cd95f387
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Fix for imperative API descriptions, note needs work (see comment).
Change-Id: I300ff03ee5c6b6cb50cf2b1614f22940a0b10213
Signed-off-by: L.S. Cook <leonax.cook@intel.com>
Minor edits to clarify wording, readability of rendered documentation
Change-Id: I4144cfb8e191234d5fb3b6aa0fc3324b85cd286a
Signed-off-by: L.S. Cook <leonax.cook@intel.com>
To enhance readability, add bold, lists in sentence form (as per
the style guide) and other parallel content from microkernels section.
Change-Id: Ida989ec7187bf7a035803644b5cc710571b66e3e
Signed-off-by: L.S. Cook <leonax.cook@intel.com>
Corrected an "is is" and other minor punctuation + grammatical edits.
Change-Id: I26f51809215a8ac77a20bc9d424e6a806e29ee50
Signed-off-by: L.S. Cook <leonax.cook@intel.com>
The path to the sample applications is a mis-match of previous and the
current values. Correcting it to represent the new value.
Change-Id: I54ffe823335b95f1076b1346d149b359b4f2e7bd
Signed-off-by: Dan Kalowsky <daniel.kalowsky@intel.com>
This file was updated and included in the nanokernel
primer information. It showcases the simple use of
nanokernel semaphores, timers and fibers.
Change-Id: Iaaa961eccf4f0df5d4c009d053b9d28e96c8d87d
Signed-off-by: Rodrigo Caballero <rodrigo.caballero.abraham@intel.com>
It's not a function and requires all its arguments to be build-time
constants. Make this more obvious to the end user to ease confusion.
Change-Id: I64107cf4d9db9f0e853026ce78e477060570fe6f
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Rename them to DEVICE_NAME_GET and DEVICE_GET to fit in the 'device'
namespace.
Change-Id: I407a7f284ed4d1c071961b46615eea859c2e825f
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
We can save a great deal of RAM this way, it only needs to be
in RAM if dynamic interrupts are in use.
At some point this config option broke, probably when static
interrupts were introduced into the system.
To induce build (instead of runtime) errors when irq_connect_dynamic()
is used without putting the table in RAM, the dynamic interrupt
functions are now conditionally compiled.
Change-Id: I4860508746fd375d189390163876c59b6c544c9a
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This option misunderstands how XIP works. The IDT is ALWAYS in ROM,
the question is whether crt0 will copy it into RAM or not. You can't
save ROM space in this way.
Change-Id: I58025e3d71ead35730d0a5026213299b4fcb5eb9
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
The interrupt API has been redesigned:
- irq_connect() for dynamic interrupts renamed to irq_connect_dynamic().
It will be used in situations where the new static irq_connect()
won't work, i.e. the value of arguments can't be computed at build time
- a new API for static interrupts replaces irq_connect(). it is used
exactly the same way as its dynamic counterpart. The old static irq
macros will be removed
- Separate stub assembly files are no longer needed as the stubs are now
generated inline with irq_connect()
ReST documentation updated for the changed API. Some detail about the
IDT in ROM added, and an oblique reference to the internal-only
_irq_handler_set() API removed; we don't talk about internal APIs in
the official documentation.
Change-Id: I280519993da0e0fe671eb537a876f67de33d3cd4
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Simplifies the nanokernel timer API so that the timeout parameter must be
specified when invoking nano_isr_timer_test(), nano_fiber_timer_test(),
nano_task_timer_test() and nano_timer_test().
This obsoletes the following APIs:
nano_fiber_timer_wait()
nano_task_timer_wait()
nano_timer_wait()
Note that even the though the new API requires that the timeout parameter
be specified, there are currentl only two acceptable values:
TICKS_NONE and TICKS_UNLIMITED
Theoretically, the current implementation would allow one to supply a
finite positive value for the timeout and the system would wait up to
that many ticks for the timer to expire. However, it is thought that
that unnecessarily complicates the nanokernel timer model and so it is
left as an unsupported option. Should that change, then that feature
could be enabled by updating the documentation.
Change-Id: I8835c5342ab5025d6f70fdfbed54a50add7568d7
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Changes the nanokernel stack API so that the timeout parameter must be
specified when invoking nano_isr_stack_pop(), nano_fiber_stack_pop(),
nano_task_stack_pop() and nano_stack_pop().
This obsoletes the following APIs:
nano_fiber_stack_pop_wait()
nano_task_stack_pop_wait()
nano_stack_pop_wait()
Note that even though the new API requires that the timeout parameter
be specified, there are currently only two acceptable values:
TICKS_NONE and TICKS_UNLIMITED
This nanokernel option does not support CONFIG_NANO_TIMEOUTS.
Change-Id: Ic7f16ee30c3534115ceffa19ef8591ecc5a79080
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Changes the nanokernel LIFO API so that the timeout parameter must be
specified when invoking nano_isr_lifo_get(), nano_fiber_lifo_get(),
nano_task_lifo_get() and nano_lifo_get().
This obsoletes the following APIs:
nano_fiber_lifo_get_wait()
nano_fiber_lifo_get_wait_timeout()
nano_task_lifo_get_wait()
nano_task_lifo_get_wait_timeout()
nano_lifo_get_wait()
nano_lifo_get_wait_timeout()
Change-Id: Ie9f93e46da42ea33c32544c02ab1d70b893cc198
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Changes the nanokernel semaphore API so that the timeout parameter must be
specified when invoking nano_isr_sem_take(), nano_fiber_sem_take(),
nano_task_sem_take() and nano_sem_take().
This obsoletes the following APIs:
nano_fiber_sem_take_wait()
nano_fiber_sem_take_wait_timeout()
nano_task_sem_take_wait()
nano_task_sem_take_wait_timeout()
nano_sem_take_wait()
nano_sem_take_wait_timeout()
Change-Id: If7a4bce1bd8ec8d6410d04f3c16ff1922ff0910e
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Changes the nanokernel FIFO API so that the timeout parameter must be
specified when invoking nano_isr_fifo_get(), nano_fiber_fifo_get(),
nano_task_fifo_get() and nano_fifo_get().
This obsoletes the following APIs:
nano_fiber_fifo_get_wait()
nano_fiber_fifo_get_wait_timeout()
nano_task_fifo_get_wait()
nano_task_fifo_get_wait_timeout()
nano_fifo_get_wait()
nano_fifo_get_wait_timeout()
Change-Id: Icbd2909292f1ced0bad8a70a075478536a141ef2
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Change the terminology in the documentation and use board instead
of platform where applicable.
Change-Id: I812598e1948ee7df8739e5cc9029278e9e849c7f
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Change terminology and use SoC instead of platform. An SoC provides
features and default configurations available with an SoC. A board
implements the SoC and adds more features and IP block specific to the
board to extend the SoC functionality such as sensors and debugging
features.
Change-Id: I15e8d78a6d4ecd5cfb3bc25ced9ba77e5ea1122f
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Removes the 'priority' parameter from the IRQ_CONFIG macro.
This parameter was not used anymore in any architecture.
The priority is handled in the IRQ_CONNECT macro.
The documentation is updated as well.
Change-Id: I24a293c5e41bd729d5e759113e0c4a8a6a61e0dd
Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@linux.intel.com>
This routine allows the background task to sleep for a specified
number of ticks.
Change-Id: I2533005e3d9a564c2ca0de8333e224743cefb658
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Adds the following generic stack routines:
nano_stack_push()
nano_stack_stack_pop()
nano_stack_pop_wait()
Those routines are convenience wrappers for invoking the task, fiber and
ISR (if applicable) specific implementations.
Change-Id: I6e7bb2ca69bb2e3d5ed955654390746e76e4ab92
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Adds the following generic semaphore routines:
nano_sem_take()
nano_sem_take_wait()
Those routines are convenience wrappers for invoking the task, fiber and
ISR (if applicable) specific implementations.
Change-Id: I09d715d07263eb0ee526231120ba65d1e3feebce
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Adds the following generic lifo routines:
nano_lifo_put()
nano_lifo_get()
nano_lifo_get_wait()
nano_lifo_get_wait_timeout()
Those routines are convenience wrappers for invoking the task, fiber and
ISR (if applicable) specific implementations.
Change-Id: I5252e4643fe4772f1309b26c1b3e4319f5035956
Signed-off-by: Peter Mitsis <peter.mitsis@windriver.com>
Add the kernel event logger documentation where the user can find
how to use this mechanism and which event logging points are
available currently.
Change-Id: I6d86c7b79c6b4a56a9e3514b6c4933a35e0c782f
Signed-off-by: Yonattan Louise <yonattan.a.louise.mendoza@intel.com>
The tables in the Kernel Primer are changed to lists. Making it easier
to update them. Other minor changes were done to ensure consitency.
The :c: and :cpp: markup has been fixed. When the documentation for a
call exists, then it is linked.
Change-Id: I8f389a0a0ca7c5fe904c0a1fa520e2e499f1001b
Signed-off-by: Rodrigo Caballero <rodrigo.caballero.abraham@intel.com>
Instead of loading all indexed doxygen symbols in one page, we
use the defined groups to load the API documentation in the specific
sections and reduce the trash coming from doxygen to just what we
need.
Change-Id: I030e3de33e8cc26871f95cd45a50af0cae1bb942
Signed-off-by: Anas Nashif <anas.nashif@intel.com>