Go to file
Tom Burdick 3998f9f898 rtio: Shareable lock-free iodevs
By using an mpsc queue for each iodev, the iodev itself is shareable across
contexts. Since its lock free, submits may occur even from an ISR context.

Rather than a fixed size queue, and with it the possibility of running
out of pre-allocated spots, each iodev now holds a wait-free mpsc
queue head.

This changes the parameter of iodev submit to be a struct containing 4
pointers for the rtio context, the submission queue entry, and the mpsc
node for the iodevs submission queue.

This solves the problem involving busy iodevs working with real
devices. For example a busy SPI bus driver could enqueue, without locking,
a request to start once the current request is done.

The queue entries are expected to be owned and allocated by the
executor rather than the iodev. This helps simplify potential
tuning knobs to one place, the RTIO context and its executor an
application directly uses.

As the test case shows iodevs can operate effectively lock free
with the mpsc queue and a single atomic denoting the current task.

Signed-off-by: Tom Burdick <thomas.burdick@intel.com>
2023-03-03 09:18:09 +01:00
.github ci: doc-build: fix PDF build 2023-02-23 18:52:52 -05:00
arch arch: riscv enable flash config 2023-02-28 10:29:03 +01:00
boards boards: arm: sparkfun_pro_micro_rp2040: add regulator definition on dts 2023-03-02 21:14:34 +01:00
cmake cmake/compiler: Limit warning flag usage to compatible toolchains 2023-03-01 19:42:32 -05:00
doc twister: cmake: Add prefiltration based on cmake package helper script 2023-03-02 15:38:08 -05:00
drivers console: uart_console: handle runtime PM 2023-03-03 09:17:49 +01:00
dts drivers: regulator: add support for RaspberryPi Pico regulator. 2023-03-02 21:14:34 +01:00
include/zephyr rtio: Shareable lock-free iodevs 2023-03-03 09:18:09 +01:00
kernel kernel: Remove unused derived offset symbols 2023-02-22 16:01:32 +01:00
lib lib: hashmap: Move hash table files lib/hashmap 2023-03-02 12:03:07 -05:00
misc
modules lvgl: change misleading options for color depth 2023-03-01 06:36:25 -05:00
samples rtio: Shareable lock-free iodevs 2023-03-03 09:18:09 +01:00
scripts twister: cmake: Add prefiltration based on cmake package helper script 2023-03-02 15:38:08 -05:00
share sysbuild: Check for duplicate image names 2023-01-13 12:00:57 +01:00
soc intel_adsp: cmake: add_custom_command(.mod) to fix incremental build 2023-03-02 15:34:55 -05:00
submanifests
subsys rtio: Shareable lock-free iodevs 2023-03-03 09:18:09 +01:00
tests rtio: Shareable lock-free iodevs 2023-03-03 09:18:09 +01:00
.checkpatch.conf
.clang-format clang-format: Add CHECKIF to IfMacros 2023-02-27 10:47:11 -08:00
.codecov.yml yamllint: fix all yamllint comments errors 2023-01-04 01:16:45 +09:00
.editorconfig
.gitattributes
.gitignore gitignore: update the list of compliance generated files 2023-01-27 18:10:44 +09:00
.gitlint
.mailmap
.yamllint scripts: compliance: add support for YAMLLint 2023-01-04 17:29:23 +01:00
CMakeLists.txt toolchain: oneApi: Fix support and update for 2023.0.0 release 2023-02-23 14:30:03 -05:00
CODE_OF_CONDUCT.md
CODEOWNERS CODEOWNERS: Update codeowners for Infineon/Cypress sources 2023-03-01 11:44:57 +01:00
CONTRIBUTING.rst
Kconfig
Kconfig.zephyr kconfig: add esp32s3 into configuration 2023-02-27 19:41:33 +01:00
LICENSE
MAINTAINERS.yml maintainers: make myself SDHC maintainer 2023-03-01 16:35:22 -05:00
README.rst
VERSION VERSION: Bump to 3.3.99 2023-02-19 20:34:26 +09:00
version.h.in
west.yml west.yml: Reset MCUboot revision due to history overwrite 2023-03-02 18:23:38 +01:00
zephyr-env.cmd
zephyr-env.sh

.. raw:: html

   <a href="https://www.zephyrproject.org">
     <p align="center">
       <picture>
         <source media="(prefers-color-scheme: dark)" srcset="doc/_static/images/logo-readme-dark.svg">
         <source media="(prefers-color-scheme: light)" srcset="doc/_static/images/logo-readme-light.svg">
         <img src="doc/_static/images/logo-readme-light.svg">
       </picture>
     </p>
   </a>

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <a
   href="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml?query=branch%3Amain">
   <img
   src="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml/badge.svg?event=push"></a>


The Zephyr Project is a scalable real-time operating system (RTOS) supporting
multiple hardware architectures, optimized for resource constrained devices,
and built with security in mind.

The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained systems: from simple embedded environmental sensors and
LED wearables to sophisticated smart watches and IoT wireless gateways.

The Zephyr kernel supports multiple architectures, including ARM (Cortex-A,
Cortex-R, Cortex-M), Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V,
SPARC, MIPS, and a large number of `supported boards`_.

.. below included in doc/introduction/introduction.rst


Getting Started
***************

Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview,
and the documentation's `Getting Started Guide`_ to start developing.

.. start_include_here

Community Support
*****************

Community support is provided via mailing lists and Discord; see the Resources
below for details.

.. _project-resources:

Resources
*********

Here's a quick summary of resources to help you find your way around:

* **Help**: `Asking for Help Tips`_
* **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_)
* **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main
  repository; https://elixir.bootlin.com/zephyr/latest/source contains a
  searchable index
* **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases
* **Samples and example code**: see `Sample and Demo Code Examples`_
* **Mailing Lists**: users@lists.zephyrproject.org and
  devel@lists.zephyrproject.org are the main user and developer mailing lists,
  respectively. You can join the developer's list and search its archives at
  `Zephyr Development mailing list`_. The other `Zephyr mailing list
  subgroups`_ have their own archives and sign-up pages.
* **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds
  The builds@lists.zephyrproject.org mailing list archives the CI nightly build results.
* **Chat**: Real-time chat happens in Zephyr's Discord Server. Use
  this `Discord Invite`_ to register.
* **Contributing**: see the `Contribution Guide`_
* **Wiki**: `Zephyr GitHub wiki`_
* **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues
* **Security Issues**: Email vulnerabilities@zephyrproject.org to report
  security issues; also see our `Security`_ documentation. Security issues are
  tracked separately at https://zephyrprojectsec.atlassian.net.
* **Zephyr Project Website**: https://zephyrproject.org

.. _Discord Invite: https://chat.zephyrproject.org
.. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/develop/getting_started/index.html
.. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel
.. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups
.. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html
.. _Security: http://docs.zephyrproject.org/latest/security/index.html
.. _Asking for Help Tips: https://docs.zephyrproject.org/latest/develop/getting_started/index.html#asking-for-help