Go to file
Yong Cong Sin d26c712258 arch: add new interfaces to set/get the current thread of current CPU
Add the following arch-specific APIs:
- arch_curr_thread()
- arch_set_curr_thread()

which allow SMP architectures to implement a faster "get current
thread pointer" than the default provided by the kernel. The 'set'
function is required for the 'get' to work, more on that later.

When `CONFIG_ARCH_HAS_CUSTOM_CURRENT_IMPL` is selected, calls to
`_current` & `k_sched_current_thread_query()` will be redirected to
`arch_curr_thread()`, which ideally should translate into a single
instruction read, avoiding the current
"lock > read CPU > read current thread > unlock" path in SMP
architectures and thus greatly improves the read performance.

However, since the kernel relies on a copy of the "current thread"s on
every CPU for certain operations (i.e. to compare the priority of the
currently scheduled thread on another CPU to determine if IPI should be
sent), we can't eliminate the copy of "current thread" (`current`) from
the `struct _cpu` and therefore the kernel now has to invoke
`arch_set_curr_thread()` in addition to what it has been doing. This
means that it will take slightly longer (most likely one instruction
write) to change the current thread pointer on the current
CPU.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Signed-off-by: Yong Cong Sin <yongcong.sin@gmail.com>
2024-11-23 20:12:24 -05:00
.github ci: twister: capture branch when publishing results 2024-11-22 13:01:24 -06:00
arch arch: add new interfaces to set/get the current thread of current CPU 2024-11-23 20:12:24 -05:00
boards drivers: mipi-dbi: use string for mipi-mode property 2024-11-23 02:01:47 +01:00
cmake cmake: flash: update cmake to support rtt target 2024-11-21 11:01:55 +00:00
doc arch: add new interfaces to set/get the current thread of current CPU 2024-11-23 20:12:24 -05:00
drivers drivers/flash/nrf_rram: Add get_size implementation. 2024-11-23 15:30:10 +01:00
dts drivers: mipi-dbi: use string for mipi-mode property 2024-11-23 02:01:47 +01:00
include/zephyr arch: add new interfaces to set/get the current thread of current CPU 2024-11-23 20:12:24 -05:00
kernel arch: add new interfaces to set/get the current thread of current CPU 2024-11-23 20:12:24 -05:00
lib lib: libc: arcmwdt: avoid double definition of clock_t and clockid_t 2024-11-23 20:12:02 -05:00
misc
modules modules: lz4: add configurability 2024-11-22 22:46:59 +00:00
samples net: wifi: shell: add enterprise support for sap 2024-11-22 13:03:53 -06:00
scripts scripts: west_commands: Fix MissingProgram import 2024-11-23 15:28:33 +01:00
share sysbuild: Add missing option for MCUboot encryption support 2024-10-30 08:54:33 -05:00
snippets snippets: nordic-*: support custom boards 2024-11-16 15:55:27 -05:00
soc soc: nxp: consolidate nxp port pinctrl headers 2024-11-22 13:01:02 -06:00
submanifests submanifests: optional: rust: Limit build targets 2024-11-13 13:36:17 -06:00
subsys subsystem: bluetooth: Fix uninitialized variable 2024-11-23 15:29:03 +01:00
tests tests: lib: c_lib: add the proper dependency for asctime_r and ctime_r 2024-11-23 20:12:02 -05:00
.checkpatch.conf
.clang-format clang-format: add entry for SYS_SEM_LOCK() 2024-10-03 17:07:05 +01:00
.codechecker.yml tests: Add a CodeChecker config file 2024-09-12 10:04:05 +02:00
.codecov.yml
.editorconfig
.gitattributes
.gitignore scripts: ci: check_compliance: Add python lint/format check 2024-11-19 18:36:54 -05:00
.gitlint
.mailmap
.ruff-excludes.toml ruff: Remove resolved excluded linter issues 2024-11-22 17:40:37 +01:00
.ruff.toml scripts: ci: Add ruff configuration files 2024-11-19 18:36:54 -05:00
.yamllint
CMakeLists.txt cmake: use CMake variable KERNEL_VERSION_CUSTOMIZATION for default value 2024-11-05 10:53:49 -06:00
CODE_OF_CONDUCT.md
CODEOWNERS CODEOWNERS: add codeowner for SOF with Zephyr on AMD ACP_6_0. 2024-11-19 17:53:11 -05:00
CONTRIBUTING.rst
Kconfig
Kconfig.constants
Kconfig.zephyr kconfig: assume the host libc provides POSIX reentrant functions 2024-11-23 20:12:02 -05:00
LICENSE
MAINTAINERS.yml drivers: pinctrl: rename nxp,kinetis-pinctrl to nxp,port-pinctrl 2024-11-22 13:01:02 -06:00
README.rst README: drop the stray link underscores between badges 2024-09-26 15:20:39 +01:00
SDK_VERSION SDK_VERSION: Use Zephyr SDK 0.17.0 2024-10-22 19:04:37 -04:00
VERSION release: Zephyr v4.0.99 2024-11-16 13:40:34 +01:00
version.h.in
west.yml net: wifi: shell: add enterprise support for sap 2024-11-22 13:03:53 -06: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://scorecard.dev/viewer/?uri=github.com/zephyrproject-rtos/zephyr"><img src="https://api.securityscorecards.dev/projects/github.com/zephyrproject-rtos/zephyr/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:

Getting Started
---------------

  | 📖 `Zephyr Documentation`_
  | 🚀 `Getting Started Guide`_
  | 🙋🏽 `Tips when asking for help`_
  | 💻 `Code samples`_

Code and Development
--------------------

  | 🌐 `Source Code Repository`_
  | 📦 `Releases`_
  | 🤝 `Contribution Guide`_

Community and Support
---------------------

  | 💬 `Discord Server`_ for real-time community discussions
  | 📧 `User mailing list (users@lists.zephyrproject.org)`_
  | 📧 `Developer mailing list (devel@lists.zephyrproject.org)`_
  | 📬 `Other project mailing lists`_
  | 📚 `Project Wiki`_

Issue Tracking and Security
---------------------------

  | 🐛 `GitHub Issues`_
  | 🔒 `Security documentation`_
  | 🛡️ `Security Advisories Repository`_
  | ⚠️ Report security vulnerabilities at vulnerabilities@zephyrproject.org

Additional Resources
--------------------
  | 🌐 `Zephyr Project Website`_
  | 📺 `Zephyr Tech Talks`_

.. _Zephyr Project Website: https://www.zephyrproject.org
.. _Discord Server: https://chat.zephyrproject.org
.. _supported boards: https://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: https://docs.zephyrproject.org
.. _Introduction to Zephyr: https://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: https://docs.zephyrproject.org/latest/develop/getting_started/index.html
.. _Contribution Guide: https://docs.zephyrproject.org/latest/contribute/index.html
.. _Source Code Repository: https://github.com/zephyrproject-rtos/zephyr
.. _GitHub Issues: https://github.com/zephyrproject-rtos/zephyr/issues
.. _Releases: https://github.com/zephyrproject-rtos/zephyr/releases
.. _Project Wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _User mailing list (users@lists.zephyrproject.org): https://lists.zephyrproject.org/g/users
.. _Developer mailing list (devel@lists.zephyrproject.org): https://lists.zephyrproject.org/g/devel
.. _Other project mailing lists: https://lists.zephyrproject.org/g/main/subgroups
.. _Code samples: https://docs.zephyrproject.org/latest/samples/index.html
.. _Security documentation: https://docs.zephyrproject.org/latest/security/index.html
.. _Security Advisories Repository: https://github.com/zephyrproject-rtos/zephyr/security
.. _Tips when asking for help: https://docs.zephyrproject.org/latest/develop/getting_started/index.html#asking-for-help
.. _Zephyr Tech Talks: https://www.zephyrproject.org/tech-talks